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

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

Rで異常検知(2): 正規分布に従うデータからの異常検知(ホテリング理論・MT法)

さて、気紛れから始まったこのシリーズですが。今回は第2章を取り上げます。

多変量かつ非正規データの異常検知は少し後の方になるので、例のwater treatment plantのデータセットを持ち出すのは後回しにして、今回は適当に生成したデータセットを使うことにしました。


ちなみに、今回のシリーズではあまりあれこれ引用しまくると引用の範囲を超えてしまいそうな気がしたので(笑)、要点をちろっとまとめてRスクリプトを並べるだけに留めておきます。故に、皆さんご自身がお手元で試される場合には必ず井手先生のテキストをご用意下さい、ということで。

続きを読む

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

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

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


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

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


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

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


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

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

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

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

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

続きを読む