チラシの裏の設計書

プログラム開発、データ分析からロボット作りまでものづくり全般を思うがままに書き連ねたブログ。

異常検知手法のお勉強記事ができるまで その0

導入(本編が始まらない)

異常検知って結構ニーズあるんですね。

あんまり前書きをだらだら書いてもあれなので端折りますが、異常検知がしたいという要望をここ最近何度か見聞きしているので、来たるべき日に備えて手法周りを勉強しておく日記です。

で、いつもならだいたい形になったところでこのブログやらQiitaやらに書くんですが、今回はあえてまだ完成してない状態で試行錯誤日記を書いて見ることにします。

というのも昔、仕事で予測モデルやらアルゴリズムやらの話をお客さんに説明しているときに「予測モデルがどんなものかというのはなんとなくわかった、でもあなた方がデータの何をどう見て手法選択や組み合わせを作り上げていくのか、そっちの方が興味ある」的なことを言われたことがありまして。

確かにもしかすると手法そのものよりも試行錯誤中の状態の方がブログ記事としてのニーズもあるんじゃないかと思いまして。

なんかここまでの説明だけ見ると、いかにもデータサイエンティストやデータアナリストの人かな?という感じですが、そういう肩書きは1度もついたことのない普通のITエンジニアですので専門家でもなんでもないです、ご了承ください。

でも逆にいうとそんな普通のエンジニアにもこの手のデータサイエンス絡みの仕事が舞い込むぐらいには世の中のAIブームが続いてますなぁ。

 

あー、結局前書き長くなってしまった。

今回のテーマ

どこぞの綺麗なサンプルデータではなくて、ぐっちゃぐちゃの実データが使いたいので自分のQiitaのアクセス数でも使って見ましょう。いい感じに荒れてたと思うので。

本邦初公開。

f:id:stkdev:20180117232630p:plain

2016年から計測始めていて、見ての通り増加傾向があるというのとたまにアクセス数が跳ねることがあります。目に見えて増加している日以外にもなんとなく増えた気がするor減った気がするという日はあります。その辺りが検出できるモデルが作れればいいなぁ、という課題です。

 

異常検知はなかなか正解データというのが定義できないので評価は苦労しそうです。

今回のデータの場合、記事を投稿した日を異常な状態と評価していいかというとそうでもないですし、結局自分の感覚に添うかどうかという判断基準になってしまいそうです。

うーん、この辺りの評価もどうするんだろうなぁ。

まぁ異常と定義する状況が決められるならそれって異常検知できてるしなぁ。

 

と、手法云々に入る前に今日の日記力尽きました。次回に続きます。(たぶん)

 

あ、ちなみにこのブログのアクセス数は↑のグラフの20分の1ぐらいです。

平和でよろしい。

 

〜〜

 

Mac設定メモ再び

年始一発目は何もまとまっていないメモ記事です。

 

中古のMacbook Proをスペックと値段だけに注視して購入した結果、キーボードがUS配列でした。おお、確認してなかった。

 

US配列は別にいやではないんですが、仕事で使ってるPCや他に使っているPCがJIS配列なのでちょっと混乱することもありますが、まぁ慣れようかなと。

 

とはいえちょっと使いづらいところがあるので、キーバインドメモ。

まず装飾キーの変更。

Caps Lock -> Control

Control -> Command

Command -> Esc

買ったのがTouch BarありのタイプでEscの物理キーがなく、仕方なくCommandに割り当て。

 

日本語英語切り替えが「Shift+Ctrl+;」や「Shift+Ctrl+j」となっているのが押しにくいのでCtrl+Spaceで切り替えに変更。

 

追記訂正:デフォルトでもCtrl+Spaceで入力ソースの切り替えできます。自分のMacはいつの間にかCommand+Spaceに変更していたのでこっちがデフォルトかと勘違いしてました。

入力ソース色々入れている場合(Google日本語とか)は目的のに切り替えるのちょっと手間ですが。

 

 

続いて”:”がShift押しながらじゃないと押せないのがvim使うときに不便なので

msrx9.bitbucket.io

こちらの記事を参考に変更。

ついでにVimの設定も使いやすく設定

qiita.com

vimmerじゃないので詳しいことは知らないけど多少Vim使う、というレベルの自分にはこういうまとめはありがたい。

 

