異常検知

異常検知とは、想定される挙動を逸脱するデータ内のイベントやパターンを特定するプロセスです。異常はしばしば、機械の故障、セキュリティ侵害、プロセスの非効率性などの重大な事象の兆候となることがあります。

異常検知の利点

異常検知の手法は、単純な外れ値検出から、膨大な多変量データセット内の隠れたパターンを明らかにする複雑な機械学習アルゴリズムにまで及ぶことがあります。たとえば、数千のセンサーが設置された産業環境では、時系列異常検知アルゴリズムを使用することで、人間が手作業で識別するのが困難なパターンを発見することができます。異常検知のユースケースと利点には、次のようなものがあります。

  • 予知保全: 振動データや温度データなどのセンサー機器の出力に現れる異常は、より深刻な故障の前兆である場合があります。これらの異常に早期に対処することで、機器の安全性を向上させ、コストのかかるダウンタイムを回避することができます。
  • プロセスの監視: 送電網全体にわたるエネルギーの異常検知など、プロセスデータ内の異常検知はパフォーマンスの最適化や設備の稼働率向上の機会を見出す事ができます。
  • テストデータから得られる知見: テストに異常検知を用いることで、プロトタイプ問題の特定、センサー異常値の排除、システム性能の把握が可能になります。この方法を取り入れることで、製品の運用を開始する前に重要な基準を満たしていることを確認できます。
  • 品質管理: 製造業において、異常検知は従来の手法では見落とされがちな生産ラインの物理的な欠陥の特定を可能にします。これにより無駄を最小限に抑え、歩留まりを最適化できます。

エンジニア向け異常検出入門

異常は予期される動作からの逸脱であり、検査だけでは異常イベントまたは異常パターンの特定が困難なことがあります。異常検出アルゴリズムによりそれらの逸脱を見つけることができます。ハードウェアを使用したデモで説明します。

このトピックについてさらに詳しく

異常の種類

時系列データの異常は、一般的に次の 3 つの主要なカテゴリに分類されます。

点異常、または外れ値とは、想定値から大きく逸脱した個々のデータポイントことです。単独の点異常は、調査が必要な問題やシステムの変化を示すこともあれば、短期間に複数の点異常が連続して発生しない限り、問題を示さないこともあります。

集合異常は、一群のデータポイントが同時に想定パターンから逸脱したときに生じます。たとえば、電力消費量に不規則な変動が続く場合、コンポーネントの不具合や使用パターンの変化といった、より大きな問題を示している可能性があります。

多変量異常は、複数のデータソースを同時に分析したときにのみ生じます。たとえば、化学プロセスにおける温度と圧力の測定値が、それぞれ個別に見ると安全な動作状態を示している場合でも、両者の関係に変化が生じると問題の兆候となる可能性があります。

他のデータタイプの異常

画像、動画、テキストなど、他のデータタイプの異常検知について学習します。

MATLAB による異常検知

MATLAB® には、時系列異常検知アルゴリズムを設計するさまざまな方法があります。異常検知には特定の用途に適した方法があり、利用可能な異常データの量や、異常を正常データから明確に区別できるかどうかによって決まります。

予知保全のための時系列異常検知手法

統計手法と AI 技術を用いて、時系列センサーデータの異常を検知する方法をご紹介します。

データのアクセスと探索

異常検知プロジェクトの基盤となるのはデータです。MATLAB では、ローカルやクラウドに保存された過去のデータセットをインポートしたり、センサーやデータベースから直接データを取得したり、さまざまな方法でデータにアクセスすることができます。

時として、データを見るだけで異常検知を実施できる場合があります。たとえば、以下の図はファンから収集された信号を示していますが、ファンの動作に異常を示す急激な信号の変化が容易に見て取れます。目視で異常を検知できるのであれば、findchangeptscontrolchart などのシンプルなアルゴリズムが使える可能性があります。

異常検知向け MATLAB プロット。モーター電圧、ファン速度、温度データを示しています。

目視で容易に検知できる異常を示す冷却ファンのデータ (MATLAB の plot 関数で作成)。

データ前処理と特徴量エンジニアリング

