ガイド

この実践ガイドでは、エンジニア向けに時系列データの異常検知アルゴリズムを設計して展開する方法をご紹介します。

異常検知の概要

異常検知とは

異常検知とは、データ内で想定外の挙動を示すイベントやパターンを特定するプロセスのことです。こうした逸脱は「異常」と呼ばれており、機械の故障、セキュリティ侵害、初期兆候、プロセス効率の低下といった重要な情報を示していることがあります。

産業機械の異常を振動信号から検知します。時間枠の 3 軸振動データを処理し、機械学習モデルで異常を検知します。主成分平面上に表示された判定線を境に赤い点で異常が示されます。

異常検知の活用例

異常検知アルゴリズムは、さまざまな産業や分野で活用されています。

予知保全: 産業機器に展開される異常検知アルゴリズムは、機械故障の初期兆候を特定できるため、安全性の向上や大きな損失を伴うダウンタイムの回避が可能です。

デジタルヘルス: 心電図 (ECG) 信号の異常を検知することで、不整脈、心房細動、心室頻拍など、さまざまな心疾患を発見することができます。

飛行テストデータの解析: エンジニアは、システムの挙動を理解し、設計に関する判断を行うために飛行テストを利用しています。異常検知では、不規則なセンサー値にフラグを立て、想定した性能範囲を逸脱する状態を特定できます。

フォールトトレラント制御: 電動モーターに組み込まれた異常検知アルゴリズムは、リアルタイムで変化にフラグを立てることができます。これを基にコントローラーが応答を調整することで、破損を未然に防ぎ、性能を向上させることができます。

時系列データにおける異常の種類

異常は画像、動画、テキストなど、さまざまな種類のデータに発生しますが、このガイドではエンジニアリング分野で広く用いられている時系列データに焦点を当てています。時系列データとは、温度、圧力、振動などの連続する測定値を経時的に記録したものです。時系列データに現れる異常は、主に次の 3 つに分類されます。

ノイズを含む正弦曲線上に赤い点で 3 つの外れ値を示す MATLAB Figure。

点異常、または外れ値とは、想定値から大きく逸脱した個々のデータ点のことです。

一定の区間を強調表示して異常を示す MATLAB Figure。

集合異常は、一群のデータ点が同時に想定パターンから逸脱したときに生じます。

3 つの曲線上で一定の区間を強調表示して異常を示す MATLAB Figure。

多変量異常は、複数のデータソースを同時に解析した時に生じる異常です。1 つのデータソースだけでは異常とはみなされない場合もあります。

異常検知アルゴリズムの選択

MATLAB は、時系列異常検知アルゴリズムを幅広く提供しています。主に統計的・距離ベース手法と 1 クラス AI モデルという 2 つのカテゴリに分類されます。これらはすべて、異常検知アルゴリズムの設計の際に用いるツールになりますが、どのツールを選択するかはデータの特性と目的に応じて決める必要があります。

統計的・距離ベース手法

統計的手法は、根底にあるデータ分布の仮定を前提としています。しきい値、トレンド、確率モデルなどを用いて、想定の統計的挙動から逸脱する点を特定します。簡単な統計的異常検知には、信号の移動平均を計算し、平均値があるしきい値を超えた場合に異常とみなす方法があります。

距離ベースの手法では、特定のデータ分布を仮定せず、観測値や部分系列同士の距離を計算し、典型的なパターンから大きく逸脱したものを異常とみなします。たとえば、matrixProfile は時系列内の各部分系列同士を比較し、最も距離が離れたものを異常として特定します。

distanceProfile を使用して時系列データ内の異常を特定します。

統計的・距離ベース手法が適しているケース:

  • 学習データが少ない場合
  • データの基礎的な統計やトレンドを十分に理解している場合
  • 計算リソースが限られている場合

特徴:

+   シンプルで解釈しやすい
+   計算コストが低い
+   点異常と集合異常の両方に対応可能
-   複雑なパターンや非線形動作の処理が困難な場合がある
-   ノイズやデータの次元に対して感度が高い

MATLAB の手法例:

  • isoutlier – データの外れ値を検出
  • findchangepts – 信号内の急激な変化を検出
  • robustcov – ロバストな多変量共分散と平均を推定
  • mahal – 基準標本に対するマハラノビス距離を計算
  • distanceProfile – 時系列データ内のクエリ部分系列と他のすべての部分系列との距離プロファイルを計算
  • matrixProfile – 多変量時系列内のすべての部分系列ペア間の行列プロファイルを計算

使用例のご紹介

行列プロファイルを使用したモーターデータの異常検知

行列プロファイルは、長い時系列データの集合異常を効率的に検知するために利用されます。この例では、劣化していく DC モーターから収集した電機子電流の測定値に、行列プロファイルを適用して異常を検知する方法を紹介しています。

