6 ポイント 投稿者 GN⁺ 2025-01-07 | 1件のコメント | WhatsAppで共有
  • ストリーミング・IoTデータの増加に伴い、時系列異常検知はサイバーセキュリティ、金融市場、法執行、医療などの領域で正常と異常を見分ける中核的な分析課題となっている
  • 統計中心の従来の異常検知と近年の機械学習アプローチが混在する中で、時系列の時間順序と構造を反映した分類体系が必要になっている
  • 異常は単一値だけでなく部分シーケンスにも現れ、点異常・文脈異常・集団異常は周辺パターンや時間的文脈まで合わせて見なければ区別できない
  • ほとんどの手法は 前処理 → 検知モデル → スコアリング → 後処理 のパイプラインに従い、スライディングウィンドウで時系列を行列化した後に異常スコアを計算する
  • このレビューは手法を 距離ベース・密度ベース・予測ベース に整理し、異なるデータセット・ベースライン・評価指標を使う研究コミュニティ間の比較断絶を減らすことを目指している

時系列異常検知が難しい理由

  • 時系列は時間に沿って記録された実数値の順序列であり、順序が時間ではなく角度・質量・位置のような次元に依存する場合は、データシリーズやデータシーケンスという表現も使われる
  • 天文学、生物学、経済学、エネルギー科学、工学、環境科学、医学、神経科学、社会科学など、多くの分野で時系列分析が必要とされる
  • データ生成過程の複雑さ、測定システムの不完全さ、悪意ある行為者との相互作用は、収集データに異常現象を生じさせうる
  • IoTアプリケーションの拡大によって生成される時系列が増えるにつれ、時系列コレクション内で見つけるべき異常も増加すると予想される
  • 異常とは、過去の観測データに基づく正常性や期待される挙動に合致しないデータポイント、またはポイント群を指す
    • outlier, novelty, exception, peculiarity, aberration, deviant, discord といった用語も使われる
    • アプリケーションによって異常は、除去・修正すべきノイズである場合もあれば、障害や挙動変化のように後続分析の対象となる関心イベントである場合もある

異常の定義と種類

  • 異常について、単一で普遍的な厳密定義は存在しない
  • 伝統的には、異常とは分布中の大多数のサンプルから大きく外れた観測値であり、他のデータとは異なるメカニズムで生成された可能性を疑わせる値である
  • 専門家がシステムの動作を正確に理解していれば、正常状態の分布とパラメータを設定し、平均から 3 標準偏差以上離れたポイントを異常としてマークできる
  • 実際の問題では、データ生成分布や複数の生成要因を正確に知ることは難しく、実務上の分布も複雑なため、専門家が定義した平均からの距離だけで異常を識別するのは困難である
  • 計算能力の向上により、生データから分布を推定し、専門知識なしにアルゴリズムが異常を検知するアプローチが可能になった
    • こうした手法はデータセットの品質と文脈に強く依存する
  • 3つの時系列異常

    • 点異常(point anomaly): 他のデータから明確に外れた単一のデータポイント
    • 文脈異常(contextual anomaly): 全体分布の期待範囲内にあるものの、特定のウィンドウのような文脈では期待分布から外れるデータポイント
    • 集団異常(collective anomaly): 典型的に観測されるパターンを繰り返さないポイント列
    • 点異常と文脈異常は point-based anomaly、集団異常は sequence-based anomaly に分類される
    • 全シーケンス検知は、時系列全体そのものを1つの評価対象とする部分シーケンス異常検知の一例であり、正常センサー群の中から異常センサーを見つけるセンサー精査の環境で使われる

