Skip to content

異常検知(Anomaly Detection, アノマリー検知)とは

異常検知とは、データセットの正常な動作から逸脱したデータポイント、イベント、観測値を識別する機械学習のプロセスです。そして、時系列データから異常を検出することは、産業用アプリケーションにとって重要な課題となっています。

2021年4月に行われた【IDC調査】(https://www.idc.com/getdoc.jsp?containerId=US47601921)によると、製造業に続いて、金融、運輸、通信、ユーティリティーの各業界が、予測的および規定的なメンテナンスのために高度な機械学習を使用する最前線にいるとのことです。同調査では、センサーによるデータ取得のコスト削減や、デバイス間の接続性の向上により、機械学習を活用した異常検知がますます主流になるとしています。

効果的な予知保全プログラムを実施するためには、異常な行動を検知して、ダウンタイムの損失を回避するためのアクションを起こせることが重要です。しかし、一般的に故障は比較的まれな事象であるため、予測モデルを構築するためのタグ付きデータが不足していることが多く、故障発生前に異常を特定することは困難です。

異常検知の種類

異常検知のユースケースは、利用可能なデータの種類に応じて、大まかに3つのタイプに分類されます。スーパーバイズド異常検知は、過去の障害や異常を表すラベル付きデータを用いてモデルを学習することを目的としています。一方、「教師なし」の場合は、ラベル付きのデータを使用しません。3つ目の「半教師付き」異常検知では、少量のラベル付きデータを用いて、正常なデータ(または異常のないデータ)で学習したモデルの中から、最も性能の高いモデルを検証・選択します。ラベル付きの故障データが少ないことを考えると、最も適用可能なユースケースは、教師なしおよび半教師付きの異常検知である。

時系列データの異常検知は、ノイズと異常パターンの分離が複雑であるため、独自の課題があります。データが定常状態にあるかどうかを知り、トレンドや季節性を考慮することは、時系列分析を行う上で非常に重要です。また、異常現象には、グローバルな異常現象(「点の異常現象」とも呼ばれる)と、文脈上の異常現象(「文脈上の異常現象」とも呼ばれる)とがあります。

点の異常
図1.ポイントアノマリーについて

文脈の異常
* 図2.コンテクスト異常

異常検知のプロセス

あるデータセットに最適な異常検知モデルを見つける作業は、データの準備、パラメータの最適化、検証、モデルの選択など、複数のステップを必要とする。これらの各ステップは、複数のサブステップを持つことができます。例えば、データの準備には、スケーリング、次元削減、および特徴エンジニアリングが含まれる。スケーリングは、min-max-scaling、robust-scaling、standard-scalingなど、さまざまな手法を用いて行うことができる。データセットに対して実行可能なすべてのステップは、有向非環状グラフ(DAG)で表現できる。DAGでは、各ステージやステップに、そのレベルで使用できる複数のオプションが含まれています。例えば、エンド・ツー・エンドのパイプラインを構築するには、各段階の1つのブロックまたはノードを、後続の段階のブロックまたはノードと、順に組み合わせます。したがって、エンド・ツー・エンドのパイプラインは、1つの変換器と1つの推定器で構成されることになります。これは、列車データにモデルを当てはめる前に、アルゴリズムの内部で行われるので、ユーザーが提供する必要はありません。DAGは、モデルの並列実行と高速実行を支援する実装戦略であり、最高のパフォーマンスを発揮する結果を生み出します。

変換器の数がt個、推定器の数がe個の場合、以下のDAGから構築できるパイプラインの組み合わせはt×e通りとなります。探索された各パスは他のパスとは独立しており、最適化された実行時間ですべてのパスを並行して探索することができます。パラメータチューニングは、DAGによって作成された各パイプラインの複数の構成を生成して、各パイプラインに対して行われます。すべてのパイプライン構成が実行された後、パフォーマンス指標に基づいてランク付けされ、上位のパイプラインはトレーニングデータ全体への再適合に戻され、予測が進められます。

Example Directed Acyclic Graph
図3.有向性非環状グラフの例

使い方としては,各異常検知アルゴリズムに対して,ユーザがオプションでanomaly_estimatorというパラメータを指定します。例えば,DEEPAD異常検知の場合,anomaly_estimatorは空のままにしておきます(デフォルト値のまま).これにより、データの大きさや特徴数などを考慮して作成された、グラフの各レベルに複数のノードを持つDAGが動的に初期化されます。これにより、特徴抽出器と推定器の多くのパスや組み合わせを探索して、予測に使用する最適な異常パイプラインを生成することができます。

アノマリーラベルの生成

最終ステップの推定器は、データポイントの異常の深刻さを示す異常スコアを生成します。このスコアは、値が低いほど異常がないことを示し、値が高いほど強度の高い異常があることを示します。また、異常ラベルの予測値も提供しています。これは、ユーザーが提供した、あるいは派生した閾値に基づいて、各データポイントが異常と解釈できるかどうかをデータにラベル付けするものです。このしきい値は、静的しきい値(すべてのデータポイントに対する単一のしきい値)または動的しきい値(近傍のデータポイントの性質または文脈に適応する移動しきい値)とすることができ、文脈的な異常を判断するのに有効です。

図1では、青線が生データ、オレンジ線が異常スコア、緑線が異常閾値で、データ全体の異常スコアに使用される静的な値であることがわかります。異常スコアがしきい値を超えた領域は、点状の異常となります。同様に、図2では、青線が生データ、オレンジ線がデータの分布に乱れがある領域で上昇しているように見える異常スコア、緑線が動的な異常閾値で、異常スコアと同様に各ポイントで生成され、文脈情報やローカル情報に基づいて、局所的な異常や文脈的な異常を見つけることができるようになっています。

異常検知のユースケース

異常検知は、以下のような様々な理由で行われます。

  • 異常値検出:学習データ内の正常な動作範囲やシステムの状態から大きく範囲が変化したデータや外れ値を検出するために使用されます。この場合、完全なデータを分析して、範囲外の外れ値を見つけます。

  • ノベルティ検出*は、異常検出の一種であり、トレーニングデータは、異常が発生しない正常な状態で動作しているセンサーや値で構成されており、テストデータやストリームからの新しいデータに新規の動作が含まれているかどうかを識別することを目的としているため、それを異常またはノベルティと呼ぶ。

  • データが複数の状態で動作している場合(例えば、センサーがONまたはOFFの状態にある場合)、イベントが発生したときにセンサーが異なる動作をするかどうかを特定することを目的としています。

  • データのクリーニングは、データの分布における異常値や急激な変化を確実に除去することで行われます。

まとめ

本記事では、時系列データの異常検知の概要、異常検知に関連する課題、データセットに最適な異常モデルを特定するのに役立つテクニックを紹介しました。

高度な読み物