著者:Rosaria Silipo (KNIME)
原文:https://www.knime.com/blog/anomaly-detection-techniques-defining-normal
本記事は、後編です。異常検知の基本的な考え方については前編:IoT異常検知入門をご覧ください。
異常検知の課題に対する解決策は、長年にわたって数多く提案されてきました。
様々な手法に取り組む前に、大前提を再認識しましょう。それは、「異常が発生していない状態(正常)のトレーニングセットしか手元にない」という状況で、いかにして疑わしい事象を特定するか、という点です。
ここでは、「正常」なイベントのみで構成されるデータセットを用いた3つの主要なアプローチを解説します。
最も基本的かつ高速な手法です。トレーニングセットで計算された統計的分布の範囲外にあるものはすべて「異常」と見なされます。
代表的な例は「管理図(Control Chart)」です。
各特徴量の平均および標準偏差を計算し、「平均値 ± k × 標準偏差(σ)」をしきい値として定義します。係数「k」は通常1.5~3.0の間で設定します。
運用時にこのしきい値を超えたデータポイントは、異常イベントの候補となります。
この手法は実装が簡単で計算コストも低いですが、単純な閾値監視に近いモデルであるため、データの複雑な相関関係に潜む「微妙な異常」は見逃してしまう可能性があります。
異常データ(ラベル)が全くない場合、「クラスタリング」が有効な選択肢となります。
このアルゴリズムは、正常なトレーニングデータからいくつかの「クラスター(データの塊)」を作成します。
運用時に、新しいデータポイントと既存クラスター間の距離が計算され、その距離が所定のしきい値を超える場合、そのデータは「どのグループにも属さない異質なもの=異常」と判断されます。
距離測定や集約ルールに応じて、k-means法やDBSCANなど様々なアルゴリズムが利用可能です。
ただし、一般的なクラスタリングは時間的な順序を考慮しないため、時系列データの変化(トレンドや周期性)を捉えるには工夫が必要です。
通常、「教師あり学習」には「正常」と「異常」両方のラベルが必要ですが、工夫次第で異常検知にも適用可能です。
特に、正常データのみで学習を行い、運用時に「予測とのズレ」を評価するアプローチが主流です。
ディープラーニングを用いた強力な手法です。
オートエンコーダは、「入力されたデータを一度圧縮し、出力層で元のデータを再現(復元)する」ようにトレーニングされます。
この「再構成誤差」をしきい値と比較することで、異常を検知します。
多変量データの複雑な関係性を捉えるのに適しており、静的なデータだけでなく、センサーデータのスナップショット分析にも有効です。
過去のデータから「次の瞬間の値」を予測するモデルを作成します(ARIMAモデルやLSTMなど)。
モデルは、「正常」な状態であれば「次はこうなるはずだ」という予測を出します。
しかし、機械が異常な挙動(振動の変化など)をし始めると、予測値と実際の値に乖離が生じます。
この予測誤差(Residual)をモニタリングすることで、異常動作の発生を捉えることができます。
KNIMEを使えば、オートエンコーダやクラスタリングの実装も、Pythonコードを書くことなくノードをつなぐだけで完了します。
さらにKNIME Business Hubを活用すれば、作成した検知モデルをサーバー上で定期実行し、異常発生時に担当者へ自動通知するシステムも構築可能です。
このサイトでは、クッキー (cookie)などの技術を使用して取得したアクセス情報等のユーザ情報を取得しております。
この表示を閉じる場合、プライバシーポリシーに同意いただきますよう、お願いいたします。