US配列の方々はキーバインドとかどう設定してるんですかねぇ。

 

 

最後にご利益がありそうな鳩みくじを引いて見たのでペタっと。

f:id:stkdev:20180107172959p:plain

今年はこの鳩にすがっていきたい。

 

もはやなんの記事かわからない。

コンペ記録メモ まとめ

参加していたコンペ2つが終了しました。

何度かチラシの裏的にメモをとっていたので、そのまとめをしておきます。

レコメンドコンペ

deepanalytics.jp

結果:10位/90人

順位的にはまぁまぁ。

1位のスコアが0.281に対して自分が0.253なので、そこそこスコアはよかった気がします。

が、しかし、問題は自分がほぼレコメンドなアルゴリズムを使わずに終わったというところ。。。

ほぼ、過去見たものを並べただけというアルゴリズム。レコメンドと言えばレコメンドな気もするが、いいのかそれで。

 

引っ越しコンペ

deepanalytics.jp

結果:6位/237人

順位的には満足。賞金には届かなかったけど。

1位とMAEでちょうど1ぐらいの差が付いているのはなかなか興味深い。

こちらはレコメンドコンペの5倍ぐらいは時間かけたが、割と辛いコンペだった。

自分のアルゴリズムとしては、機械学習系ではなく割と古典的な手法を選択。

季節変動や長期間のトレンド変化をモデル化して行き、細かい変動を回帰やRandomForestなんかでちまちまとモデル化。

いわば「現象の説明ができること」に重きを置いたやり方をしていました。

が、それ故に早々に「え、これ学習期間とテスト期間、傾向違いすぎね?」という状態に陥り、結果謎の補正パラメータαやβが登場する始末。一体何をモデル化してるんだろう状態でフィニッシュ。

 

余談:

コンペのスコア上昇にもっとも役に立ったのが、統計知識でも機械学習知識でもなく「実際に最近何度か引越しをした」経験だったため、もしこんな状態でランクインしていたら堂々と「KKD(勘・経験・度胸)で勝つコンペ」とでも題してLTするとこだったんですが、それをするには微妙なスコアかなと。

コンペ記録メモ その3

またチラシの裏なんだ。すまない。

 

このコンペの途中経過メモです。

deepanalytics.jp

徐々に順位を落としていましたが、なんとか盛り返して2位に浮上。

もうこれ以上盛り返せる気がしない。

f:id:stkdev:20171010010559p:plain

 

と、本当にメモだけになってしまうので、コンペにてスコアが上がるきっかけになったものをメモ。そのうちきれいにまとめたい。

 

・結果はちゃんと可視化しよう

 → 分析用プログラムが完成してくると「今回はちょっとパラメータ変えただけだから結果のグラフ化とか省略していいやー」となってしまうことが多いけど、ちゃんと可視化しよう。一部分で過学習起こしてて、直したら結構スコア伸びた。

 

・変数追加すりゃいいってわけでもない

 → 機械学習全盛時代なので「とにかくデータ集めてぶっこめ」となりがちですが、その変数がモデルにどう寄与してて、どこが表現しきれてないかをちゃんと見ていったほうがいい場合も。あと変数増やすことによるデメリットも。

 いやもっと自分に超絶機械学習スキルがあれば、なんでもモデルングができるのかもしれませんが。

 

・勘と経験は強い

 → ここ数年で引越ししまくってるので、いろいろ思い出した。

 

・・・次はちゃんとした日記書こう。

 

コンペ記録メモ その2

今日もチラシの裏メモ。

 

参加中コンペが、もう当分ないであろう好調具合なので記念メモ。パート2。

 

deepanalytics.jp

こちら順調に順位を下げると思いきや踏みとどまって5位キープ中。

f:id:stkdev:20170921000934p:plain

 

飛び入り参加したこちらは順調に順位を上げて9位まで到達。

deepanalytics.jp

f:id:stkdev:20170921001108p:plain

 

いや、皆さんが本気を出してくる終盤戦についていけないのは目に見えてるんですけどね。

 

ただ、両方とも試したい分析手法は実装し切れてないのでがんばる。

コンペ記録メモ

(単なるチラ裏)

 

なんか奇跡的に2位をキープしている記念。きっと今だけ。

deepanalytics.jp

 

