1 クラス サポート ベクター マシン
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
異常検出用の 1 クラス サポート ベクター マシン モデルを作成します
カテゴリ: 異常検出
注意
適用対象: Machine Learning Studio (クラシック)のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では Machine Learning Studio (クラシック) の1 クラスサポートベクターモデルモジュールを使用して、異常検出モデルを作成する方法について説明します。
このモジュールは、"通常の" データが多数あり、検出しようとしている異常のケースが多くない場合に特に便利です。 たとえば、不正なトランザクションを検出する必要がある場合、一般的な分類モデルのトレーニングに使用できる不正行為の例が多くない可能性がありますが、適切なトランザクションの例が多数ある可能性があります。
1 クラスサポートベクターモデルモジュールを使用してモデルを作成した後、[異常検出のトレーニング] モデルを使用してモデルをトレーニングします。 トレーニングに使用するデータセットには、すべてまたはほとんどの通常のケースを含めることができます。
その後、さまざまなメトリックを適用して、潜在的な異常を特定できます。 たとえば、適切なトランザクションの大規模なデータセットを使用して、不正なトランザクションを表す可能性があるケースを特定できます。
1クラスの SVM の詳細
サポート ベクター マシン (SVM) は教師あり学習モデルで、データを分析してパターンを認識し、分類と回帰タスクの両方に使用できます。
通常、SVM アルゴリズムには、2つのクラスのいずれかに属しているというラベルの付いたトレーニング例のセットが与えられます。 SVM モデルは、トレーニングのサンプルポイントを可能な限り広い範囲で個別のカテゴリに分割することに基づいています。一方、ギャップの間違った側にあるペナルティトレーニングサンプルです。 SVM モデルでは、ギャップの一方の側にポイントを割り当てることで予測を行います。
オーバーサンプリングは、既存のサンプルをレプリケートするために使用されることがあります。これにより、2クラスのモデルを作成できますが、不正アクセスやシステム障害の新しいパターンを、限られた例から予測することはできません。 さらに、制限された例のコレクションにはコストがかかる可能性もあります。
そのため、1クラスの SVM では、サポートベクターモデルは、"normal" クラスのクラスを1つだけ持つデータに対してトレーニングされます。 通常の例とは異なり、これらのプロパティから通常のケースのプロパティを推測し、これらのプロパティから例を予測することができます。 これは異常検出に役立ちます。これは、トレーニング例の通知が異常を定義することです。つまり、通常、ネットワークの侵入、不正行為、またはその他の異常な動作の例はほとんどありません。
基本的な調査へのリンクなど、詳細については、「 テクニカルノート 」を参照してください。
注意
1 クラス サポート ベクター モデル モジュールはカーネル SVM モデルを作成し、これは高度にスケーラブルではないことを意味します。 トレーニング時間が限られている場合、またはデータが多すぎる場合は、 PCA ベースの異常検出など、異常検出のために他の方法を使用できます。
One-Class SVM を構成する方法
Studio (クラシック) で、 1 クラスサポートベクターモデル モジュールを実験に追加します。 [異常検出] カテゴリの [ Machine Learning-初期化] の下にモジュールがあります。
1 クラスサポートベクターモデルモジュールをダブルクリックして、[プロパティ] ペインを開きます。
[ トレーナーの作成] モードでは、モデルのトレーニング方法を示すオプションを選択します。
Single Parameter (単一パラメーター) : モデルの構成方法がわかっている場合はこのオプションを使用し、特定の値のセットを引数として渡します。
パラメーター範囲: 最適なパラメーターがわからない場合に、最適な構成を見つけるためにパラメータースイープを実行する場合は、このオプションを使用します。
η: 外れ値の割合の上限を表す値を入力します。 このパラメーターは、 このホワイトペーパーに記載されている、「ニュー」プロパティに対応しています。 [ニュー] プロパティを使用すると、外れ値と通常のケースの間のトレードオフを制御できます。
ε (イプシロン): 停止の許容範囲として使用する値を入力します。 停止の許容範囲は、モデルを最適化するときに使用されるイテレーションの数に影響し、停止条件の値に依存します。 値を超えた場合、トレーナーはソリューションの反復処理を停止します。
トレーニング データセットと、次のいずれかのトレーニング モジュールを接続します。
- [ トレーナーモードの作成 ] を [ 単一パラメーター] に設定した場合は、[ 異常検出モデルのトレーニング ] モジュールを使用します。
- [Create trainer mode]\(トレーナー モードの作成\) を [Parameter Range]\(パラメーター範囲\) を設定する場合は、[Tune Model Hyperparameters]\(モデルのハイパーパラメーターの調整\) モジュールを使用します。
注意
異常検出モデルをトレーニングするパラメーター範囲を渡すと、パラメーター範囲リストの最初の値のみが使用されます。
[Tune Model Hyperparameters]\(モデルのハイパーパラメーターの調整\) モジュールによって、パラメーターごとに設定の範囲が求められているとき、それに単一のパラメーター値セットを渡した場合、それらの値は無視され、学習器の既定値が使用されます。
[ パラメーター範囲 ] オプションを選択し、任意のパラメーターに1つの値を入力した場合は、他のパラメーターが値の範囲で変更された場合でも、スイープ全体で単一の値が使用されます。
実験を実行します。
結果
モジュールは、トレーニング済みの異常検出モデルを返します。 ワークスペースにモデルを保存するか、モデルの スコア 付けモジュールに接続して、トレーニング済みのモデルを使用して異常を検出することができます。
パラメータースイープを使用してモデルをトレーニングした場合は、実稼働環境で使用するモデルを構成するときに使用する最適なパラメーター設定をメモしておいてください。
例
異常検出でこのモジュールを使用する方法の例については、 Azure AI Galleryを参照してください。
- 異常検出: クレジットリスク: このサンプルでは、パラメータースイープを使用して最適なモデルを見つけることで、データ内の外れ値を検出する方法を示します。 次に、そのモデルを新しいデータに適用して、不正を表す可能性のある危険なトランザクションを識別し、2つの異なる異常検出モデルを比較します。
テクニカル ノート
1 クラスの SVMからの予測は uncalibrated スコアであり、バインドされていない可能性があります。 Cortana Intelligence Gallery の例で示すように、異なるアルゴリズムに基づいてモデルを比較する場合は、スコアを必ず正規化してください。
研究
この実装では、 libsvmという名前のサポートベクターマシンのライブラリをラップします。 をベースとする libsvm
一般的な理論と、1クラスのサポートベクターマシンに向けたアプローチについては、これらのホワイトペーパーで Schӧlkopf et al に記載されています。
モジュールのパラメーター
名前 | 種類 | Range | 省略可能 | 説明 | Default |
---|---|---|---|---|---|
トレーナー モードの作成 | トレーナー モードの作成 | List:Single Parameter|Parameter Range | 必須 | 単一パラメーター | 学習器オプションを指定します。 手動ですべての値を指定するには、SingleParameter オプションを使用します。 調整可能なパラメーターをスイープするには、ParameterRange オプションを使用します。 |
nu | Float | >=double.Epsilon | mode:Single Parameter | 0.1 | このパラメーター (ギリシャ文字のニューで表されます) によって、外れ値の割合とサポートベクターの数の間のトレードオフが決まります。 |
epsilon | Float | >=double.Epsilon | mode:Single Parameter | 0.001 | 停止許容誤差を指定します。 |
psnu | ParameterRangeSettings | [0.001; 1.0] | mode:Parameter Range | 0.001;0.01;0.1 | 外れ値の割合とサポート ベクター数の間のトレードオフの範囲を指定します。 |
psEpsilon | ParameterRangeSettings | [1e-6;1.0] | mode:Parameter Range | 0.001;0.01;0.1 | 停止許容誤差の範囲を指定します。 |
出力
名前 | 型 | 説明 |
---|---|---|
未トレーニング モデル | ILearner インターフェイス | 未トレーニングの異常検出モデル |