モデルのハイパーパラメーターの調整

モデルに対してパラメーター スイープを実行し、最適なパラメーター設定を決めます

カテゴリ: Machine Learning/トレーニング

注意

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

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

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) の モデルハイパーパラメーターの調整 モジュールを使用して、特定の機械学習モデルに最適なハイパーパラメーターを決定する方法について説明します。 このモジュールは、さまざまな設定の組み合わせを使用して複数のモデルを構築およびテストし、すべてのモデルのメトリックを比較して設定の組み合わせを取得します。

"パラメーター" と "ハイパーパラメーター" は混同しやすい用語です。 モデルの "パラメーター" は、プロパティ ウィンドウで設定します。 このモジュールは基本的に、指定されたパラメーター設定に対して "パラメーター スイープ" を実行し、最適な "ハイパーパラメーター" のセットを学習します。これは特定のデシジョン ツリー、データセット、または回帰方法ごとに異なる場合があります。 最適な構成を見つけるプロセスは、"チューニング" と呼ばれることもあります。

モジュールは、モデルに最適な設定を見つけるための2つの方法をサポートしています。

  • トレーニングと調整の統合: 使用する一連のパラメーターを構成し、モジュールが複数の組み合わせを反復処理して、"最適" モデルが見つかるまで精度を測定することができます。 ほとんどの学習器モジュールでは、トレーニング プロセス中に変更する必要があるパラメーターと、固定したままにする必要があるパラメーターを選択できます。

    チューニングプロセスを実行する期間によっては、すべての組み合わせを徹底的にテストすることもできます。また、パラメーターの組み合わせのグリッドを設定し、パラメーターグリッドのランダム化されたサブセットをテストして、プロセスを短縮することもできます。

  • チューニングによるクロス検証: このオプションを使用すると、データをいくつかのフォールドに分割し、各フォールドでモデルをビルドしてテストします。 この方法では、最適な精度が得られ、データセットの問題を見つけるのに役立ちます。しかし、トレーニングに時間がかかります。

どちらの方法でも、再利用のために保存できるトレーニング済みのモデルが生成されます。

  • クラスターモデルを構築する場合は、 スイープクラスタリング を使用して、最適なクラスター数とその他のパラメーターを自動的に決定します。

  • チューニングの前に、特徴選択を適用して、最も高い情報値を持つ列または変数を決定します。 詳しくは、「 Feature Selection」をご覧ください。

モデルのハイパーパラメーターの調整を構成する方法

一般に、特定の機械学習モデルに最適なハイパーパラメーターを学習するには、かなりの実験が必要です。 このモジュールは、初期チューニングプロセスと、テストモデルの精度のクロス検証の両方をサポートしています。

パラメータースイープを使用してモデルをトレーニングする