多くの場合、生データから視覚的に異常を検知することは困難です。現代の複雑な機械には数千のセンサーが搭載されており、複数のセンサーを同時に分析することで初めて異常が明らかになる場合があります。ラベル付きデータがある場合は、時間領域や周波数領域の特徴量の統計分布を調べることができます。また、教師なし学習の特徴量ランク付けを活用して、最も分散が大きい特徴量や他の特徴量との相関が最も低い特徴量を特定することもできます。これは時系列異常検知アルゴリズムの精度を高める絶好の機会となります。

Predictive Maintenance Toolbox™診断特徴デザイナーを使用すると、時系列データから特徴量を対話的に抽出、分析、ランク付けすることができます。

異常検知向けアプリのスクリーンショット。特徴量ランク付けの棒グラフと確率のヒストグラムが示しています。

診断特徴デザイナーアプリを使用して、正常な 3 軸振動データの特徴量を抽出、分析、ランク付けします。(MATLAB コードを参照)

異常検知アルゴリズムの設計

異常検知アルゴリズムでは、過去のデータに統計的手法を利用したり、新しいデータの異常を検知するために AI モデルに学習させたりすることがあります。MATLAB では、幅広い方法で時系列の異常検知に取り組むことができます。その方法は主に、統計的および距離ベース手法、1 クラス AI モデル、クラスタリングという 3 つのカテゴリに分類されます。これらはすべて異常検知アルゴリズムを設計する際に用いる手段ですが、まず何から始めるかは手元のデータや目的によって異なります。

以下の表は、異常検知手法の主なカテゴリごとに、使用ケースの概要と、MATLAB で使用できる関数の例を示したものです。このリストは完全なものではありませんので、十分な結果を得るために多様な手法を試してみることをお勧めします。

異常検知手法
カテゴリ 関数例 使用ケース
統計的および距離ベース手法 isoutlierfindchangeptsmatrixProfilerobustcovmahal
  • 正常データが多く、いくつかの異常が混ざっている場合。
  • データ内の異常を特定する場合。
  • シンプルでわかりやすい方法を求めている場合。
1 クラス AI モデル

ocsvmiforestrccforestlofdeepSignalAnomalyDetector

  • 正常なデータが多く、異常がほとんどない場合。
  • 新しいデータの異常を検知するために AI モデルに学習させる場合。
クラスタリング手法 kmeansdbscanclusterdatafitgmdist
  • 正常データと異常が偏りなく混在している場合。
  • データを識別可能なクラスターに分類する場合。

統計的および距離ベース手法

統計的および距離ベースの異常検知方法は、基礎となるデータの分布に関する仮定に基づいています。これらの手法は、どのデータポイントが想定される挙動から大きく逸脱しているかを判断することで異常を特定します。これらの手法には、以下が含まれます。

  • 外れ値と変化点の検出: 外れ値検出は、異常に高い値や低い値など、想定されるしきい値を超えた個々のデータポイントにフラグを立てます。変化点検出は、平均や分散の突然の変化など、データの統計的特性の変化を特定します。これらは点異常や集合異常の検知に役立ち、データの理解やクリーンアップを可能にしますが、さらに微妙な挙動の変化を捉えるにはロバスト性が十分でない場合があります。
  • 行列と距離のプロファイリング: 距離プロファイル行列プロファイルの計算も異常を検知する方法の 1 つで、時系列データを解析してモチーフ (繰り返しパターン) と不一致 (稀または異常なパターン) を明らかにします。データのセグメントを比較することで、長い時系列における集合異常を検知する際に特に役立ち、非常に計算効率の高い方法です。
  • ロバスト共分散: ロバスト共分散は、データの分布をモデル化し、その輪郭から外れるポイントを検知します。変数間の関係を考慮することで、複数の特徴が同時に逸脱することによって生じる多変量異常の検知に効果的です。
  • マハラノビス距離: マハラノビス距離は、データポイントが多変量分布の中心からどれだけ離れているかを測定します。特徴量が相関しているデータセットにおける多変量異常の検知に特に適しています。

distanceProfile を適用した異常検知。距離プロファイルは、クエリの部分列 (赤) と時系列内の他のすべての部分列との距離を計算し、最も類似したパターン (モチーフ) と最も異なるパターン (不一致) を特定します。(MATLAB ドキュメンテーション)

1 クラス AI モデル