上位モチーフペアと不一致の区間が強調表示されたモーターデータの行列プロファイル

1 クラス AI モデル

このカテゴリの異常検知手法は、主に正常な一連のベースラインデータを使用して機械学習モデルまたはディープラーニング モデルの学習を行います。モデルは正常な挙動を学習し、そこから逸脱したものを異常として識別します。1 クラス AI モデルは、異常がまれであったり、明確に定義されたパターンがない場合に最も効果的に機能します。このモデルは、複数のデータチャネルにわたり、あらゆる種類の異常に適用できます。

1 クラス AI モデルが適しているケース:

  • 新たに取得されるデータ内の異常を識別できるようにモデルの学習を行う場合
  • 学習用の正常データが豊富にある場合
  • 異常がまれ、または未知であったり、明確に定義されたパターンがない場合

特徴:

+   複雑なパターンや非線形パターンを含む、あらゆる種類の異常に対応可能
+   ノイズやデータの次元に対するロバスト性
+   ディープラーニング手法では特徴量エンジニアリングが不要
-    学習に時間がかかり計算負荷が高い
-    統計的・距離ベース手法に比べて結果の解釈が困難な場合が多い

MATLAB の手法例:

  • iforest – アイソレーション フォレスト
  • ocsvm – 1 クラス サポート ベクター マシン
  • rccforest – ロバスト ランダム カット フォレスト
  • deepSignalAnomalyDetector – 1 次元畳み込みオートエンコーダーまたは長短期記憶ネットワーク (LSTM) に基づくディープラーニング モデル
  • tcnAD – 時間的畳み込みネットワーク (TCN)
  • deepantAD – 畳み込みニューラル ネットワーク (CNN)
  • usAD – デュアルエンコーダー ネットワーク
  • vaelstmAD – 変分オートエンコーダーと LSTM

使用例のご紹介

異常を検知するためのディープラーニング モデルの学習

この例では、ディープラーニング モデルを使用して、心電図 (ECG) データ内の異常な心拍シーケンスを検知します。

検知された異常が赤で示された ECG データ。

検知された異常が赤で示された ECG データ。

異常検知に必要なデータの準備

高品質なデータは、精度の高い異常検知アルゴリズムを構築するために極めて重要です。しかし、異常検知に必要なデータの収集、分析、前処理には多くの課題があり、画一的に対処できるものではありません。どの手法を適用するかは、データの特性、ハードウェア要件、問題の種類によって異なります。十分な量のデータがあったとしても、数百ものセンサーから収集されたノイズの多いデータでは、異常の検知が困難になることがあります。このようなケースでは、特徴量の抽出やデータ次元の削減が重要になります。

異常検知に必要なデータセット

異常検知では、多くの従来の機械学習タスクと比べて、学習データ要件の柔軟性が高く、ラベル付きデータを必要としません。異常検知アルゴリズムは、正常データのみ、あるいは多少の異常を含む正常データで学習を行います。このデータを基に、異常検知モデルに「何が正常か」を認識させ、正常でないものを異常として分類できるよう学習させる必要があります。

2 つ以上のクラスが平衡化されたラベル付きデータセットがある場合、マルチクラス異常検知において教師あり学習という手法を適用できます。

図に示されている正常データと大部分が正常なデータは異常検知に適しています。平衡化されたラベル付きデータは教師あり学習に利用できます。

異常検知に適したデータ。

これらの手法に関する詳細はこちら:

データの分析と前処理

アルゴリズムを設計する前には、データが何を示しているのかを理解しておく必要があります。データを分析して可視化することで、有用なデータソースの特定、データパターンの把握、データ品質の確認、必要な前処理手順の判断が可能になります。信号アナライザーアプリを使用すれば、時系列データを対話的に分析して、前処理を行うことができます。

センサーから収集されたデータは通常、ノイズが多く、乱雑で整理されていません。MATLAB には、再サンプリング、平滑化、整理、欠損データの補完などの前処理手順を実行するための数多くの手法や対話型アプリが用意されています。

MATLAB でのデータ前処理に関する詳細はこちら:

生データからの特徴量抽出

一部の AI モデルでは、時系列データを直接扱うことができますが、データから特徴量を抽出することで、正常データと異常データを区別する重要な数値的特徴を際立たせ、モデルの性能を向上させることができます。特徴抽出とは、生データを、モデルの学習に使用できる有意な数値特徴量に変換するプロセスです。

たとえば、平均値、標準偏差、ピーク振幅、支配周波数といった特徴量の計算が考えられます。これらの特徴量は時系列データ内の重要な挙動を要約し、正常な状態がどのようなものかをモデルが容易に学習できるようにします。