このセクションでは、モデル ハイパーパラメーターの調整 モジュールを使用してモデルをトレーニングする基本的なパラメータースイープを実行する方法について説明します。

  1. Studio (クラシック) で実験に モデルハイパーパラメーターのチューニング モジュールを追加します。

  2. トレーニングされていないモデル ( il、 その形式のモデル) を左端の入力に接続します。

  3. [Create trainer mode]/(トレーナー モードの作成/) オプションを [Parameter Range]/(パラメーター範囲/) に設定し、範囲ビルダー を使用して、パラメーター スイープで使用する値の範囲を指定します。

    ほとんどすべての 分類 および 回帰 モジュールで、統合されたパラメータースイープがサポートされています。 パラメーター範囲の構成をサポートしていない学習器の場合、使用可能なパラメーター値のみをテストできます。

    1 つ以上のパラメーターの値を手動で設定し、残りのパラメーターをスイープすることができます。 これにより、時間が節約できることがあります。

  4. トレーニングに使用するデータセットを追加し、モデルのハイパーパラメーターの調整の中間入力に接続します。

    タグが付けられたデータセットがある場合は、必要に応じて、それを右端の入力ポート (オプションの検証データセット) に接続できます。 これにより、トレーニングおよびチューニング中に正確性を測定できます。

  5. [モデルハイパーパラメーターの調整] の [プロパティ] ペインで、[パラメータースイープモード] の値を選択します。 このオプションは、パラメーターの選択方法を制御します。

    • [Entire grid]/(グリッド全体/) :このオプションを選択すると、モジュールはシステムによって事前に定義されたグリッドをループし、さまざまな組み合わせを試行して最適な学習器を識別します。 このオプションは、最適なパラメーター設定がわからず、すべての可能な値の組み合わせを試す必要がある場合に便利です。

    また、グリッドのサイズを縮小し、 ランダムなグリッド スイープを実行することもできます。 この方法では同じ結果が得られますが、より効率的な計算であることが調査によって示されています。

    • [Random sweep]/(ランダム スイープ/) :このオプションを選択すると、モジュールはシステム定義の範囲からパラメーター値をランダムに選択します。 モジュールで実行する最大実行数を指定する必要があります。 このオプションは、選択したメトリックを使用してモデルのパフォーマンスを向上させながら、コンピューティング リソースを節約したい場合に便利です。
  6. [Label column]/(ラベル列/) では、列セレクターを起動して 1 つのラベル列を選択します。

  7. モデルを 順位付け するときに使用する 1 つのメトリックを選択します。

    パラメーター スイープを実行すると、モデルの種類に適用可能なすべてのメトリックが計算され、[Sweep results]/(スイープ結果/) レポートに返されます。 回帰モデルと分類モデルでは、別々のメトリックが使用されます。

    ただし、選択したメトリックによって、モデルの順位付け方法が決まります。 スコアリングに使用するトレーニング済みモデルとして出力されるのは、選択したメトリックによって順位付けされた最上位モデルだけです。

  8. [Random seed]/(ランダム シード/) には、パラメーター スイープを初期化するときに使用する数値を入力します。

    統合パラメータースイープをサポートするモデルをトレーニングしている場合は、使用するシード値の範囲を設定し、ランダムシードも反復処理することができます。 これは、シード選択によって導入されたバイアスを回避するために役立ちます。

  9. 実験を実行します。

ハイパーパラメーターの調整の結果

トレーニングの完了時:

  • 最適なモデルの一連の正確性メトリックを表示するには、モジュールを右クリックし、[Sweep results]/(スイープ結果/) を選択し、[Visualize]/(視覚化/) を選択します。

    モデルの種類に適用されるすべての正確性メトリックが出力されますが、順位付けのために選択したメトリックによって、どのモデルが "最適" と見なされるかが決まります。 メトリックは、上位ランクのモデルに対してのみ生成されます。

  • "最適" モデルに対して派生した設定を表示するには、モジュールを右クリックし、[トレーニング済みの 最適なモデル] を選択して、[ 視覚化] をクリックします。 このレポートには、入力列のパラメーター設定と特徴の重みが含まれています。

  • 他の実験でスコア付けにモデルを使用するには、チューニングプロセスを繰り返す必要がありません。モデルの出力を右クリックし、[トレーニング済みの モデルとして保存] を選択します。

パラメータースイープを使用してクロス検証を実行する

このセクションでは、パラメータースイープとクロス検証を組み合わせる方法について説明します。 この処理には時間がかかりますが、フォールドの数を指定すると、データセットと可能なモデルに関する情報の最大量を取得できます。

  1. パーティションとサンプルモジュールを実験に追加し、トレーニングデータを接続します。

  2. [フォールド に割り当て ] オプションを選択し、データを分割するフォールド数を指定します。 数値を指定しない場合、既定では10個のフォールドが使用されます。 行は、置換されることなく、これらのフォールドにランダムに分配されます。

  3. 一部の列でサンプリングのバランスを取るには、 層化 splitTRUE に設定してから、[層] を選択します。 たとえば、負荷分散されたデータセットがある場合は、各フォールドが同じ数の少数派ケースを取得するようにデータセットを分割することが必要になる場合があります。

  4. 実験に モデルハイパーパラメーターの調整 モジュールを追加します。

  5. このカテゴリの機械学習モジュールのいずれかを、チューニングモデルハイパーパラメーターの左側の入力に接続します。

  6. 学習器の プロパティ ペインで、[ トレーナーモードの作成 ] オプションを [ パラメーター範囲 ] に設定し、 範囲ビルダー を使用してパラメータースイープで使用する値の範囲を指定します。

    すべての値の範囲を指定する必要はありません。 いくつかのパラメーターの値を手動で設定し、残りのパラメーターをスイープすることができます。 これにより、時間が節約できることがあります。

    このオプションをサポートしていない学習器の一覧については、「 テクニカルノート 」を参照してください。

  7. パーティションとサンプルの出力を、"チューニングモデルハイパーパラメーター" というラベルが付いた トレーニングデータセット 入力に接続します。

  8. 必要に応じて、検証データセットを、 チューニングモデルのハイパーパラメーターの右端の入力に接続できます。 クロス検証では、トレーニングデータセットのみが必要です。

  9. [モデルハイパーパラメーターの調整] の [プロパティ] ペインで、ランダムスイープとグリッドスイープのどちらを実行するかを指定します。 グリッドスイープは包括的ですが、時間がかかります。 ランダムパラメーター検索では、非常に多くの時間を費やすことなく、良好な結果を得ることができます。

    ランダムスイープでの最大実行数: ランダムスイープを選択した場合は、パラメーター値のランダムな組み合わせを使用して、モデルをトレーニングする回数を指定できます。

    [ランダムグリッドでの実行の最大数]: このオプションは、パラメーター値のランダムサンプリングに対する反復回数も制御しますが、値は指定された範囲からランダムに生成されません。代わりに、すべての可能なパラメーター値の組み合わせがマトリックスとして作成され、ランダムサンプリングがマトリックスで取得されます。 この方法は、より効率的であり、リージョンによるオーバーサンプリングやアンダーサンプリングが起きにくくなります。

    ヒント

    これらのオプションの詳細については、「 テクニカルノート 」を参照してください。

  10. 1つのラベル列を選択します。

  11. モデルの順位付けに使用する 1 つ のメトリックを選択します。 多くのメトリックが計算されるので、結果の順序付けに使用する最も重要なメトリックを選択します。

  12. [Random seed]/(ランダム シード/) には、パラメーター スイープを初期化するときに使用する数値を入力します。

    統合パラメータースイープをサポートするモデルをトレーニングしている場合は、使用するシード値の範囲を設定し、ランダムシードも反復処理することができます。 これは省略可能ですが、シード選択によって導入されたバイアスを回避するのに役立ちます。

  13. モデルの クロス検証 モジュールを追加します。 パーティションとサンプルの出力を データセット 入力に接続し、チューニングモデルのハイパーパラメーターの出力を未 トレーニングのモデル 入力に接続します。

  14. 実験を実行します。

クロス検証の結果

クロス検証の完了時:

  • 評価結果を表示するには、モジュールを右クリックし、[ 折りたたみで評価結果] を選択して、[ 視覚化] を選択します。

    精度の指標は、クロス検証パスから計算されます。選択したフォールドの数によって多少異なる場合があります。

  • データセットがどのように分割されたか、および "最適" モデルがデータセットの各行を評価する方法を確認するには、モジュールを右クリックし、[スコア付けの 結果] を選択し、[ 視覚化] を選択します。

  • 後で再利用するためにこのデータセットを保存した場合、フォールドの割り当ては保持されます。 たとえば、保存されている datsaet は次のようになります。

    フォールドの割り当て クラス Age (1 番目の特徴列)
    2 0 35
    1 1 17
    3 0 62
  • "最適" モデルのパラメーター設定を取得するには、[モデルのチューニング] [ハイパーパラメーター ] を右クリックします。

このモジュールの使用方法の例については、 Azure AI Galleryを参照してください。

テクニカル ノート

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

パラメーター スイープのしくみ

このセクションでは、パラメーター スイープの一般的な動作と、このモジュールのオプションの相互作用について説明します。

パラメーター スイープを設定するときは、ランダムに選択された有限数のパラメーターを使用するか、定義したパラメーター空間に対して包括的な検索を行うように、検索範囲を定義します。

  • 反復処理する値の範囲を指定すると、モジュールはそれらの値からランダムに選択されたサブセットを使用します。 値は置換によって選択されます。つまり、以前にランダムに選択した数値は、使用可能な数値のプールから削除されません。 このため、値が選択される確率は、すべてのパスで同じままになります。

  • [グリッドスイープ]: このオプションでは、指定した値の範囲内のパラメーターのすべての組み合わせを含むマトリックス (グリッド) が作成されます。 このモジュールでチューニングを開始すると、これらのパラメーターの組み合わせを使用して複数のモデルがトレーニングされます。

  • グリッド全体: グリッド全体を使用するオプションは、そのすべての組み合わせがテストされることを意味します。 このオプションは、最も徹底的なものと考えることができますが、最も時間がかかります。

  • 最近の調査では、ランダムスイープのパフォーマンスがグリッドスイープよりも優れていることが示されています。

トレーニングの長さと複雑さの制御

