PCA ベースの異常検出

主成分分析を使用して、異常検出モデルを作成します

カテゴリ: 異常検出

注意

適用対象: Machine Learning Studio (クラシック)

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) で Pca ベースの異常検出 モジュールを使用して、主要なコンポーネント分析 (pca) に基づいた異常検出モデルを作成する方法について説明します。

このモジュールは、有効なトランザクションなど、1つのクラスからトレーニングデータを簡単に取得できるが、対象となる異常のサンプルを十分に取得することが困難なシナリオでモデルを構築するのに役立ちます。

たとえば、不正なトランザクションを検出するために、多くの場合、トレーニングに十分な例がありませんが、適切なトランザクションの例が多数あります。 PCA ベースの異常検出 モジュールは、使用可能な機能を分析して "normal" クラスの構成要素を特定し、異常を表すケースを特定するための距離メトリックを適用して、問題を解決します。 これにより、既存の均衡データを使用してモデルをトレーニングできます。

主成分分析の詳細

主要なコンポーネント分析 は、一般に PCA と略記されていますが、機械学習では確立された手法です。 PCA を使用してデータの内部構造を明らかにし、データの偏差を分析できるため、探索データの分析で頻繁に使用されます。

PCA は、複数の変数を含むデータを分析することで機能します。 変数間の相関関係を探し、結果の違いを最もよく把握できる値の組み合わせを決定します。 これらの組み合わされた特徴値は、"主成分" と呼ばれる、よりコンパクトな特徴空間を作成するために使用されます。

異常検出の場合は、新しい入力が分析され、異常検出アルゴリズムが正規化された再構築エラーと共に固有ベクトルに対して射影を計算します。 正規化されたエラーは、異常スコアとして使用されます。 エラーのスコアが高いほど、より異常なインスタンスになります。

PCA のしくみ、および異常検出の実装に関する詳細については、次のホワイトペーパーを参照してください。

PCA 異常検出を構成する方法

  1. PCA ベースの異常検出 モジュールを、Studio (クラシック) の実験に追加します。 このモジュールは、[異常検出] カテゴリの [ Machine Learning]、[モデルの初期化] の下にあります。

  2. PCA ベースの異常検出 モジュールの プロパティ ペインで、[トレーニングモード] オプションをクリックし、特定のパラメーターセットを使用してモデルをトレーニングするか、パラメータースイープを使用して最適なパラメーターを検索するかを指定します。

    • 単一パラメーター: モデルを構成する方法がわかっている場合は、このオプションを選択し、特定の値のセットを引数として指定します。

    • [パラメーターの範囲]: 最適なパラメーターがわからず、パラメータースイープを使用する場合は、[モデルハイパーパラメーターの調整] モジュールを使用します。 トレーナーは、指定された一連の設定に対して反復処理を行い、最適な結果を生成する設定の組み合わせを決定します。

  3. Pca で使用するコンポーネントの 数、 pca コンポーネントの数の範囲: 出力する出力機能 (コンポーネント) の数を指定します。

    含めるコンポーネントの数を決定することは、PCA を使用した実験設計の重要な部分です。 一般的なガイダンスは、変数と同じ数の PCA 成分を含めないようにすることです。 代わりに、いくつかのコンポーネントの数を減らし、いくつかの条件が満たされるまでそれらを増やす必要があります。

    最適な値がわからない場合は、 パラメーター範囲 オプションを使用して異常検出モデルをトレーニングすることをお勧めします。

    出力成分の数が、データセットで使用できる特徴列の数 より小さい 場合に、最適な結果が得られます。

  4. ランダム化された PCA トレーニング中に実行するオーバーサンプリングの量を指定します。 異常検出の問題の場合、不均衡データでは、標準の PCA 手法を適用することが困難になります。 オーバーサンプリングの量を指定することで、ターゲット インスタンスの数を増やすことができます。

    1 を指定した場合、オーバーサンプリングは実行されません。 1 より大きい値を指定すると、モデルのトレーニングに使用する追加のサンプルが生成されます。

    パラメータースイープを使用しているかどうかによって、次の2つのオプションがあります。

    • ランダム PCA のオーバーサンプリング パラメーター:通常クラスに対する少数派クラスのオーバーサンプリングの比率を表す、単一の整数を入力します ( 単一パラメーター トレーニング方法を使用する場合に使用できます)。
    • ランダム化された PCA で使用されるオーバーサンプリングパラメーターの範囲: 試行する一連の数値を入力するか、範囲ビルダーを使用してスライダーを使用して値を選択します。 ( パラメーター範囲 のトレーニング方法を使用する場合にのみ使用できます)。

    注意

    オーバーサンプリングされたデータセットを表示することはできません。 PCA でのオーバーサンプリングの使用方法の詳細については、「 テクニカルノート」を参照してください。

  5. 入力特徴の平均正規化を有効 にする: すべての入力特徴を平均ゼロに正規化するには、このオプションを選択します。 PCA の目的は変数間の分散を最大化することであるため、一般に、PCA ではゼロへの正規化またはスケーリングをお勧めします。

    既定では、このオプションはオンになっています。 別の方法またはスケールを使用して値が既に正規化されている場合は、このオプションの選択を解除します。

  6. タグ付けされたトレーニングデータセットとトレーニングモジュールのいずれかを接続します。

    注意

    異常検出モデルをトレーニングするパラメーター範囲を渡すと、パラメーター範囲リストの最初の値のみが使用されます。

    パラメーター値の1つのセットを チューニングモデルのハイパーパラメーター モジュールに渡す場合、各パラメーターに設定の範囲が必要になると、値が無視され、学習器の既定値が使用されます。

    [ パラメーター範囲 ] オプションを選択し、任意のパラメーターに1つの値を入力した場合は、他のパラメーターが値の範囲で変更された場合でも、スイープ全体で単一の値が使用されます。

  7. 実験を実行するか、モジュールを選択して [ 選択した ものを実行] をクリックします。