データに精通したエンジニアは、多くの場合、最も有用な特徴量を既に把握しています。しかし、自動特徴抽出プロセスを使用することもできます。このプロセスでは、一般的な特徴量 (記述統計量、スペクトル測定値など) を抽出し、それらを順位付けします。Predictive Maintenance Toolbox診断特徴デザイナーアプリを使用すると、特徴量を対話的に抽出、比較、順位付けし、これらの特徴量を使用して AI モデルの学習を行うことができます。

データ次元の削減

データを収集して特徴量を抽出した後で、極めて多くの特徴量が得られることが一般的で、信号 1 つにつき数百個にもなることもあります。このような高次元のデータは、モデルによる学習の速度を低下させ、解釈を難しくし、過学習を引き起こしやすくします。最も有用な特徴量のみを選択するか、組み合わせて次元を削減することで、モデルを単純化し、異常を示す重要な特徴量に学習を集中させることができます。主成分分析 (PCA) や特徴量ランク付けなどの次元削減手法は、異常検知に最も寄与する特徴量を特定するのに役立ちます。

使用例のご紹介

3 軸振動データを使用した産業機器の異常検知

この実際の例では、3 つの異なる 1 クラス AI モデルの学習を行います。このプロセスには、データ分析、特徴抽出、モデルの学習と性能評価が含まれます。

3 つのチャネルにおけるメンテナンス前/後の振動データを示すプロット。

産業機器のメンテナンス前/後の 3 軸振動データ。メンテナンス後のデータは正常な動作を示しており、メンテナンス直前のデータは異常を示しています。

実環境での実装

エンジニアは、実際のシステムで異常を検知できるように異常検知アルゴリズムを設計したいと考えています。こうしたアルゴリズムの開発は反復的なプロセスになります。

このガイドでは、データの分析や前処理、特徴量の抽出、アルゴリズムの選択といった異常検知アルゴリズムを開発する上で必要な手順を取り上げています。開発後は、新しいデータでアルゴリズムを評価し、その汎化性能を確認できます。最後に、リアルタイムで利用できるように展開し、必要に応じてインクリメンタル学習で更新できます。

5 つの手順を含むワークフローのループ: データの取得と分析、異常検知アルゴリズムの開発、新しいデータでのテスト、ハードウェアへの展開、モデルの更新。

実際の利用に向けた AI モデルベースの異常検知モデルの開発・展開ワークフロー。

組み込みハードウェアへの展開

組み込み AI 向けの MATLAB を使用すると、リアルタイム異常検知のために、Simulink ブロックを作成するか、C/C++ コードを生成して、マイクロコントローラーや ECU などの組み込みデバイスに異常検知アルゴリズムを展開できます。組み込みハードウェアに展開する前に、これらのアルゴリズムをシミュレーションでテストし、その有効性を確認することが重要です。Simulink は、異常検知アルゴリズムを他のシステム コンポーネントと統合するためのプラットフォームを提供し、システムレベルでのリアルタイム シミュレーションを可能にします。

Raspberry Pi への異常検知アルゴリズムの展開を示す図。

リアルタイムノイズ検出のために、Deep Signal Anomaly Detector Simulink ブロックを Raspberry Pi® に展開。

インクリメンタル異常検知

インクリメンタル異常検知手法は、入力データを継続的に処理し、データストリームからリアルタイムで異常スコアを計算します。インクリメンタル モデルはデータに適合します。MATLAB には、インクリメンタル異常検知のための incrementalRobustRandomCutForest モデルオブジェクトと incrementalOneClassSVM モデルオブジェクトが用意されています。まず、異常スコアを計算するためにモデルの学習を行います。次に、学習に使用したデータから得られた異常スコアに基づいてしきい値を計算し、調整します。新しいデータバッチが順次入力されるたびに、モデルはさらに異常を検知し、自己学習し、しきい値を調整します。

インクリメンタル異常検知に関する詳細はこちら

モデル適合、しきい値学習、オンライン推定の各段階における異常スコア、しきい値、検知された異常を反復ごとに表示している MATLAB Figure。

時系列データにインクリメンタル学習手法を適用する際のモデル適合、しきい値学習、オンライン推定の各段階。

まとめ

時系列異常検知は、想定パターンからの逸脱を特定するものであり、このような逸脱は、機械の故障、健康リスク、プロセス効率の低下などの重大な問題の徴候である可能性があります。MATLAB は、データの分析と前処理、次元削減と特徴抽出、適切なアルゴリズムの選択を含む、時系列データ内の異常を検知する包括的なワークフローを提供します。Simulink を使用すると、異常検知アルゴリズムを大規模なシステムモデルに統合し、シミュレーションを通じてシステム全体の挙動を検証できます。このワークフローは組み込み展開にも対応しており、C/C++ コードを生成して異常検知アルゴリズムをエッジデバイスやリアルタイム アプリケーションに展開できます。

異常検知予知保全についてさらに詳しく見る。


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