Blog
比戸です。
先週Jubatusの最新0.4.0がリリースされましたが、外れ値検知機能の追加が目玉の一つとなっています(jubaanomaly)。昨年PFIへ入社して初めて手がけた仕事が公開されたということで感慨ひとしおですが、便乗してあまり語られることのない異常検知の世界について書きたいと思います。以下の資料は昨年のFIT2012で使ったものです。
異常検知とは簡単にいえば、「他に比べて変なデータを見つけ出す」タスクです。お正月にテレビで繰り返し流れた、おすぎとピーコのCM(*1)がわかりやすいイメージですね。機械学習の枠組みで言えば”教師無し学習”に属します。分類や回帰、クラスタリングなど応用も多く人気も研究熱も高いタスクに比べると、マイナーです。SVMとか、Random Forestとか、Boostingとか、最近だとDeep Neural Networkとか、有名な必殺技アルゴリズムも存在しません。しかしこれから実用面での重要度は増していくと思っています(理由は後述)。「データあるところに異常検知あり」、です。与えられたデータの性質を調べるときは、まず「よくあるパターンを見る」のが基本ですが、反対に「珍しいパターンを見つける」のも意味あることです。不正行動検知とか、故障予兆検知とか、新トピック発見とか、応用によってはそちらがメインだったりして、それらが全て異常検知に関連します。
このPPT資料は昨年9月にFIT2012というコンピュータサイエンス系の大きな学会の企画セッション「ビジネスで生きる機械学習技術」で講演させてもらったときのものです。機械学習をほぼ知らない人を聴衆として仮定したので、文字と図の説明がほとんどです。前半は異常検知が包含する概念や適用先を書いています。外れ値検知、変化点検出、異常状態検出などの場合分けはこの分野で有名な山西先生の本「データマイニングによる異常検知」に完全に沿ったものなので、詳細はぜひそちらをご覧頂ければと思います。
中盤は、よく用いられる異常検知アプローチ、特に機械学習ベースであるOne-class SVMやLOFなどについて紹介しています。1変数からの異常検知ならば統計学の分野で古くから研究されてきた手法が強力ですが、変数が数百になってもロバストに動作することが機械学習ベース手法の利点です。Rや機械学習・データマイニングツールに載っている異常検知機能サーベイの結果も載せています。はっきり言って、あまり異常検知にフォーカスしているものはありません。
講演趣旨としてはビジネス応用例がメインでしたが、前職時代に関わった仕事を詳細に書くわけにもいかずスライド枚数は少ないです。しかしメッセージとしては、機械学習の応用が広がっていく中で、社会インフラや機械系にセンサを付けてデータを集められる環境が増えていること、そこでは故障検知・故障予兆検知などがメインの応用として出現していることがあります。
さらに、最後の5-6スライドがこの資料で最も伝えたかったことなのですが、ビッグデータ活用が叫ばれているいま、きっと近いうちに異常検知が分類や回帰などと並んで機械学習のビジネス応用の花形になる、と予測しています。理由はP36にあるとおりですが、統数研の丸山副所長がよくおっしゃる「ビッグデータ周辺の問題の多くはサンプリングとExcelで解ける」という話が、異常検知タスクではあまり成り立たないことが大きいです。
例えば、日本中を今走っている数百万台のクルマのセンサデータが1秒に1回のペースでリアルタイムに集まってくる状況を考えます。そこで全体でのCO2排出量を毎分推定するという応用を考えましょう。具体的には走行状況などから回帰を使って1分間のガソリン消費量を推定し、そこから各車両のCO2排出量を推定します。この場合、ガソリン消費回帰モデルは車種や燃費などを考えても複雑性やバリエーションは少ないでしょうから、例えば1000台に1台だけランダムに選んでモニタリング対象としてCO2消費量を推定すれば、その1000倍がおおよそ全体の推定量として使えることがわかると思います。あるいは、一分間の間ではあまり消費量の変動はないと仮定すれば、センサによる状態測定の間隔を30秒に1回にしても精度はそんなに落ちないと考えることもできます。ところが同じデータを使って故障の予兆のある個別車両の検出を行う場合、ある1分間で故障に陥るのはわずか数台でしょうから、見逃しを防ごうとするとモニタリング対象の台数を減らしたり、センサの測定間隔を引き伸ばしたりできないことがわかります。ビッグデータを支える技術・インフラが真に求められるのは必然的にこのようなケースが多くなるだろう、ということです。
と、さんざん異常検知の重要性を説いた上でJubatusの宣伝に戻るのですが、現在はLOFによる外れ値検知をサポートしています。オリジナルのLOF自体は普通のバッチアルゴリズムですので、それをJubatus用にオンライン化かつ分散化するロジックを考案し、しかもベースとなる近傍探索にはユークリッド距離用のLocality Sensitive Hashingが用いられて…という様々な工夫が結集されています。そのあたりの詳細はまたJubatusブログの方で書きたいと思いますので、お待ちください。
*1: 株式会社イシダ様テレビCM「おすぎとピーコ 異物検出編」