データ次元と学習設定

  • 単変量時系列は、1つの次元における実数値が順番に並んだ形であり、異常は単一特徴を基準に検知される
  • 多変量時系列は、同じ長さの複数の順序列の集合、あるいは実数ベクトルの順序列である
    • 多変量では、個々の特徴値だけを見ると正常に見えても、全体のシーケンスは異常であることがある
    • 部分シーケンスは、単変量ではベクトル、多変量では各行が1次元の部分シーケンスである行列として表現できる
  • 教師なし・半教師あり・教師あり検知

    • 教師なし方式は、どの異常を検知すべきかという専門家情報がない場合に用いられる
    • 既知の異常の大規模コレクションなしで動作できる
    • 未知の異常挙動を自動的に検知できる
    • システム状態監視や過去時系列マイニングに利用できる
    • 半教師あり方式は、専門家が提供した正常シーケンスの例に基づいて異常を検知する
    • このカテゴリを教師なし方式と呼ぶ文献も多い
    • 正常例に関する事前知識が必要なため、完全な教師なし方式と同じカテゴリにまとめにくいという区別がある
    • 教師あり方式は、専門家が検知すべきパターンを正確に把握しており、ラベル付きの異常時系列コレクションが存在する場合に該当する
    • 異常部分シーケンス以前の部分シーケンスを用いて、異常な部分シーケンスを予測できることがある
    • こうした先行部分シーケンスは異常前兆(precursor)と呼ばれることがある

共通の検知パイプライン

  • 時系列異常検知アルゴリズムは概ね 前処理 → 検知手法 → スコアリング → 後処理 という流れを持つ
  • 前処理段階では、時系列をスライディングウィンドウ断片の行からなる行列に変換するウィンドウベースのアプローチが共通して現れる
    • 追加の前処理は、統計特徴抽出、機械学習モデル適合、ニューラルネットワーク構築などによって異なる
  • 検知段階では、処理済みデータセット上で距離計算、分類超平面の適合、生成された部分シーケンスと元の部分シーケンスの比較といった方法を適用する
  • スコアリング段階では、検知結果を各部分シーケンスの異常性を表す実数の異常スコアに変換する
    • このスコアは個々のポイントのスコアを推定するために使われる
    • 結果のスコア時系列は元の時系列と同じ長さを持つ
  • 後処理段階では、異常スコア時系列から異常ポイントや区間を抽出する
    • 通常は閾値を定め、スコアが閾値を超えるポイントを異常としてマークする

プロセス中心の分類体系

  • 時系列異常検知手法は大きく 距離ベース密度ベース予測ベース に分けられる
  • 第2レベルの分類は相互排他的ではない
    • あるモデルが時系列データを圧縮しつつ、discordベースの識別戦略を併用することもありうる
  • 距離ベース手法

    • 距離ベース手法は、生の時系列の数値を距離尺度で比較して異常を検知する
    • 一般に、同じ長さの2つのシーケンス間の距離 d(A, B) を定義し、2つのシーケンスが同一なら距離は 0 になる
    • 広く使われる距離は Euclidean distance と Z-normalized Euclidean distance である
    • Dynamic Time Warping(DTW) は、アラインメント不一致の問題を扱うためによく用いられる
    • 主な下位カテゴリは近接ベース、クラスタリングベース、discordベースである
      • 近接ベース(proximity-based): 部分シーケンスが近傍の隣接点からどれだけ孤立しているかを基準に異常かどうかを判断する
      • クラスタリングベース(clustering-based): 部分シーケンスが学習済みクラスタに属さない度合い、クラスタ距離、クラスタ容量などを異常スコア計算に用いることができる
      • discordベース(discord-based): 最も近い隣接系列との距離が、全部分シーケンス中で最大となる部分シーケンスである discord を効率的に見つける
  • 密度ベース手法

    • 密度ベース手法は、時系列を単なる数値列としてだけでなく、ポイントや部分シーケンス空間の密度を測定できる表現の上で処理する
    • 表現はグラフ、木、ヒストグラム、文法導出規則など多様である
    • 主な下位カテゴリは分布ベース、グラフベース、木ベース、エンコーディングベースである
      • 分布ベース(distribution-based): ポイントや部分シーケンスの統計特性から分布を作り、正常部分シーケンス特性の分布を通じて関連する統計モデルを復元し、異常性を推論する
      • グラフベース(graph-based): 時系列と部分シーケンスをグラフとして表現し、ノード・エッジ重みやノード次数といったグラフ特性で異常を検知する
      • 木ベース(tree-based): 木によってポイントや部分シーケンスを分割し、木の深さのような統計量や特性で異常を判断する
      • エンコーディングベース(encoding-based): 時系列を文脈自由な離散記号や状態シーケンスとして解釈し、抽出された記号の文法規則などを用いて異常を検知する
  • 予測ベース手法

    • 予測ベース手法は、学習時系列または部分シーケンスに基づいて期待される正常挙動を予測し、異常を検知する
    • 正常データは予測しやすく、異常は予想外であるため予測誤差が大きいという仮定に依存する
    • この仮定は、学習セットに異常がないか、あってもごく少ない場合に有効である
    • 予測ベース手法は通常、半教師あり設定により適している
    • 主な下位カテゴリは予測ベースと再構成ベースである
      • 予測ベース(forecasting-based): 特定時点以前のポイントや部分シーケンスを入力として受け取り、次の値や部分シーケンスを予測し、実測値と予測値の差を異常スコアとして使う
      • 再構成ベース(reconstruction-based): 入力時系列または部分シーケンスをより小さな潜在空間に圧縮した後で再構成し、入力と再構成結果の差を異常スコアとして使う