結果

トレーニングが完了したら、トレーニング済みのモデルを保存するか、 モデルのスコア 付けモジュールに接続して異常スコアを予測することができます。

異常検出モデルの結果を評価するには、いくつかの追加の手順が必要です。

  1. 両方のデータセットでスコア列が使用可能であることを確認する

    異常検出モデルを評価して、"スコア付けされたデータセットにスコア列がありません" というエラーが表示された場合は、ラベル列を含むが確率スコアを含まない一般的な評価データセットを使用していることを意味します。 異常検出モデルのスキーマ出力と一致するデータセットを選択する必要があります。これには、 スコア付けラベルスコア付け確率 列が含まれます。

  2. ラベル列がマークされていることを確認する

    場合によっては、ラベル列に関連付けられているメタデータが実験グラフで削除されることがあります。 この場合、[ モデルの評価 ] モジュールを使用して2つの異常検出モデルの結果を比較すると、"スコア付けされたデータセットにラベル列がありません" または "比較するスコア付けされたデータセットにラベル列がありません" というエラーが表示されることがあります。

    このエラーを回避するには、モデルの評価モジュールの前にメタデータの編集モジュールを追加します。 列セレクターを使用して [クラス] 列を選択し、[ フィールド ] ボックスの一覧で [ ラベル] を選択します。

  3. さまざまな種類のモデルからスコアを正規化する

    PCA の異常検出モデルの予測は、常に [0, 1] の範囲に含まれています。 これに対し、 1 クラスの SVM モジュールからの出力は、バインドされていない可能性がある uncalibrated スコアです。

    そのため、異なるアルゴリズムに基づいてモデルを比較する場合は、常にスコアを正規化する必要があります。 さまざまな異常検出モデルの正規化の例については、Azure AI Gallery の例を参照してください。

異常検出で PCA を使用する方法の例については、 Azure AI Galleryを参照してください。

  • 異常検出: クレジットリスク: データ内の外れ値を見つける方法を示します。 この例では、パラメータースイープを使用して最適なモデルを検索します。 次に、そのモデルを新しいデータに適用して、不正を表す可能性のある危険なトランザクションを識別し、2つの異なる異常検出モデルを比較します。

テクニカル ノート

このアルゴリズムでは、PCA を使用して、通常のクラスを含むサブ空間を概算します。 部分空間は、データ共分散行列の上位の固有値に関連付けられている固有ベクトルにまたがります。 異常検出機能では、新しい入力ごとに、まず、固有ベクトルへの射影を計算してから、正規化された再構築エラーを計算します。 このエラーが異常スコアです。 エラーのスコアが高いほど、より異常なインスタンスになります。 通常の領域の計算方法の詳細については、「Wikipedia:プリンシパルコンポーネントの分析」を参照してください。

モジュールのパラメーター

名前 Type Range 省略可能 説明 Default
トレーニング モード CreateLearnerMode List: 1 つのパラメーター|パラメーター範囲 必須 単一パラメーター 学習器オプションを指定します。

手動ですべての値を指定するには、SingleParameter オプションを使用します。

調整可能なパラメーターをスイープするには、ParameterRange オプションを使用します。
PCA で使用する成分数 Integer mode:Single Parameter 2 PCA で使用する成分数を指定します。
ランダム PCA のオーバーサンプリング パラメーター Integer mode:Single Parameter 2 ランダム PCA トレーニングの精度パラメーターを指定します。
特徴の平均正規化の入力を有効にします ロジックの種類 List: True|False 必須 False 入力データが 0 平均に正規化されているかどうかを指定します。
PCA の成分数の範囲 ParameterRangeSettings [1; 100] mode:Parameter Range 34/44/68種類 PCA で使用する成分数の範囲を指定します。
ランダム PCA で使用するオーバーサンプリング パラメーターの範囲 ParameterRangeSettings [1; 100] mode:Parameter Range 34/44/68種類 ランダム PCA トレーニングで使用する精度パラメーターの範囲を指定します。

出力

名前 Type 説明
未トレーニング モデル ILearner インターフェイス トレーニングされていない PCA ベースの異常検出モデル

例外

例外 説明
エラー 0017 指定した 1 つ以上の列の型が現在のモジュールでサポートされていない場合に、例外が発生します。
エラー 0062 学習器の種類が異なる 2 つのモデルを比較しようとすると、例外が発生します。
エラー 0047 モジュールに渡された一部のデータセットの特徴列の数が少なすぎる場合、例外が発生します。

Studio (クラシック) モジュール固有のエラーの一覧については、「 Machine Learning エラーコード」を参照してください。

API 例外の一覧については、「 Machine Learning REST API のエラーコード」を参照してください。

関連項目

1 クラス サポート ベクター マシン