モデルのハイパーパラメーターの調整
重要
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 (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
モデルに対してパラメーター スイープを実行し、最適なパラメーター設定を決めます
カテゴリ: Machine Learning/トレーニング
注意
適用対象: Machine Learning Studio (クラシック) のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では、Machine Learning Studio (クラシック) でモデルハイパーパラメーターの調整モジュールを使用して、特定の機械学習モデルに最適なハイパーパラメーターを決定する方法について説明します。 このモジュールは、さまざまな設定の組み合わせを使用して複数のモデルを構築およびテストし、すべてのモデルのメトリックを比較して設定の組み合わせを取得します。
"パラメーター" と "ハイパーパラメーター" は混同しやすい用語です。 モデルの "パラメーター" は、プロパティ ウィンドウで設定します。 このモジュールは基本的に、指定されたパラメーター設定に対して "パラメーター スイープ" を実行し、最適な "ハイパーパラメーター" のセットを学習します。これは特定のデシジョン ツリー、データセット、または回帰方法ごとに異なる場合があります。 最適な構成を見つけるプロセスは、"チューニング" と呼ばれることもあります。
このモジュールでは、モデルに最適な設定を見つけ出す 2 つの方法がサポートされています。
統合されたトレーニングとチューニング: 使用するパラメーターのセットを構成し、モジュールで複数の組み合わせを反復処理し、"最適な" モデルが見つからるまで精度を測定します。 ほとんどの学習器モジュールでは、トレーニング プロセス中に変更する必要があるパラメーターと、固定したままにする必要があるパラメーターを選択できます。
チューニング プロセスを実行する期間によっては、すべての組み合わせを徹底的にテストするか、パラメーターの組み合わせのグリッドを確立し、パラメーター グリッドのランダム化されたサブセットをテストすることでプロセスを短縮することもできます。
チューニングによるクロス検証: このオプションを使用すると、データをいくつかのフォールドに分割し、各フォールドでモデルを構築してテストします。 この方法は、最適な精度を提供し、データセットに関する問題を見つけるのに役立ちます。ただし、トレーニングには時間がかかります。
どちらの方法でも、再使用のために保存できるトレーニング済みのモデルが生成されます。
関連タスク
クラスタリング モデルを構築する場合は、 Sweep Clustering を使用して、クラスターの最適な数と他のパラメーターを自動的に決定します。
チューニングの前に、特徴選択を適用して、最も高い情報値を持つ列または変数を決定します。 詳しくは、「 Feature Selection」をご覧ください。
モデルのハイパーパラメーターの調整を構成する方法
一般に、特定の機械学習モデルに最適なハイパーパラメーターを学習するには、かなりの実験が必要です。 このモジュールでは、初期チューニング プロセスと、モデルの精度をテストするためのクロス検証の両方がサポートされています。
パラメーター スイープを使用してモデルをトレーニングする
このセクションでは、モデルハイパーパラメーターの調整モジュールを使用してモデルをトレーニングする基本的なパラメーター スイープを実行する 方法について説明 します。
Studio ( クラシック) の実験にモデル ハイパーパラメーターの調整モジュールを追加します。
Connectモデル (iLearner 形式のモデル) を左端の入力に追加します。
[Create trainer mode]/(トレーナー モードの作成/) オプションを [Parameter Range]/(パラメーター範囲/) に設定し、範囲ビルダーを使用して、パラメーター スイープで使用する値の範囲を指定します。
ほぼすべての分類モジュールと回帰モジュールで、統合されたパラメーター スイープがサポートされています。 パラメーター範囲の構成をサポートしていない学習器の場合、使用可能なパラメーター値のみをテストできます。
1 つ以上のパラメーターの値を手動で設定し、残りのパラメーターをスイープすることができます。 これにより、時間が節約できることがあります。
トレーニングに使用するデータセットを追加し、モデルのハイパーパラメーターの調整の中間入力に接続します。
タグが付けられたデータセットがある場合は、必要に応じて、それを右端の入力ポート (オプションの検証データセット) に接続できます。 これにより、トレーニングおよびチューニング中に正確性を測定できます。
[モデル ハイパーパラメーター の 調整] の [プロパティ] ウィンドウで、[パラメーター スイープ モード ] の値を選択します。 このオプションは、パラメーターの選択方法を制御します。
- [Entire grid]/(グリッド全体/) :このオプションを選択すると、モジュールはシステムによって事前に定義されたグリッドをループし、さまざまな組み合わせを試行して最適な学習器を識別します。 このオプションは、最適なパラメーター設定がわからず、すべての可能な値の組み合わせを試す必要がある場合に便利です。
グリッドのサイズを小さくし、ランダムグリッド スイープ を実行 できます。 調査によると、この方法では同じ結果が得られますが、計算効率が高いという結果が得られます。
- [Random sweep]/(ランダム スイープ/) :このオプションを選択すると、モジュールはシステム定義の範囲からパラメーター値をランダムに選択します。 モジュールで実行する最大実行数を指定する必要があります。 このオプションは、選択したメトリックを使用してモデルのパフォーマンスを向上させながら、コンピューティング リソースを節約したい場合に便利です。
[Label column]/(ラベル列/) では、列セレクターを起動して 1 つのラベル列を選択します。
モデルを順位付けするときに使用する 1 つのメトリックを選択します。
パラメーター スイープを実行すると、モデルの種類に適用可能なすべてのメトリックが計算され、[Sweep results]/(スイープ結果/) レポートに返されます。 回帰モデルと分類モデルでは、別々のメトリックが使用されます。
ただし、選択したメトリックによって、モデルの順位付け方法が決まります。 スコアリングに使用するトレーニング済みモデルとして出力されるのは、選択したメトリックによって順位付けされた最上位モデルだけです。
[Random seed]/(ランダム シード/) には、パラメーター スイープを初期化するときに使用する数値を入力します。
統合パラメーター スイープをサポートするモデルをトレーニングする場合は、ランダム シードを使用して反復処理するシード値の範囲を設定することもできます。 これは、シード選択によって生まれる偏りを回避するために役立ちます。
実験を実行します。
ハイパーパラメーターの調整の結果
トレーニングの完了時:
最適なモデルの一連の正確性メトリックを表示するには、モジュールを右クリックし、[Sweep results]/(スイープ結果/) を選択し、[Visualize]/(視覚化/) を選択します。
モデルの種類に適用されるすべての正確性メトリックが出力されますが、順位付けのために選択したメトリックによって、どのモデルが "最適" と見なされるかが決まります。 メトリックは、上位ランクのモデルに対してのみ生成されます。
"最適な" モデルの派生設定を表示するには、モジュールを右クリックし、[トレーニング済みの最適なモデル] を選択して、[視覚化] をクリックします。 レポートには、入力列のパラメーター設定と特徴の重み付けが含まれています。
チューニング プロセスを繰り返さずに、他の実験でスコアリングにモデルを使用するには、モデルの出力を右クリックし、[ トレーニング済みモデルとして保存] を選択します。
パラメーター スイープを使用してクロス検証を実行する
このセクションでは、パラメーター スイープとクロス検証を組み合わせる方法について説明します。 このプロセスには時間がかかりますが、フォールドの数を指定すると、データセットと可能なモデルに関する最大量の情報を取得できます。
実験に パーティションとサンプル モジュールを追加し、トレーニング データを接続します。
[フォールド に割り当てる ] オプションを選択し、データを分割するフォールドの数を指定します。 数値を指定しない場合、既定では 10 フォールドが使用されます。 行は、置換なしで、これらのフォールドにランダムに並び替えされます。
一部の列でサンプリングのバランスを取る場合は、 階層 分割を TRUE に設定し、 strata 列を選択します。 たとえば、データセットが不均衡な場合は、各フォールドが同じ数のマイノリティ ケースを取得するデータセットを分割できます。
モデルハイパー パラメーターの調整モジュールを 実験に追加します。
Connectの機械学習モジュールの 1 つを、モデルハイパーパラメーターの調整の左側の入力に設定します。
学習器の [プロパティ] ウィンドウで、[トレーナー モードの作成] オプションを [パラメーターの範囲] に設定し、範囲ビルダーを使用して、パラメーター スイープで使用する値の範囲を指定します。
すべての値の範囲を指定する必要はありません。 一部のパラメーターの値を手動で設定し、残りのパラメーターをスイープできます。 これにより、時間が節約できることがあります。
このオプションをサポートしない学習者の一覧については、「テクニカル ノート」 セクションを参照 してください。
Connectとサンプルの出力を、モデルハイパーパラメーターの調整のラベル付きトレーニング データセット入力に設定します。
必要に応じて、検証データセットをチューニング モデル ハイパーパラメーターの右端の入力 に接続できます。 クロス検証の場合は、トレーニング データセットだけが必要です。
[モデル の ハイパーパラメーター の調整] の [プロパティ] ウィンドウで、ランダム スイープとグリッド スイープの実行を指定します。 グリッド スイープは網羅的ですが、時間がかかります。 ランダムなパラメーター検索では、非常に多くの時間を取ることなく、優れた結果を得ることができます。
ランダムスイープでの最大実行数: ランダムスイープを選択した場合は、パラメーター値のランダムな組み合わせを使用して、モデルをトレーニングする回数を指定できます。
[ランダムグリッドでの実行の最大数]: このオプションは、パラメーター値のランダムサンプリングに対する反復回数も制御しますが、値は指定された範囲からランダムに生成されません。代わりに、すべての可能なパラメーター値の組み合わせがマトリックスとして作成され、ランダムサンプリングがマトリックスで取得されます。 この方法は、より効率的であり、リージョンによるオーバーサンプリングやアンダーサンプリングが起きにくくなります。
ヒント
これらのオプションの詳細については、「 テクニカルノート 」を参照してください。
1つのラベル列を選択します。
モデルの順位付けに使用する 1 つ のメトリックを選択します。 多くのメトリックが計算されるので、結果の順序付けに使用する最も重要なメトリックを選択します。
[Random seed]/(ランダム シード/) には、パラメーター スイープを初期化するときに使用する数値を入力します。
統合パラメータースイープをサポートするモデルをトレーニングしている場合は、使用するシード値の範囲を設定し、ランダムシードも反復処理することができます。 これは省略可能ですが、シード選択によって導入されたバイアスを回避するのに役立ちます。
モデルの クロス検証 モジュールを追加します。 パーティションとサンプルの出力をデータセット入力に Connect し、チューニングモデルのハイパーパラメーターの出力を未トレーニングのモデル入力に接続します。
実験を実行します。
クロス検証の結果
クロス検証の完了時:
評価結果を表示するには、モジュールを右クリックし、[ 折りたたみで評価結果] を選択して、[ 視覚化] を選択します。
精度の指標は、クロス検証パスから計算されます。選択したフォールドの数によって多少異なる場合があります。
データセットがどのように分割されたか、および "最適" モデルがデータセットの各行を評価する方法を確認するには、モジュールを右クリックし、[スコア付けの 結果] を選択し、[ 視覚化] を選択します。
後で再利用するためにこのデータセットを保存した場合、フォールドの割り当ては保持されます。 たとえば、保存されている datsaet は次のようになります。
フォールドの割り当て クラス Age (1 番目の特徴列) 2 0 35 1 1 17 3 0 62 "最適" モデルのパラメーター設定を取得するには、[モデルのチューニング] [ハイパーパラメーター ] を右クリックします。
例
このモジュールの使用方法の例については、 Azure AI Galleryを参照してください。
学生の成績の予測: 2 クラスブーストデシジョンツリー アルゴリズムを異なるパラメーターと共に使用して、最適なルート平均二乗誤差 (RMSE) でモデルを生成します。
カウントを使用したラーニング:二項分類: カウントベースの学習を使用してコンパクトな一連の機能を生成し、パラメータースイープを適用して最適なモデルパラメーターを検索します。
二項分類: ネットワークの侵入検出: クロス検証モードでのモデルハイパーパラメーターのチューニングを使用し、カスタム分割を5つのフォールドに分割して、 2 クラスのロジスティック回帰モデルに最適なハイパーパラメーターを見つけます。
テクニカル ノート
このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。
パラメーター スイープのしくみ
ここでは、パラメータースイープが一般的にどのように機能するか、およびこのモジュールのオプションがどのように対話するかについて説明します。
パラメーター スイープを設定するときは、ランダムに選択された有限数のパラメーターを使用するか、定義したパラメーター空間に対して包括的な検索を行うように、検索範囲を定義します。
[ランダムスイープ]: このオプションは、設定したイテレーションの数を使用してモデルをトレーニングします。
反復処理する値の範囲を指定すると、モジュールはそれらの値からランダムに選択されたサブセットを使用します。 値は置換によって選択されます。つまり、以前にランダムに選択した数値は、使用可能な数値のプールから削除されません。 このため、値が選択される確率は、すべてのパスで同じままになります。
[グリッドスイープ]: このオプションでは、指定した値の範囲内のパラメーターのすべての組み合わせを含むマトリックス (グリッド) が作成されます。 このモジュールでチューニングを開始すると、これらのパラメーターの組み合わせを使用して複数のモデルがトレーニングされます。
グリッド全体: グリッド全体を使用するオプションは、そのすべての組み合わせがテストされることを意味します。 このオプションは、最も徹底的なものと考えることができますが、最も時間がかかります。
[ランダムグリッド]: このオプションを選択すると、すべての組み合わせのマトリックスが計算され、指定したイテレーションの数に対してマトリックスから値がサンプリングされます。
最近の調査では、ランダムスイープのパフォーマンスがグリッドスイープよりも優れていることが示されています。
トレーニングの長さと複雑さの制御
設定の多くの組み合わせに対する反復処理は時間がかかる可能性があるため、このモジュールにはプロセスを制限するいくつかの方法が用意されています。
- モデルのテストに使用する反復の回数を制限する
- パラメーター空間を制限する
- イテレーションの数値とパラメーター空間の両方を制限する
特定のデータセットとモデルで最も効率的なトレーニング方法を決定するために、設定を試してみることをお勧めします。
評価メトリックの選択
メトリックの結果を確認できるように、各モデルの正確性を含むレポートが最後に表示されます。 すべての分類モデルに対して一貫したメトリックセットが使用され、回帰モデルでは異なるメトリックセットが使用されます。 ただし、トレーニング時には、チューニング処理中に生成されるモデルの順位付けに使用する単一のメトリックを選択する必要があります。 ビジネス上の問題や、擬陽性や検知漏れのコストによって、最適なメトリックが異なる場合があります。
詳細については、「 Machine Learning でモデルのパフォーマンスを評価する方法」を参照してください。
分類に使用されるメトリック
Accuracy (正確性): 全事例に対する真の結果の割合。
Precision (精度): 正の結果に対する真の結果の割合。
Recall (再現率): すべての結果に対するすべての正しい結果の割合。
F-score (F スコア): 精度と再現率のバランスを取る尺度。
AUC: 偽陽性が x 軸にプロットされ、真陽性が y 軸にプロットされたときの曲線の下の面積を表す値。
Average Log Loss (平均対数損失): 2 つの確率分布 (真の確率分布とモデル内の確率分布) の間の差。
ログ損失のトレーニング ランダムな予測に対してモデルによって提供される改善。
回帰に使用されるメトリック
平均絶対誤差 モデル内のすべてのエラーを平均します。 error は、true 値から予測値までの距離を示します。 しばしば MAE と略記されます。
平均二乗誤差の根 誤差の2乗の平均を測定し、その値のルートを取得します。 しばしば RMSE と略記されます
相対絶対誤差 エラーを true 値に対する割合として表します。
相対二乗誤差 予測値の合計二乗誤差で除算することで、合計二乗誤差を正規化します。
決定係数は、データがモデルにどの程度適合しているかを示す 1 つの数値です。 値1は、モデルがデータと完全に一致することを意味します。値0は、データがランダムであるか、モデルに適合しないことを意味します。 r2、R2、または r の 2 乗と呼ばれることもよくあります。
パラメーター スイープをサポートしないモジュール
Machine Learning のほとんどすべての学習器は、統合されたパラメータースイープを使用したクロス検証をサポートしています。これにより、実験するパラメーターを選択できます。 学習器が値の範囲の設定をサポートしていない場合でも、それをクロス検証で使用できます。 この場合、スイープに対して使用できる値の範囲が選択されます。
次の学習器では、パラメータースイープで使用する値の範囲の設定はサポートされていません。
想定される入力
名前 | 型 | 説明 |
---|---|---|
未トレーニング モデル | ILearner インターフェイス | パラメーター スイープの未トレーニング モデル |
トレーニング データセット | データ テーブル | トレーニングの入力データセット |
検証データセット | データ テーブル | 検証用入力データセット (トレーニングおよびテスト検証モード用)。 この入力は省略可能です。 |
モジュールのパラメーター
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
パラメーター スイープ モードの指定 | 一覧 | Sweep メソッド | ランダム スイープ | パラメーター空間のグリッド全体をスイープします。または、限定した数のサンプル実行を使用してスイープします |
ランダム スイープの最大実行数 | [1;10000] | Integer | 5 | ランダム スイープを使用して実行の最大数を実行します |
Random seed (ランダム シード) | any | Integer | 0 | 乱数ジェネレーターのシード値を指定します |
ラベル列 | any | ColumnSelection | ラベル列 | |
分類のパフォーマンスを測定するためのメトリック | 一覧 | 二項分類メトリックの種類 | 精度 | 分類モデルの評価に使用するメトリックを選択します |
回帰のパフォーマンスを測定するためのメトリック | 一覧 | RegressionMetric 型 | 平均絶対誤差 | 回帰モデルの評価に使用するメトリックを選択します |
出力
名前 | 型 | 説明 |
---|---|---|
スイープ結果 | データ テーブル | パラメーター スイープ実行の結果メトリック |
最適なトレーニング済みモデル | ILearner インターフェイス | トレーニング データセットに最適なパフォーマンスのモデル |