Skip to content

異常検知

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

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

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

異常検知ワークフロー

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

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

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

    • 時間認識モデルを設定をクリックします。
    • プライマリ日付/時刻特徴量を選択します。
    • 時系列モデリングを設定します。
    • 異常検知のローリングウィンドウ(FDW)を設定します。
  3. モデリングモードを設定して、開始クリックします。 If you chose manual mode, navigate to the Repository and run an anomaly detection blueprint.

  4. リーダーボードから、スコアを考慮してモデルを選択します。
  5. 時系列プロジェクトの場合、モデルを展開して時間経過に伴う異常または異常評価を選択します。 This visualization helps to understand anomalies over time and functions similarly to the non-anomaly Accuracy Over Time.

  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パラメーターを高度なチューニングタブで設定できます。

このパラメーターは、外れ値(予期される「汚染係数」)とみなすデータの割合を設定します。 In AutoML, it is used to define the content of the Insights table display. SVMモデルなどの特殊なケースでは、この値は決定関数のしきい値に影響を与えるnuパラメーターを設定します。 デフォルトでは、expected_outlier_fractionは0.1(10%)です。

異常スコアの解釈

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

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

異常スコアのインサイト

備考

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

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

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

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

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

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

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

異常検知(クラスタリングではない)プロジェクトで作業するときに、部分的にラベル付けされたデータを使用する方法の概要を以下に示します。

  1. データをアップロードして、ターゲットなし?を選択して教師なしモードを有効にし、異常オプションを選択して、開始をクリックします。 選択したモデリングモードに応じて、最適な異常検知モデルをDataRobotに選択させるか、リポジトリを介してユーザーが選択します。

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

  3. DataRobotのツールを使って異常検知モデルを評価し、異常スコアが低い行と高い行の例を確認します。 Tools to leverage include Feature Impact, Prediction Explanations, and Anomaly Detection insights.

  4. 元のデータセットのコピーを取るか、適切なスコアリング列を持つ他のスコアリングデータセットを使用し、行を0または1(真の異常を「1」、異常なしを「0」)とラベル付けする「実測値」列を作成します。 このラベルは通常、人間が行を確認した結果に基づいていますが、希望するラベル(既知の不正ラベルなど)でもかまいません。 この列名は一意である必要があります(つまり、手順1の元のトレーニングデータセットで使われていない列名である必要があります)。

  5. 手順4で新たにラベル付けされたデータを、予測 > 予測を作成タブでリーダーボード上の選択されたモデルにアップロードし、外部テストを実行を選択します。

  6. リフトチャートROC曲線にアクセスできるようになりました。 メニュー > リーダーボードオプション > 外部テスト列を表示から、AUCオプションを含め、リーダーボードの評価指標を並べ替えることができます。

  7. 手順2で選択した最上位モデルを再検討し、最終的に選択したモデルを運用環境にデプロイできます。

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

DataRobotオートパイロットは、データセットのサイズなど、データ固有の特性に基づいてブループリントを作成します。 一部のブループリントは、モデリングリソースを大量に消費したり、構築に時間がかかる傾向があるため、リポジトリに自動的に追加されません。 If there are specific anomaly detection blueprints you would like to run but do not see listed in the Repository, try composing them in the blueprint editor. If running the resulting blueprint still consumes too many resources, DataRobot generates model errors or out of memory errors and displays them in the model logs.

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

モデル 説明
Isolation Forest
One Class SVM
Local Outlier Factor(LOF)
Double Median Absolute Deviation(MAD、中央値絶対偏差)
教師あり学習による異常検知(XGB)
Mahalanobis Distance
時系列:ボリンジャーバンド
時系列:ボリンジャーバンド(ローリング)

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

時系列の異常検知

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

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

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

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

時系列の異常検知では、総合AUCという新しい誤差指標手法を使用してリーダーボードモデルのランク付けが行われます。 この誤差指標は、ユースケースに最適なブループリントの決定に役立ちます。 If you want to verify AUC scores, you can upload partially labeled data and create a column to specify known anomalies. DataRobotでは、その部分的にラベル付けされたデータセットを使用して、AUCスコアでリーダーボードをランク付けできます。 部分的にラベル付けされたデータは、トレーニングデータセットの値のサンプルを取得し、実際に異常がある場合に「1」、異常がない場合に「0」のフラグを設定したデータです。

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

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

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

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

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

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

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

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

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

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

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

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

使用例

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

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

クレジットカードトランザクションの大量の行があり、そのごく少数が詐欺または詐欺以外とラベル付けされているとします。ラベル付けされている行では、ラベルにはノイズが含まれており、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スコア特徴量だけを含む特徴量セットに対して実行する必要があります)。
  • 周期性を持つ時系列プロジェクトでは、周期性を適用すると特徴量の削減や処理の優先順位に影響するため、特徴量が多すぎる場合は、季節的特徴量も、時系列で抽出された特徴量セットおよび時系列で有用な特徴量セットに含まれません。

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