評価と研究比較の断絶

  • 複数の研究領域は、それぞれ異なるデータセット、ベースライン、評価尺度を用いており、大部分が分断されている
  • 新しいアルゴリズムは代表性に欠ける一部のアプローチとしか比較されないことが多く、特定のユースケースで最先端のアプローチを見つけにくい
  • プロセス中心の分類体系は、複数の検知手法を類似アプローチのアルゴリズム群として束ねて比較できるようにする
  • 文献統計は、時間に伴うアプローチの種類や研究領域のトレンドを示す
  • 共通の評価基盤として使える既存ベンチマークと、時系列異常検知の評価指標の長所・短所・限界も併せて整理されている

1件のコメント

 
GN⁺ 2025-01-07
Hacker News の意見
  • UCR Matrix Profileも知っておく価値がある
    Matrix Profileは時系列分析で過小評価されているツールの一つで、非常に効率的。従来手法のようにウィンドウサイズやしきい値を大きく調整しなくても、モチーフや外れ値を見つけるのに向いており、製造業のセンサーデータ、心電図解析、地震検知など、さまざまな分野でも堅牢に動作する
    https://www.cs.ucr.edu/~eamonn/MatrixProfile.html
    • ウィンドウサイズを調整しなくてよいというのは正しくない。Matrix Profileはウィンドウサイズに非常に大きく依存する
    • MPは最良の単変量手法の一つだが、実際に記事の中でも言及されている
    • 共有された内容より宣伝文句のほうが興味深いくらいだが、ウェブサイトはかなり見づらい
      同じ研究チームが作ったこちらのほうが、より良い紹介資料になっている
      https://matrixprofile.org/
    • 6.2.1節で扱われている
  • Prometheusのoffset関数で、過去数週間の平均をrecording ruleとして作って使っている
    システム利用量には週単位の季節性が強く出るため、ある指標について1週間前・2週間前・3週間前・4週間前の値を平均し、現在値と比較する。こうすると昼夜、平日/週末に合わせてアラートのしきい値を動的に設定でき、曜日や時間帯の平均と比較できる
    GitLab側にこの方式をより詳しく説明した記事がある
    https://about.gitlab.com/blog/2019/07/23/anomaly-detection-u...
    祝日が入ると少し複雑になるが、Prometheusで実際にプログラミングできる
    https://promcon.io/2019-munich/slides/improved-alerting-with...
    • Grafanaのチャートがあまり詰め込みすぎでなければ、ほぼ必ず7日 offset値を線として追加している。何が正常で何がそうでないかを判断するのに非常に役立つ
    • GitLabにはこれもある: https://gitlab.com/gitlab-com/gl-infra/tamland
      この分野に詳しいわけではないが、予測と異常検知はかなり関連しているように見える。間違っているかもしれない
  • この記事は直近1年ほどの取り組みを反映できていない
    例えば元同僚たちが作ったGranite TSのような時系列ベースのモデルは、実験したところかなりうまく動作した
    異常検知モデルを考えるうえでの気づきは、結局は次のNステップを予測し、実測値が期待値と「十分に違うか」を見ることだという点だった。単一信号ではホワイトボードに描きやすいが、多変量でも動くという点がかなり興味深い
    [1] https://huggingface.co/ibm-granite/granite-timeseries-ttm-r1
    • 似たような気づきは、外れ値検知のためのIsolation Forestを読んだときにあった。予測が平均と違えば、何かがずれているということだ
      [0] https://scikit-learn.org/stable/modules/generated/sklearn.en...
    • その気づきの前は、どう考えていたのか気になる :D
    • 時系列でzero-shotモデルが必要になる文脈を共有してもらえるか気になる。モデルをフィットさせる過去データがまったくない状況を、まだ見たことがない
  • 初期段階のwater tech分野には、水の流れを監視するIoTデバイスがある
    これらのデバイスは漏水を検知し、設備単位の水使用量を推定できる。漏水検知は結局、時系列の外れ値を識別する作業であり、論文で言及されている分布ベースの異常検知がここに関係する。興味深いことに、住宅空間では温暖/寒冷の季節間で配管温度が変化するため、複数の分布が必要になる可能性がある
  • 最近の性能追跡プロジェクトで、自分で異常検知を作ってみようとしたが、基本的すぎたり過度に複雑だったりしない既製のオープンソース/有料ソリューションがほとんどなくて驚いた。この領域にはまだ開拓の余地が大きい
    • PrometheusとGrafanaスタックで異常検知を行う資料はかなり多い: https://grafana.com/blog/2024/10/03/how-to-use-prometheus-to.... ただし、これが言っていた「過度に複雑な」ケースかもしれない
    • 既製ソリューションがない理由は、この問題がまだ未解決問題だからだ。一般的に有用なアプローチがない
    • まだこれを実験中: https://grafana.com/blog/2024/10/03/how-to-use-prometheus-to... GitHubリポジトリもある
      今のところ、ひどく悪いわけではないが、かなり大きな欠陥がある
    • インターンシップのとき、マシン/サーバーが性能低下や予期しないダウンタイムに入るタイミングを追跡するために時系列異常検知が必要だった
      MicrosoftのC#ライブラリでできると思っていたが、本当にひどかった。誰かがまともなライブラリを実装する時間と意欲を持っているといいのだが
    • 同意する。うちの会社も結局、自社システムを作った
      この領域は、高度なレポート機能と通知メカニズムを備えた設定可能なSaaSやオープンソースツールが出るのにちょうどよい。Datadogにも悪くない製品があるが、かなり高い
  • 私たちのスタートアップは産業用機械の時系列異常検知を扱っている

