Skip to content

アプリケーション内で をクリックすると、お使いのDataRobotバージョンに関する全プラットフォームドキュメントにアクセスできます。

異常検知

DataRobotは、ラベルなしデータ(または部分的にラベル付けされたデータ)を処理して、異常検知モデルを構築します。 異常検知(外れ値検知または新規性検知とも呼ばれます)は、教師なし学習の応用の一種です。 教師あり学習モデルがターゲット特徴量を使用して学習データに基づく予測を作成する際、教師なし学習モデルはターゲットを持たず、学習データ内のパターンを検出します。

異常検知は、ネットワークとサイバーセキュリティ、保険詐欺、クレジットカード詐欺など、多くの通常のトランザクションと少量の異常トランザクションが存在する場合に使用できます。 教師ありの方法は、このような少数の異常ケースの予測において優れていますが、関連データにラベルを設定するにはコストと時間がかかります。

その他の重要情報については、関連する注意事項を参照してください。

異常検知ワークフロー

ここでは、AutoMLと時系列プロジェクトの両方で機能する異常検知ワークフローの概要を示します。

  1. データをアップロードし、ターゲットなし?をクリックし、異常 を選択します。

  2. 時間認識モデリングを使用する場合:

    • 時間認識モデルを設定をクリックします。
    • プライマリ日付/時刻特徴量を選択します。
    • 時系列モデリングを設定します。
    • 異常検知のローリングウィンドウ(FDW)を設定します。
  3. モデリングモードを設定して、開始クリックします。 手動モードを選択した場合は、リポジトリに移動し、異常検知のブループリントを実行します。

  4. リーダーボードから、スコアを考慮してモデルを選択します。
  5. 時系列プロジェクトの場合、モデルを展開して時間経過に伴う異常または異常評価を選択します。 この視覚化は、時間の経過に伴う異常を理解するのに役立ち、非異常の時系列の精度と同様に機能します。

  6. 特徴量のインパクトを計算します。

    備考

    プロジェクトの設定に関係なく、DataRobotブループリントからトレーニングされた異常検知モデルの特徴量のインパクトは、常にSHAPを使用して計算されます。 ユーザーブループリントからの異常検知モデルの場合、特徴量のインパクトは、Permutationベースのアプローチを使用して計算されます。

  7. 特徴量ごとの作用を計算します。

  8. 予測の説明を計算して、どの特徴量が外れ値の識別に寄与するかを理解します。
  9. 外れ値のしきい値を変更することを検討します。
  10. 予測を作成します(または部分的にラベル付けされたデータを使用します)。

合成AUC指標

異常検知は教師なしモードで実行され、ターゲットを必要とせずにデータ内の外れ値が検出されます。 ただし、ターゲットがない場合は、従来のデータサイエンス指標を計算してモデルのパフォーマンスを推定することはできません。 これに対処するために、DataRobotでは、合成AUC指標を使用してモデルが比較され、リーダーボードがソートされます。

教師なしモードが有効になると、デフォルトの指標として合成AUCが表示されます。 指標は、正常度の高い統合データセットと異常度の高い統合データセットの2つの統合データセットを検定サンプルから生成することによって機能します。 両方のサンプルに適切なラベルが付けられ、両方のサンプルの異常スコア予測がモデルで計算されます。 グランドトルースとして人工ラベルを使用して、各統合データセットの通常のROC AUC値が推定されます。 モデルの合成AUCが0.9である場合、モデルが90%の時間で正しいと解釈するのは正しくありません。 このスコアは、単に合成AUCが0.9のモデルは合成AUCが0.6のモデルよりも優れている可能性が高いことなどを意味します。

外れ値のしきい値

異常検知モデルを実行した後、一部のブループリントでは、expected_outlier_fractionパラメーターを高度なチューニングタブで設定できます。

このパラメーターは、外れ値(予期される「汚染係数」)とみなすデータの割合を設定します。 AutoMLでは、インサイトテーブル表示のコンテンツを定義するために使用されます。 SVMモデルなどの特殊なケースでは、この値は決定関数のしきい値に影響を与えるnuパラメーターを設定します。 デフォルトでは、expected_outlier_fractionは0.1(10%)です。

異常スコアの解釈

