渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

Rで異常検知(1): これまで自分がやってきたことのおさらい

ぶっちゃけ今更感がなくもないんですが、実はこれまで自分ではほとんど異常検知・変化検知をゴリゴリやったことがなかったなぁと思ったのでした。きっかけは、時々色々な手法のテストに使っているこのUCI機械学習リポジトリのデータセット

これは説明にもあるように、とある都市部の下水処理場の様々なセンサからのインプットを合わせて日次でまとめたデータセットです。この手のプラントデータセットにありがちな課題がまさにその異常検知で、要は何か不具合があった日付を事後で良いので検出したいというお話です。


異常検知自体は、以前このブログでさらっとだけ取り上げたことがあります。それは{AnomalyDetection}パッケージの紹介記事。

この時は{AnomalyDetection}が依拠するgeneralized ESD testの話をちょっと紹介しただけで、根底にある理論とかその他の類似手法などについては特に触れずじまいでした。


また、もっと以前には{MSwM}パッケージを用いてマルコフ状態転換モデルを異常検知に使う話題を取り上げたこともあります。

これはこれでうまくいっているように見えますが、これだと単変量時系列にしか使えないなぁという印象を持ったのも事実です。そう、これらの方法そのままでは多変量の異常検知はできないというわけです。それで若干消化不良感を覚えたままそれきり放っておいたのでした。


なのですが、上記のWater Treatment Plant Datasetをたまたま何度か触るようになって「これではいかん」と思った次第で、買ってきたのがこちらの書籍。

入門 機械学習による異常検知―Rによる実践ガイド

入門 機械学習による異常検知―Rによる実践ガイド

機械学習界隈の皆さんならご存知の、@さんの手による異常検知本です*1。次回からはこちらの書籍を踏まえて勉強していくとして、今回は「今現在の自分はどうやって異常検知をやっているのか」という現状把握のまとめを書いておこうと思います。

*1:色々検討しましたがMLP赤本の方は選びませんでした

続きを読む

実務の現場においてモデリング(統計学的・機械学習的問わず)を行う上での注意点を挙げてみる

気が付いたら僕がデータ分析業界に身を置くようになってそろそろ5年近くになるんですね*1。この5年間の間に色々勉強したり業界内で見聞してきた経験をもとに、「実務の現場においてモデリングを行う上での注意点」についてだらだらと書いてみようと思います。


と言うのも、色々な現場で様々なモデリング統計学的にせよ機械学習的にせよ)が行われていることが伝わってくるようになった一方で、ともすれば「え?こんな基礎的なポイントも守ってないの?」みたいなとんでもないモデリングがまかり通る現場があると愚痴る声を業界内で聞くことが少なくないので。自戒の意も込めて重要なポイントを備忘録としてブログ記事にまとめておくのも有益かなと思った次第です。


この記事では手法選択(線形・一般化線形・ベイズMCMC・識別関数・識別モデル・生成モデル・樹木モデル・Deep Learning etc.)の話題は割愛しました。一般に、モデリングの多くは手法選択以前のメタな問題設定の部分でそのクオリティが決まってしまいがちなので、そちらをこの記事では重視しています。ただし、時系列データだけはそうもいかないため若干手法ドリヴンな問題提起をしています。


あ、いつも通り炎上ラーニング上等(笑)で書いてますので、僕よりずっともっと詳しい方々*2からのマサカリを心よりお待ちしております。多分どこかしら間違っていると思いますので、皆様の集合知を頼りにより良くより正しい内容に改めていければ有難いです。

*1:つまり5歳近く歳取ったわけで。。。

*2:特に経済学クラスタの方々

続きを読む