1 クラスモデルは、教師なし異常検知を目的としています。つまり、対象データのほとんどまたはすべてが "正常である" (異常ではない) 場合です。この 1 クラス異常検知モデルは、機械学習ベースまたはディープラーニング ベースで構築されており、正常なデータのみで学習を行います。正常からの逸脱はすべて異常としてフラグ付けされます。1 クラスモデルは、異常が稀であるか、または明確に定義されたパターンがなく、大量の正常データを学習に使用できる場合に適しています。このモデルは、点異常、集合異常、多変量異常に利用できます。

MATLAB の異常検知でよく利用される 1 クラス AI モデルには、以下のようなものがあります。

  • 孤立森: 孤立森は、各観測値をリーフ状に分離するツリー構造を構築し、異常スコアをサンプルまでの平均深度として計算します。異常なサンプルは正常なサンプルよりも少ないプロセスで判断されます。この異常検知の方法は、数値特徴量とカテゴリカル特徴量の両方を扱うことができ、高次元データにも対応します。
  • 1 クラス サポート ベクター マシン: 1 クラス サポート ベクター マシンは、高次元の特徴空間内で正常データポイントの周りに境界を作成して、境界外のポイントを分離し、それを異常として分類します。この方法は入力として数値特徴量を必要とするため、高次元データには有効な手段ではありません。
  • オートエンコーダー: オートエンコーダーは、正常データで学習を行ったニューラルネットワークで、元の入力を再構築しようとします。学習済みのオートエンコーダーは正常な入力を正確に再構築し、入力データと再構築データの差が大きいと異常を示します。オートエンコーダーには、畳み込みニューラル ネットワークや長短期記憶ネットワークが活用されることがあります。Signal Processing Toolbox™ には、こうしたディープラーニング手法に適用できる deepSignalAnomalyDetector オブジェクトが用意されています。
MATLAB プロットのスクリーンショット。3 つのチャネルの振動データは異常検知の前と後を示しています。

3 軸振動データで検知された多変量異常の例。ここでは、メンテナンス直後に収集されたデータは正常である一方、メンテナンス直前に収集されたデータは異常として識別されています。(MATLAB コードを参照)

クラスタリング

データに異常が混在しているがラベル付けできない場合、教師なしクラスタリングで異常を検知する方法もあります。クラスタリング アルゴリズムは、特性に基づいて類似したデータポイントをグループ化します。通常、クラスタリングは時系列データから抽出される特徴、たとえば主成分などに適用されます。正常データと異常データのクラスターを関連付けることも可能ですが、データセットに偏りがある (同じタイプの異常ばかりが含まれている) 場合は、1 クラス AI モデルの方が有益な結果を得られる可能性があります。

MATLAB で簡単にできる k-means クラスタリング

[データのクラスタリング] ライブ エディター タスクを使用して k-means クラスタリングを適用します。

このトピックについてさらに詳しく

テストと検証

テストと検証は、異常検知モデルが未知のデータに対して正確かつ確実に機能することを確認します。このプロセスにはラベル付きの異常データが必要ですが、入手が困難な場合があります。異常データが不足している場合は、ノイズやスパイクなどを加えるルールベースの手法または物理ベースの Simscape™ モデルを用いて、合成時系列データを生成することができます。または、synthesizeTabularData を使用して、別の特徴データを生成することもできます。

エンジニアは通常、データを学習用、検証用、テスト用に分割します。学習用データはモデルの動作学習に、検証用データは学習中のモデル調整に、テスト用データは最終的なパフォーマンス評価に使用します。精度、再現率、F1 スコア、ROC-AUC などの性能指標を用いて、モデルが異常をどれだけ正確に検知できるかを評価します。ロバスト性テストは、ノイズが多い、不完全、未知などのデータパターンに対してモデルを評価することで、さらなる信頼性を確保します。

展開

C/C++ コードまたは Simulink ブロックを生成することで、リアルタイムの異常検知のためのアルゴリズムを組み込みデバイスに展開することができます。モデルに新しいデータを継続的に学習させるには、インクリメンタル異常検知を適用することもできます。この方法は、データに関する情報がほとんどない、または全くない状態で新しいデータが処理され、アルゴリズムがリアルタイムで変化に適応します。

企業全体のデータを操作する場合は、選択したクラウド環境に異常検知アルゴリズムを展開することもできます。

このトピックについてさらに詳しく