2 クラスのローカル詳細サポート ベクター マシン

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

ローカル詳細サポート ベクター マシン アルゴリズムを使用して二項分類モデルを作成します

カテゴリ: Machine Learning / モデルの初期化 / 分類

注意

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

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

モジュールの概要

この記事では、Machine Learning Studio (クラシック) の 2 クラス ローカルディープ サポート ベクター マシン モジュールを使用して、効率的な予測用に最適化された 2 クラスの非線形サポート ベクター マシン (SVM) 分類子を作成する方法について説明します。

サポート ベクター マシン (SVM) は非常に人気があり、よく研究されているクラスの教師あり学習モデルで、線形と非線形の分類タスクで使用できます。 最近の研究では、より大規模なトレーニング セットに合わせて効率的に拡大できるようにこれらのモデルを最適化する方法に重点が置かれています。 Microsoft Research からのこの実装では、特徴領域へのデータ ポイントのマッピングで使用されるカーネル関数は、ほとんどの分類精度を維持しながらトレーニングに必要な時間を短縮するように特別に設計されています。

このモデルは教師あり学習方法であるため、ラベル列を含む タグ付きデータセットが必要です。

モデル パラメーターを定義したら、モデルとタグ付けされたデータセットをトレーニング モデル または チューニング モデル ハイパーパラメーターへの入力として指定してトレーニングします。 その後は、トレーニング済みのモデルを使用して、新しい入力の値を予測することができます。