異常検知モデル以外のモデルと同様、DataRobotでは、モデルスコアがリーダーボードにレポートされます。 しかし、スコアの意味は異なります。 「良い」スコアは、データセット内の異常行がターゲットのクラスに何らかの関連性があることを示します。 「悪い」スコアは、異常値は存在しますがターゲットのクラスに関連性がないことを示します。 つまりスコアは、モデルのパフォーマンスがどれだけ良好かを示すものではありません。 教師なし学習モデルですので、スコアはノイズデータなどの要素に影響されます—異常だと思ったものが異常ではないかもしれません。

異常スコアの範囲は0〜1で、スコアが大きいほど異常である可能性が高くなります。 これらは、トレーニングセットのその他の行と比較した場合にモデルが特定の行を識別する確率が外れ値として解釈されるようにキャリブレートされます。 しかし、教師なしモードではターゲットがないため、キャリブレーションは完全ではありません。 校正されたスコアは、定量的な正確性ではなく、推定確率と考えてください。

異常スコアのインサイト

備考

このインサイトは時系列プロジェクトでは使用できません。

DataRobotの異常検知モデルは、すべての行の異常スコアを自動的に提供するので、予期された動作にそぐわない異常なパターンを識別できます。 インサイトタブから表示できる画面には、最も高い異常スコアを含む上位100列までがリストされ、最大1000列および列あたり200文字が表示されます。 テーブル表示にはエクスポートボタンがあります。このボタンを使用して、異常スコアの完全なリストを含むCSVをダウンロードできます。 また、予測を計算予測を作成タブ)して、結果をダウンロードすることもできます。 異常スコアは結果のPrediction列に表示されます。

異常値の結果のサマリーを見るには、インサイトタブの異常検知をクリックします。

異常スコア(モデルの予測スコア)を基準に並べられた表が表示されます。 表の各行は、元のデータセット内の1つの行を表します。 この表で、検索をして元のデータの行を識別することや、モデルの予測(行IDが追加されます)をダウンロードすることができます。

表示される行の数は、expected_outlier_fractionパラメーターに依存します。表示できる最大行数は100行です(行あたり1000列および200文字)。 表示には、(expected_outlier_fraction * number of rows)または100の小さい方が含まれます。モデルのトレーニングに使用するすべての行の異常テーブル全体をダウンロードするには、エクスポートボタンをクリックします。

別の異常モデルのインサイトを表示するには、モデル名バーのプロダウンをクリックして、新しいモデルを選択します。

時系列の異常検知

DataRobotの時系列異常検知ではデータの異常を検出できます。 プロジェクトの開始時にターゲット特徴量を指定すると時系列データに対して教師なしモデルが実行されるため、この機能を有効にする場合はターゲット特徴量を指定しないでください。 代わりに、クリックして教師なしモードを有効にします。

教師なしモードを有効にして、プライマリー日付/時刻特徴量を選択した後、時系列モデリングで通常行うように特徴量派生ウィンドウ(FDW)を調整できます。 ただし、予測ウィンドウを指定する必要はありません。 この理由はデータに異常が見られると、DataRobotがリアルタイムでそれを検出するためです。

たとえば、予測保守のために異常検知を使用する場合を考えてみます。 さまざまなコンポーネントの圧力測定値を報告するセンサーを備えたポンプがある場合、DataRobotの時系列モデルを使用すると、それらのコンポーネントいずれかの圧力値が異常に高くなった場合に注意できます。 その後、そのコンポーネントを調査し、ポンプが最終的に故障する前に問題のある部品を修理できます。

DataRobotでは、異常検知のブループリントを選択することに加えて、アンサンブルされたブループリントを作成することもできます。 たとえば、高いFalse Positive率を生成するモデルを作成し、最大アンサンブルモデルを作成して、異常に対する感度を向上させることができます。

時系列の異常検知では、総合AUCという新しい誤差指標手法を使用してリーダーボードモデルのランク付けが行われます。 この誤差指標は、ユースケースに最適なブループリントの決定に役立ちます。 AUCスコアを確認する場合は、部分的にラベル付けされたデータをアップロードして、既知の異常を指定する列を作成できます。 DataRobotでは、その部分的にラベル付けされたデータセットを使用して、AUCスコアでリーダーボードをランク付けできます。 部分的にラベル付けされたデータは、トレーニングデータセットの値のサンプルを取得し、実際に異常がある場合に「1」、異常がない場合に「0」のフラグを設定したデータです。

異常スコアを校正して確率として解釈できるようにします。 これは、元の異常スコアの外れ値検知を異常ラベルのプロキシとして使用するブループリントで発生します。 トレーニングセットのスコアの外れ値である元のスコアは、校正の目的で異常値と見なされます。 この合成ターゲットは、元の異常スコアでPlattスケーリングを実行するために使用されます。 校正されたスコアは、トレーニングセットで見られるスコアの分布を考慮して、元のスコアが外れ値である確率として解釈されます。

時系列の異常検知を使用したデプロイは、その他のすべての時系列ブループリントのデプロイと同じように機能します。

時系列の異常検知特徴量セット

DataRobotは、ポイント異常値および異常ウィンドウ検出に役立つさまざまな時系列特徴量セットを生成します。 最高のパフォーマンスを実現するために、DataRobotでは、通常、オートパイロットの実行時に「SHAPベースの削減済み特徴量」または「堅牢なzスコアのみ」特徴量セット選択されます。

「SHAPベースの削減済み特徴量」または「堅牢なzスコアのみ」特徴量の両方では、利用可能なすべての派生した特徴量から選択された機能のセットが考慮されます。 メニューから追加の機能リストを利用できます。

  • 「実測値と移動統計量」
  • 実測値のみ
  • 「ローリング統計のみ」
  • 時系列で有用な特徴量
  • 時系列で抽出された特徴量

「実測値とローリング統計」が「時系列で有用な特徴量」の複製である場合、DataRobotのメニューには「時系列で有用な特徴量」だけが表示されます。 「時系列で有用な特徴量」には重複特徴量は含まれませんが、「時系列で抽出された特徴量」にはすべての時系列で派生した特徴量が含まれます。

特徴量セットの季節性検出

一部の特徴量が周期的および/または傾向がある場合がありますが、異常はありません。 元の特徴量に適用された異常検知アルゴリズムでは、周期性や傾向は考慮されません。 これらのアルゴリズムでは、特徴量の振幅が大きい場合にFalse Positivesが識別される場合や、正常な信号の全体的な振幅と比較して小さい異常値がある場合にFalse Negativesが識別される場合があります。

異常は本質的に不規則なので、DataRobotでは、異常検知プロジェクトの自動モデリングで使用されるほとんどのデフォルトの特徴量セットから定期的な特徴量が除外されます。 したがって、季節性検知ロジックをプロジェクトの数値特徴量に適用した後、デフォルトのセットが作成される前に、これらの特徴量が削除されます。 このロジックは、時系列抽出特徴量セットと時系列情報特徴量セットには適用されません(これらの特徴量セットから特徴量は削除されません)。 以下に具体例を示します。

  • 特徴量が季節的である場合、ロジックでは実測値とローリングZスコアも季節的であると想定され、実測値とローリングZスコアが削除されます。
  • ローリングウィンドウがその特徴量の期間よりも短い場合、ローリング統計は季節的であると見なされ、特徴量が削除されます。

これらの特徴量は引き続きプロジェクトで使用可能で、ユーザーが作成した特徴量セットに追加することでモデリングに使用できます。

部分的にラベル付けされたデータ

ここでは、部分的にラベル付けされたデータの使用に関する概要を示します。

  1. データをアップロードして教師なしモードを有効にし、DataRobotの教師なし学習モデルを介してラベルなしデータを実行します。

  2. 合成AUCモデルのランク付けを考慮して最適なモデルを選択します。

  3. モデルによってフラグが設定された非異常と実際の異常を比較します。

  4. 元のデータセットまたはラベル付けされたデータのコピーを取り、既知の現実の異常に基づいて、スコアを0または1(真の異常は「1」、異常なしは「0」)とラベル付けする「実測値」列を作成します。 この列にはユニークな名前が必要です(つまり、データセットの列名として使われているものは使用できません)。

  5. 部分的にラベル付けされた修正済みデータをアップロードしてAUCを検定し、このデータ用に構築されたリフトチャートおよびROC曲線チャートを使用して結果を評価し、モデルを選択します。

  6. モデルを運用環境にデプロイします。

異常検知のブループリント

DataRobotオートパイロットは、データセットのサイズなど、データ固有の特性に基づいてブループリントを作成します。 一部のブループリントは、モデリングリソースを大量に消費したり、構築に時間がかかる傾向があるため、リポジトリに自動的に追加されません。 実行したい特定の異常検知ブループリントがあるが、リポジトリにリストされていない場合は、 ブループリントエディターで作成してみてください。 結果のブループリントを実行してもリソースを大量に消費する場合、DataRobotはモデルエラーまたはメモリー不足エラーを生成し、 モデルログに表示します。

DataRobotが実装する異常検知アルゴリズムを以下に示します。

モデル 説明
Isolation Forest 特徴量をランダムに選択し、選択した特徴量の最大値と最小値の間の分割値をランダムに選択することによって、観測値を「分離」します。 ランダムな分割によって、異常値は短いツリーパスとなります。 高次元データに適しています。
One Class SVM データセットの形状をキャプチャします。通常、新規性検知に使用されます。 高次元データに適しています。
Local Outlier Factor(LOF) k近傍法に基づき、特定の行の密度と、それと近い行の密度とのローカル偏差を測定します。 あるものが、その周囲のものとどれくらい分離されているかが異常スコアに反映されるため、異常スコアは「ローカル」とみなされます。
Double Median Absolute Deviation(MAD、中央値絶対偏差) 左端からの中央値(すべてのデータの中央値以下のすべてのポイントの中央値)と右端からの中央値(すべてのデータの中央値以上のすべてのポイントの中央値)の 2つの中央値を使用します。 いずれかの中央値がしきい値より大きいかチェックします。 ブーリアンおよび疑似定数データには適していません。対称および非対称分布に適しています。
教師あり学習による異常検知(XGB) ベースモデルの平均スコアを使用し、あるパーセンテージを異常としてラベル付けし、残りを正常としてラベル付けします。 異常とラベル付けされるパーセンテージは、calibration_outlier_fractionパラメーターによって定義されます。 ベースモデルはIsolation ForestとDouble MADで、メモリー消費の少ない高速処理が可能です。 データセットにテキストが含まれる場合、リポジトリには2つのXGBoostモデルがあります。 1つのモデルは、テキストからの特異値分解を使用します。もう1つのモデルは、テキストで最も頻繁に使用される語句を使用します。
Mahalanobis Distance マハラノビス距離は、ポイント(P)と分布(D)の距離の測定値です。 これは、分布の平均からのポイントの標準偏差の数を測定する概念の多次元表現です。 このモデルには、データの列が1つ以上必要です。
時系列:ボリンジャーバンド 最新の値に対して大幅に逸脱している特徴量値は、異常な動作を示している可能性があります。 ボリンジャーバンドは、異常検知の基準としてロバストZスコア(修正Zスコアとも呼ばれます)値を参照します。 ロバストZスコア値はサンプルの中央値を使用して評価され、値がサンプルの中央値からどれだけ離れているかが示されます(Zスコアは似ていますが参照するのはサンプル平均です)。 ボリンジャーバンドは、ロバストZスコアが指定しきい値を超えるたびにより高い異常スコアを示します。 ボリンジャーバンドは、ロバストzスコアの計算のリファレンスとしてパーティショントレーニングデータの中央値を参照します。
時系列:ボリンジャーバンド(ローリング) 上記のボリンジャーバンドとは対照的に、ボリンジャーバンド(ローリング)は、パーティショントレーニングデータ全体ではなく、特徴量の派生ウィンドウサンプルの中央値のみを参照します。 ボリンジャーバンド(ローリング)では、モデリングに「ロバストZスコアのみ」特徴量セットを使用する必要があります。この特徴量セットには、ローリング方式で派生したすべてのロバストZスコア値が含まれます。

オートパイロット中にDataRobotで選択されるブループリントは、データセットのサイズに応じて異なります。 たとえば、一般的にIsolation Forestが選択されますが、非常に大きなデータセットの場合、オートパイロットではDouble MADモデルが構築されます。 DataRobotで構築されるモデルに関係なく、すべての異常ブループリントはリポジトリから実行できます。

使用例

異常検知のいくつかの使用例を以下に示します。

データにラベルが付けられている場合:

クレジットカードトランザクションの大量の行があり、そのごく少数が詐欺または詐欺以外とラベル付けされているとします。ラベル付けされている行では、ラベルにはノイズが含まれており、False PositivesとFalse Negativesが含まれることがわかっています。異常検知モデルによる「異常」とクレジットカードトランザクションの「詐欺」の関係性を評価し、異常検知モデルをファインチューニングして、ラベル付けされていない大量のデータの予測を信頼できるものにしたいと考えています。請求を調査するためのリソースが限られているため、適切な異常検知によって、不正が疑われるケースの優先順位付けを行うことができます。

または

多くがラベル付けされた大量のデータを保有するネットワークセキュリティ企業の場合を考えてみます。悪意のある行動が認識され、何らかの対策(システム進入のブロックなど)がとられたとしても、すぐにハッカーが手法を変更し、新しい形でネットワークに侵入してきます。その場合、教師ありモデルを最新の状態に維持して、ハッカーの行動の変化を認識することは困難です。

異常検知モデルを使用して、新しいデータが異常であるかどうか(「通常」のアクセスであったりすでに知られている「不正」アクセスと異なっている)を予測します。変化を認識するために必要なデータははるかに少ないので、教師ありモデルのように異常検知モデルを頻繁に再トレーニングする必要はありません。ラベルが付けられた既存のデータを使用して、既存の異常検知モデルをファインチューニングすることができます。

データにラベルが付けられていない場合:

特定の時点における機械のステータスに関する機械のデータを保持する製造会社の例を考えてみます。異常検知を使用して、機械のログから異常な時点を識別して、機械の故障を防ぐために必要な保守をしたいと考えています。

機能に関する注意事項

異常検知プロジェクトに従事する場合は、次の点にご注意ください:

  • 数値が欠損している場合、DataRobotは、中央値(定義上異常ではない値)で補間します。

  • データセットの特徴量数が多いほど、DataRobotは異常検知するのに時間がかかり、結果を解釈することがより困難になります。 特徴量が1000以上の場合は、異常スコアの解釈が難しくなり、異常の根本原因を特定することが困難になる可能性があることに注意してください。

  • 1000を超える特徴量で異常検知モデルをトレーニングした場合、解釈タブのインサイトは使用できません。 これには、特徴量のインパクト、特徴量ごとの作用、予測の説明、ワードクラウド、ドキュメントのインサイト(該当する場合)が含まれます。

  • 異常スコアは正規化されるので、DataRobotでは、正常からあまり離れていない場合でも一部の行が異常値としてラベル付けされます。 トレーニングデータの場合、最も異常な行のスコアは1になります。一部のモデルでは、テストデータや外部データは、その行がトレーニングデータの他の行よりも異常である場合に、異常スコアの予測値が1よりも大きくなることがあります。

  • 合成AUCは、トレーニングデータの合成異常やインライアの作成に基づく近似です。

  • 合成AUCのスコアは、画像特徴量を含むアンサンブルでは使用できません。

  • DataRobotブループリントからトレーニングされた異常検知モデルの特徴量のインパクトは、常にSHAPを使用して計算されます。 ユーザーブループリントからの異常検知モデルの場合、特徴量のインパクトは、Permutationベースのアプローチを使用して計算されます。

  • 時系列の異常検知は、ピュアテキストデータの異常に対してまだ最適化されていないため、データにはいくつかの数値列またはカテゴリー列を含める必要があります。

  • 以下の方法が実装されていて、チューニング可能です。

方法 詳細
Isolation Forest
  • 最大200万行
  • データセット < 500 MB
  • 数値+カテゴリー+テキスト列の数 > 2
  • 最大26のテキスト列
平均絶対偏差(MAD)
  • 任意の行数
  • すべてのサイズのデータセット
  • 最大26のテキスト列
1クラスのSupport Vector Machine(SVM)
  • 最大10,000行
  • データセット < 500 MB
  • 数値+カテゴリー+テキスト列の数 < 500
Local Outlier Factor(LOF)
  • 最大500,001行
  • データセット < 500 MB
  • 最大26のテキスト列
Mahalanobis Distance
  • 任意の行数
  • すべてのサイズのデータセット
  • 最大26のテキスト列
  • 少なくとも1つの数値またはカテゴリー列
  • 以下はサポートされていません。

  • スマートダウンサンプリングなどの、加重またはオフセットを含むプロジェクト

  • スコアリングコード

  • 異常検知では地理空間データは考慮されません(モデルは構築されますが、これらのデータ型はブループリントに含まれません)。

さらに、時系列プロジェクトの場合は、次のチェックも実行されます。

  • ミリ秒データは、データのきめ細かさの下限です。
  • データセットは1GB未満である必要があります。
  • いくつかのブループリントは、純粋なカテゴリーデータには実行できません。
  • 一部のブループリントは特徴量セットに関連付けられており、特定の特徴量を想定しています(たとえば、ボリンジャーバンドローリングは、ロバストZスコア特徴量だけを含む特徴量セットに対して実行する必要があります)。
  • 周期性のある時系列プロジェクトの場合:
    • 周期性を適用すると特徴量の削減/処理の優先順位に影響するので、特徴量が多すぎる場合、季節的特徴量は抽出された時系列特徴量と時系列の有益な特徴量セットに含まれません。

また、時系列の注意事項が適用されます。


更新しました March 13, 2024