Article by: Ram Senthamarai, Aayush Seth
異常検知は鏡だらけの家で探偵をしているようなものです。何かがおかしいのは分かるけれど、見えているのが本当の問題なのか、それとも奇妙な反射にすぎないのか、いつも確信が持てません。
ええ、私たちもデータは用意しました。これがなければ、あまり実験はできませんよね。そこで、優秀なデータサイエンティストなら皆そうするように、私たちはまず、既存の業界標準データセットである UCR Time Series Classification Archive から始めました。ところがすぐに限界にぶつかりました。これはオブザーバビリティ領域をあまりカバーしていないのです。そこで私たちは独自の合成データを生成し、さらに Sentry に存在する既存のメトリクスデータも活用しました。
すべてはアルゴリズム次第
プログラマーが「何をしたか」を説明したくないときに使う言葉
広大なデータセットの中から一過性のトレンドを特定することは、異常検知における大きな課題です。これは主に、Matrix Profile の重要なハイパーパラメータである「ウィンドウサイズ」に左右されます。この扱いが難しい設定は、システム性能にとって極めて重要です。さまざまな自動チューニング手法を評価した結果、私たちは Summary Statistics Subsequence(SuSS)が最も効果的だと分かりました。SuSS は、ローカルとグローバルの要約統計量(平均、標準偏差、レンジ)を比較することで最適なウィンドウを賢く特定し、正確な異常検知に必要なコンテクストを精密に突き止めます。
次に課題となったのは、生の Matrix Profile 距離を明確で実行可能な異常スコアへ変換することでした。AnomalyScorer モジュールは、各部分系列がどれほどユニークであるかを表すこれらの距離を評価し、設定可能なしきい値と、任意で Prophet の予測を用いて、各データ点に精密な異常スコアを割り当てます。柔軟性を組み込み、統計的なしきい値(距離の 99 パーセンタイルなど)、動的なベースライン、さらには複数アルゴリズムを組み合わせるためのアンサンブルロジックまで取り入れました。その結果、各タイムスタンプに対して堅牢で解釈可能なスコアが得られ、これを下流のアラートと可視化のために、単純な「異常」または「なし」のフラグへ二値化します。このモジュール設計により、感度を微調整し、誤検知を大幅に減らし、あらゆる種類の時系列データに適応できるようになります。
アラートからの回復中に発生する断続的な挙動も、私たちが直面したもう一つの大きな課題でした。これは Matrix Profile の性質によるもので、一瞬のエラースパイクがウィンドウサイズが 50 であるという理由だけで、50 時間の期間内に複数のアラートを引き起こすことがあります。これを解決するために、私たちは賢い解決策を実装しました。多数決に基づくスムージングと、Prophet に基づく回復ロジックです。結果はどうだったかというと、私たちのシステムは真の異常の後にいつ静かになるべきかを理解し、高い確信を持てる場合にはアラートを抑制できるようになりました。これにより、アラートはより意味のあるものになり、過剰に押し寄せることがなくなります。
Original Page: Robust Time Series Monitoring: Anomaly Detection Using Matrix Profile and Prophet
IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください。