f:id:stkdev:20170906025900p:plain

 

ちなみに投稿時に分析手法を入力するアンケートがあるんですが、

"SVM"や"k-NN"などかっこいい分析アルゴリズムが並ぶなか、おもむろに”Other”を選び「集計しただけ」と書いています。

 

万が一このまま入賞してしまうようなことがあれば、「レコメンドに協調フィルタリングなんていらんかったんやー」というレポートを提出しなくてはいけなくなるのでそれは困る。

 

Webデザインの流行を振り返る [-1からWeb作成 その1]

これまでの流れ

Webページ作ることになったよ

 

Webデザインの流行

まずは事前知識としてWebページってどういうデザインが流行ってるんだ?というのを見ていきます。

記憶を頼りにこんなデザイン流行ってたなぁというのを列挙して見ます。

 

ポータルサイト

f:id:stkdev:20170903145348p:plain

引用:Yahoo! JAPAN

名前は勝手につけてます。

Yahooに代表されるように、2列や3列、情報を細かく区切ってぎっしり表示するようなデザインです。昔はWebは文字で情報を伝える手段という色が強く、効率的に情報を整理した結果な気がします。

今でもポータルサイトではこう行ったデザインが多いですね。

 

昔はこのデザインのように行列に区切ったレイアウトをするためにテーブルレイアウトという技術があってだね(ry

 

Web2.0/RIA

2007,8年あたりでしょうか、Web2.0という言葉が流行語になったように、ユーザーとの双方向性やユーザー体験(UX)が重視された頃です。

この頃にはダイナミックに動くアニメーションやFlash技術などが用られ、Webの進化(というかブラウザの進化?)が強く現れた、、、ような気がします。

派手さと試行錯誤の時代、と言ってもいいでしょうか。

 

フラットデザイン

https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Windows_8_Start_UI.svg/250px-Windows_8_Start_UI.svg.png

引用:Modern UI - Wikipedia

2010年あたりでしょうか?デザインがガラッと変わって「のっぺり」としたデザインが流行します。

RIAの反動とも取れますし、スマートフォン時代の到来とも取れます。モバイルファーストが叫ばれた時代でもあります。レスポンシブデザインなんかもこの流れですね。

Windows8のモダンUIやAndroidのマテリアルデザインをはじめ、企業のロゴなんかもこぞってフラットになりました。

また、文字がもつデザイン性を活かすタイポグラフィーなども注目されていました。

 

現代風?

さて、それらのデザインを経て今の流行はどんなものがあるか見てみます。

シネマグラフ・ヒーローヘッダー

f:id:stkdev:20170903151150p:plain

背景で動画が流れるWebが一部で注目を浴びました。

高速な回線や動画サイトの普及もあって実現したものですね。かなりインパクとはありますが、しつこくなりすぎないように工夫は必要です。

また一見写真のように見えますがちょこっとしたアニメーションが入っており、印象的な演出を行うシネマグフという技法も流行中のようです。

 

画像はyoutube動画を背景にできるjQueryプラグインです。次回以降どこかで紹介。

http://www.seanmccambridge.com/tubular/

 

パララックスサイト 

f:id:stkdev:20170903153037p:plain

引用:Vestfrost — Producer of morozylnыh cameras Refrigeration and technics

縦に長く、スクロールによって色々なアニメーションやアクションが起こるサイトです。

フラットというかシンプルな色合いをベースにしてアニメーションで印象を加えたり、逆に写真をふんだんに使って立体感を持たせるなど様々な応用が見られます。

 

ミニマルデザイン・グリッドレイアウト・スプリットレイアウト

f:id:stkdev:20170903152612p:plain

引用:https://zerofinancial.com/

 

画面を広くシンプルに使うミニマルデザインも増えています。

逆に画面をグリッドに区切るデザイン、カード型に区切るデザイン、分割してそれぞれ別のコンテンツを置くスプリットレイアウトなども増えており、2000年以降の流れがより洗練・応用されているような印象を受けます。

 

 振り返りだけで随分長くなってしまったので一旦区切ります。

次は実際に作るサイトのデザインをどうするか、デザインの第一歩目の部分をまとめていきます。

 

 参考:

2017年デザイントレンドガイド

https://www.behance.net/gallery/47810259/2017-Design-Trends-Guide