X

Microsoftでの時系列データ異常検知手法の論文:「Time-Series Anomaly Detection Service at Microsoft」

KDD2019の論文を少しずつ読んでいってる。特にApplied Data Science Track Paperの方は、企業で実際に機械学習を運用している際の話が書かれているので面白く読める。

今回はMicrosoftの時系列異常検知の論文を読んだ。
https://arxiv.org/pdf/1906.03821.pdf

Microsoftでは定常的にモニターしている時系列データとして400万件ほどのデータがあるらしい。これだけの規模になると何らかの自動化の仕組みで異常検知をしないと追いつかない。
実際にMicrosoftではこの論文の手法を用いて、異常が検知されるとメールが飛んでくるシステムになっていて、メールのリンクから異常時の時系列プロットへと飛べるようになっている。

ただ時系列異常検知の難しい点として、以下の3点が挙げられている。

  1. 時系列データは時間とともに、データの分布が変わっていくことが多い。そしてほとんどのデータはラベルがつけられていないため、学習データとして用いる際に異常個所が分かっていない
  2. 時系列データはデータの種類によってパターンが色々とあるため、汎用的なモデルを作るのが難しい
  3. データが数秒、数分ごとに入ってくるため、効率的に高速な処理を行う必要がある

この論文ではSpectral Residualモデルという画像のSaliencyを表示する手法を、時系列データに対して適用し、その後1次元CNNを用いて異常検知する方法を提案している。
時系列データの異常が発生した箇所というのは、結局はデータの中で目立つ箇所であるので、Saliencyで着目すべき箇所を検出するとそこが異常個所だったりする。

手法の細かい点では、いくつかの工夫がなされている。例えば、Spectral Residual手法は、予測する点がウィンドウの中心位置にあった方が精度がよいので、予測する際には後ろ何点かを前のいくつかの点から予測してからSpectral Residualを算出する工夫が行われている。

実験として、実際の時系列データに適当に異常値を注入してそこを予測できるかを、既存の時系列異常検知アルゴリズムと比較している。今回のSR-CNN手法は、他のアルゴリズムに比べて精度や処理速度を考慮するとよい結果が出ている。
また、Spectral Residualを用いることで、教師なし学習として異常検知を行う手法が挙げられているが、もしデータセットに異常のラベルがついている場合は、Spectral Residualを一つの特徴量とみなして、後段の処理をCNNからDNNに置き換えるとさらに良い精度が出るとも報告されている。

実際にMicrosoftで時系列異常検知に用いられているモデルであるという点で信頼がおける手法だと考えられる。Spectral Residualを計算して時系列データから顕著な点を前処理的に用いるという考え方は面白かった。

Hiro: