LoginSignup
8
8

More than 5 years have passed since last update.

Elastic の時系列異常検知手法について調べたところまで書いておく

Last updated at Posted at 2017-05-06

5月4日にこんな記事が出ました。

Elastic StackにMachine Learningが登場

卒論で異常検知をやったのもあり、興味があったので、調べられるところまで調べてみました。本当は手法まで明らかにできると良かったんですが、イマイチ分からなかったので「調べたところまで」です。余裕があったら後日もう少し深掘りして追記したいです。

参考に出来そうなのは以下の 3 つでした。
- 発表スライド & 動画
- 論文
- ソースコード

発表スライド & 動画

調べたら、中の人による解説スライドがありました。

Machine Learning and Statistical Methods for Time Series Analysis

実際の発表の動画もありました。メアドを登録すると見られます。スライドだといまいちよく分からない式が口頭で説明されていました。

論文

上のスライドに載っている 2 人(Steve Dodson & Tom Veasey)の名前で調べたら、それらしい論文が 1 つだけ出てきました。

Anomaly Detection in Application Performance Monitoring Data

図を見た感じ、上のスライドの内容と似た図が結構出ているので、この論文を読めばある程度何をやっているか分かるかもしれません。

ソースコード

公式 GitHub でリポジトリを探しましたが、ありませんでした。 Forum を見ると、「オープンソースにはしてません」とのこと。

I want to know if the code for performing the detection is open source by any chance

No. It's not.

オープンソースにはなってないとはいえ、 X-pack(今回の異常検知拡張が入っているプラグイン)をインストールすれば .jar ファイルが手に入るので、デコンパイルしてそれらしい単語 (anomal, detect, probability 等) を検索してみましたが、異常検知のロジックが書いてあるところには辿りつけませんでした。 org/elasticsearch/xpack/ml 以下にありそうではあるんですが、探し方が悪かったのかもしれません。

手法について

以下蛇足です。

ざっくりと発表スライドと動画を見ただけですが、学習では normal や log-normal などの分布からどの分布が一番よくヒストグラムに当てはまりそうかモデル選択してパラメータも推定し、推論では学習させた分布で確率が低いところを異常とみなす感じでした。季節性の時系列に対しては、学習時にクラスタも学習させて、同じクラスタに属しそうな時刻のデータ点だけを使って分布に当てはめるようなことをやっているみたいです。あまり良く読んでいないので、おかしかったらコメントなり編集 PR を送っていただけると助かります。

もしこれからもっと詳しく調べるなら、発表スライドと動画を見て概要を掴んでから論文を読むのが良いと思います。ソースコードを読もうとしたのは無駄足でした。

8
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8