ローカルにディープ サポート ベクター マシンTwo-Class構成する方法

  1. Studio (クラシック) の実験 に 2 クラス Locally-Deep サポート ベクター マシン モジュールを追加します。

  2. [Create trainer mode]\(トレーナー モードの作成\) オプションを設定して、モデルのトレーニング方法を指定します。

    • Single Parameter (単一パラメーター) : モデルの構成方法を決めている場合は、特定の値のセットを引数として渡します。

    • パラメーター範囲: 最適なパラメーターがわからない場合は、複数の値を指定し、 Tune Model Hyperparameters モジュールを使用して最適な構成を見つけることで、最適なパラメーターを見つけることができます。 トレーナーは、指定した設定の複数の組み合わせを反復処理し、最適なモデルを生成する値の組み合わせを決定します。

  3. [ツリーの深さ] には、ローカル ディープ カーネル 学習 SVM (LD-SVM) モデルで作成できるツリーの最大深度を指定します。

    トレーニング コストはツリーの深さに対して直線的に増えるため、モデルの作成に費やす余裕のある時間に応じて適切な深さを選択してください。

    深さが 1 単位増すごとに、トレーニングの時間は、ほぼ 2 倍になります。

    予測精度が上がり、ピークに達したら、その後深さが増すごとに下がっていきます。

  4. Lambda W の場合は、正則化用語に指定する必要がある重みを指定します。

    正則化により、トレーニング済み分類器の大きな値のコンポーネントが制限されます。 特徴数に対してサンプル数が十分でない場合は、オーバーフィットを避けるために L2 正則化を使用できます。 ラムダ W の値が大きいほど、分類子の重みの正則化に重点が置かれ、トレーニング セット分類エラーが少なくなります。

    既定値 (0.1) が適切に機能しない場合は、{0.0001, 0.001 および 0.1} も試してください。

  5. Lambda Theta の場合は、リージョン境界と最も近いデータ ポイントの間に残す領域の量を指定します。

    このモデルは、データ領域と特徴領域を複数の領域に分割することで機能します。 トレーニング済みモデルの領域の境界がトレーニング データ ポイントに近すぎるように Lambda Theta が最小化されると、モデルではトレーニング エラーが低くなりますが、オーバーフィットによるテスト エラーが高くなる可能性があります。

    検証する必要があるパラメーターの数を減らすには、 Lambda Theta を LambdaW に使用される値の 10 分の 1 に設定することをお勧めします。値が大きいほど、トレーニング セット内の分類エラーを最小限に抑えるよりも、オーバーフィットの防止に重点が置かれます。

    既定値 (0.01) が適切に機能しない場合は、{0.0001, 0.001 および 0.1} も試してください。

  6. Lambda Theta Prime の場合は、モデル内の決定境界で許容される曲率の量を制御する値を入力します。

    値を大きくすると、モデルは曲線の決定境界を柔軟に学習できます。一方、小さい値を指定すると、決定境界が段階的な線形パターンに制限される可能性があります。

    このパラメーターは Sigma パラメーターと組み合わせて機能します。 検証する必要があるパラメーターの数を減らすには、確かな経験則から、[ラムダ シータ プライム] を [ラムダ W] の値の 10 分の 1 に設定することをお勧めします。

    既定値 (0.01) が適切に機能しない場合は、{0.0001, 0.001 および 0.1} も試してください。

  7. [Sigmoid のシャープネス] には、スケーリング パラメーターのσに使用する値を入力します。

    値が大きいほど、ローカル カーネル Θ (θ) の tanh が飽和しますが、小さい方が θ の動作範囲がより線形であることを意味します。 完全な最適化の数式については、「 テクニカル ノート」 セクションを参照してください。

    既定値 (1) が適切に機能しない場合は、{0.1、0.01、0.001} を試すこともできます。

  8. [ 反復回数] で、アルゴリズムが分類子パラメーターをランダムな例のサブセットで更新する必要がある回数を示します。

  9. 特徴ノーマライザーの場合は、特徴値の正規化に使用する方法を選択します。 以下のメソッドがサポートされています。

    • ビン分割ノーマライザー: ビン分割ノーマライザーは、同じサイズのビンを作成し、各ビンのすべての値をビンの合計数で除算するように正規化します。

    • ガウスノーマライザー:ガウスノーマライザーは、各特徴の値を再スケーリングして、平均が0、分散が1になります。 これは、各特徴の平均と分散を計算することによって行われます。 次に、各インスタンスについて、平均値を減算し、結果を分散の平方根 (標準偏差) で除算します。

    • 最小最大ノーマライザー: 最小最大ノーマライザーは、すべての特徴を [0,1] 間隔に線形的に再スケーリングします。

      最小値が 0 になるように、各機能の値がシフトされ、新しい最大値 (元の最大値と最小値の差) で区切られることで、[0,1] 間隔に縦横比が変更されます。

    • 正規化しない: 正規化は実行されません。

  10. 実行全体で再現性を確保する場合は、[ 乱数シード] に、シードとして使用する値を入力します。

  11. [ Allow unknown categorical levels]\(不明なカテゴリ レベルを許可 する\) オプションを選択して、テスト セットまたは検証セットで不明な値のグループを作成します。

    これを選択解除した場合、モデルはトレーニング データに含まれる値のみを受け入れることができます。 前者の場合、既知の値に対するモデルの精度は低下するものの、新しい (不明な) 値に対する予測精度は向上する可能性があります。

  12. タグ付けされたデータセットとトレーニング モジュールの 1 つをConnectします。

    注意

    パラメーター範囲を [モデルのトレーニング] に渡すと、パラメーター範囲リストの 1 番目の値のみが使用されます。

    [Tune Model Hyperparameters]\(モデルのハイパーパラメーターの調整\) モジュールによって、パラメーターごとに設定の範囲が求められているとき、それに単一のパラメーター値セットを渡した場合、それらの値は無視され、学習器の既定値が使用されます。

    [Parameter Range]\(パラメーター範囲\) オプションを選択し、任意のパラメーターに単一の値を入力した場合、指定した単一の値はスイープ全体で使用されます。これは、他のパラメーターが値の範囲の中で変化する場合でも同様です。

  13. 実験を実行します。

結果

トレーニングの完了後:

  • モデルのパラメーターの概要を表示するには、[ モデルのトレーニング ] モジュールまたは [モデルハイパーパラメーターの調整 ] モジュールの出力を右クリックし、[ 視覚化] を選択します。

  • トレーニング済みモデルのスナップスナップショットを保存するには、 トレーニング済みモデル の出力を右クリックし、[ トレーニング済みモデルとして保存] を選択します。 同じ実験を連続で実行しても、このモデルは更新されません。

  • ラベル付きデータ セットに対してクロス検証を実行するには、トレーニングされていないモデルを モデルのクロス検証に接続します。

テクニカル ノート

このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。

使用上のヒント

この LD-SVM 分類子は、次の条件下で最も役立ちます。

  • 二項分類に問題があるか、二項分類タスクの問題を減らすことができる。

  • 線形分類子を試したが、正しく実行されなかった。

  • 非線形 SVM やその他の分類器を試し、分類精度は適切だったが、モデルのトレーニングに時間がかかりすぎた。

  • トレーニングの時間を短縮するために予測精度を下げる余裕がある。

データが複雑で線形のモデル (ロジスティック回帰など) のパフォーマンスが低下する場合、LD-SVM モデルは適切な選択です。 また、LD-SVM モデルは、ニューラル ネットワークなど、複雑なモデルが大きすぎて効率的に使用されないモバイル デバイスなどのシナリオで使用するのに適した小さいモデルです。