特に、基本的にオフラインで動作するように作っています。AIを機器に統合し、データをサードパーティのサーバーはもちろん、当社のサーバーにも送らないようにしています。オンライン接続ができないために取り逃がしている顧客機会が多いと考えているからです。産業用機械のモニタリングソリューションを探している、あるいはセキュリティに敏感な産業用ソフトウェアに関心があるなら、ぜひ話してみたいです。データヒストリアンも開発中です: www.sentineldevices.com

  • この分野には思い入れがあります。ほぼ10年前、修士課程でこれに近いテーマである オンライン障害予測 を扱いました: https://estudogeral.uc.pt/handle/10316/99218
    例外が発生する前に検知して対応するシステムを作りました。たとえば、データベースの枯渇につながる前にリクエスト速度を先回りして落とす、といった対応が、単に例外を発生させるより実際に望ましいことを期待していました。
    当時、この分野には本当にやるべきことが多いと感じていて、再び取り組めなかったことを少し残念に思っています
  • データ生成プロセスの複雑さ、計測システムの不完全さ、悪意ある行為者との相互作用が組み合わさって異常現象が生じる、という点が核心であり、多くの場合扱いが難しいです。
    もう一つの重要な問題は、何が 異常 で、何がそうでないのかを厳密かつ正確に定義することです
  • 異常検知 は、ほぼあらゆる産業に付加価値をもたらせます。
    中核製品ではないとしても、運用最適化にはたいてい役立ちます。製造ではコンピュータビジョンで組立ライン上の不良品を選別できますし、運用では加速度計/温度センサーと周波数分析で故障の兆候を検知し、予知保全につなげられます。営業では、数値やサポート問い合わせの時系列分析によって、キャッシュフローや顧客満足度などの上昇/低下のシグナルを把握できます
  • Eamonn Keogh を調べてみるとよいです。時系列異常検知の分野で興味深い研究を数多く行っています