設定の多くの組み合わせに対する反復処理は時間がかかる可能性があるため、このモジュールにはプロセスを制限するいくつかの方法が用意されています。

  • モデルのテストに使用する反復の回数を制限する
  • パラメーター空間を制限する
  • イテレーションの数値とパラメーター空間の両方を制限する

特定のデータセットとモデルで最も効率的なトレーニング方法を決定するために、設定を試してみることをお勧めします。

評価メトリックの選択

メトリックの結果を確認できるように、各モデルの正確性を含むレポートが最後に表示されます。 すべての分類モデルに対して一貫したメトリックセットが使用され、回帰モデルでは異なるメトリックセットが使用されます。 ただし、トレーニング時には、チューニング処理中に生成されるモデルの順位付けに使用する 単一の メトリックを選択する必要があります。 ビジネス上の問題や、擬陽性や検知漏れのコストによって、最適なメトリックが異なる場合があります。

詳細については、「 Azure Machine Learning でモデルのパフォーマンスを評価する方法」を参照してください。

分類に使用されるメトリック

  • Accuracy (正確性): 全事例に対する真の結果の割合。

  • Precision (精度): 正の結果に対する真の結果の割合。

  • Recall (再現率): すべての結果に対するすべての正しい結果の割合。

  • F-score (F スコア): 精度と再現率のバランスを取る尺度。

  • AUC: 偽陽性が x 軸にプロットされ、真陽性が y 軸にプロットされたときの曲線の下の面積を表す値。

  • Average Log Loss (平均対数損失): 2 つの確率分布 (真の確率分布とモデル内の確率分布) の間の差。

  • ログ損失のトレーニング ランダムな予測に対してモデルによって提供される改善。

回帰に使用されるメトリック

  • 平均絶対誤差 モデル内のすべてのエラーを平均します。 error は、true 値から予測値までの距離を示します。 しばしば MAE と略記されます。

  • 平均二乗誤差の根 誤差の2乗の平均を測定し、その値のルートを取得します。 しばしば RMSE と略記されます

  • 相対絶対誤差 エラーを true 値に対する割合として表します。

  • 相対二乗誤差 予測値の合計二乗誤差で除算することで、合計二乗誤差を正規化します。

  • 決定係数 は、データがモデルにどの程度適合しているかを示す 1 つの数値です。 値1は、モデルがデータと完全に一致することを意味します。値0は、データがランダムであるか、モデルに適合しないことを意味します。 r 2R 2、または r の 2 乗 と呼ばれることもよくあります。

パラメーター スイープをサポートしないモジュール

Azure Machine Learning のほとんどすべての学習器は、統合されたパラメータースイープを使用したクロス検証をサポートしています。これにより、実験するパラメーターを選択できます。 学習器が値の範囲の設定をサポートしていない場合でも、それをクロス検証で使用できます。 この場合、スイープに対して使用できる値の範囲が選択されます。

次の学習器では、パラメータースイープで使用する値の範囲の設定はサポートされていません。

想定される入力

名前 Type 説明
未トレーニング モデル ILearner インターフェイス パラメーター スイープの未トレーニング モデル
トレーニング データセット データ テーブル トレーニングの入力データセット
検証データセット データ テーブル 検証用入力データセット (トレーニングおよびテスト検証モード用)。 この入力は省略可能です。

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

名前 Range Type Default 説明
パラメーター スイープ モードの指定 List スイープメソッド ランダム スイープ パラメーター空間のグリッド全体をスイープします。または、限定した数のサンプル実行を使用してスイープします
ランダム スイープの最大実行数 [1; 10000] Integer 5 ランダム スイープを使用して実行の最大数を実行します
Random seed (ランダム シード) any Integer 0 乱数ジェネレーターのシード値を指定します
ラベル列 any ColumnSelection ラベル列
分類のパフォーマンスを測定するためのメトリック List 二項分類メトリックの種類 精度 分類モデルの評価に使用するメトリックを選択します
回帰のパフォーマンスを測定するためのメトリック List RegressionMetric 型 平均絶対誤差 回帰モデルの評価に使用するメトリックを選択します

出力

名前 Type 説明
スイープ結果 データ テーブル パラメーター スイープ実行の結果メトリック
最適なトレーニング済みモデル ILearner インターフェイス トレーニング データセットに最適なパフォーマンスのモデル

関連項目

A-z モジュールリスト
指導
モデルのクロス検証