対照的に、モデルのサイズを考慮しない場合や、簡便性や予測速度が線形のモデルに必要とされる場合は、このモデルは使用しないでください。 線形分類子が既に良好な結果を得ている場合や、少量の非線形性を追加することで高い分類精度を得ることができる場合は、LD-SVM に変更する意味もありません。

実装の詳細

LD-SVM モデルは、非線形 SVM 予測を高速化するための継続的な取り組みの一環として、Microsoft Research によって開発されました。 Localized Multiple Kernel Learning 法に対する Gonen および Alpaydin の取り組み (2008) は特に有益でした。 モデルでローカル カーネル関数を使用することで、モデルに非線形を導入する、高次元でスパースな詳細計算機能を含む、任意のローカルの特徴の埋め込みについての学習が可能になります。

LD-SVM が他のほとんどの分類子より高速であることには、次のようにいくつかの理由があります。

  • モデルはローカルに線形である決定境界を学習します。 そのため、特徴領域全体にわたる一連の決定境界全体ではなく、ローカルの決定境界に対してテストを行い、テスト ポイントを効率的に分類できます。

  • モデルは効率的なプライマルベースのルーチンを使用して、トレーニング ポイントが 50 万を超える大規模なトレーニング セットに合わせてツリー構造のローカルの特徴の埋め込み領域を最適化します。

  • ローカルの決定境界に対するポイントのテスト コストはトレーニング ポイント数の対数です。

これらの最適化の結果として、LD-SVM モデルのトレーニングは従来の SVM モデルのトレーニングよりも大幅に高速になります。

最適化の数式

optimization formula

研究

アルゴリズムと基になる調査の詳細については、「効率的な非線形 SVM 予測のためのローカル ディープ カーネル ラーニング」を参照してください。

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

名前 Range Type Default 説明
トレーナー モードの作成 List 学習器パラメーターのオプション 単一パラメーター 高度な学習器オプション:

1. 1 つのパラメーターを使用して学習者を作成する
2. パラメーター範囲を使用して学習器を作成する
ツリーの深さ >=1 Integer 3 ローカル詳細 SVM ツリーの深度。
ラムダ W >=1.401298E-45 Float 0.1 分類子パラメーター ラムダ W の正則化の重み。
ラムダ シータ >=1.401298E-45 Float 0.01 分類子パラメーター ラムダ シータの正則化の重み。
ラムダ シータ プライム >=1.401298E-45 Float 0.01 分類器パラメーター ラムダ シータ プライムの正則化の重み。
シグモイドの鮮明度 >=1.401298E-45 Float 1.0 シグモイドの鮮明度。
ツリーの深さ [1;int.MaxValue] ParameterRangeSettings 1;3;5;7 ローカル詳細 SVM ツリーの深さの範囲。
ラムダ W [1.401298E-45;3.40282347E+38] ParameterRangeSettings 0.1;0.01;0.001 分類子パラメーター ラムダ W の正則化の重みの範囲。
ラムダ シータ [1.401298E-45;3.40282347E+38] ParameterRangeSettings 0.1;0.01;0.001 分類子パラメーター ラムダ シータの正則化の重みの範囲。
ラムダ シータ プライム [1.401298E-45;3.40282347E+38] ParameterRangeSettings 0.1;0.01;0.001 分類器パラメーター ラムダ シータ プライムの正則化の重みの範囲。
シグモイドの鮮明度 [1.401298E-45;3.40282347E+38] ParameterRangeSettings 1.0;0.1;0.01 シグモイド鮮明度の範囲。
特徴のノーマライザー List ノーマライザーの種類 最小最大ノーマライザー 学習例に適用する正規化の種類。
イテレーション数 >=1 Integer 15000 学習のイテレーションの数。
イテレーション数 [1;int.MaxValue] ParameterRangeSettings 10000;15000;20000 学習のイテレーションの数の範囲。
乱数シード Any Integer モデルで使用される乱数ジェネレーターのシードです。 既定の場合は空白のままにします。
不明なカテゴリ レベルの許可 Any Boolean True True の場合、各カテゴリ列の追加レベルを作成します。 トレーニング データセットでは使用できないテスト データセットのレベルはすべて、この追加レベルにマップされます。

出力

名前 Type 説明
未トレーニング モデル ILearner インターフェイス 未トレーニング二項分類モデル

関連項目

分類
モジュールの一覧 (アルファベット順)