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

この記事では、Azure Machine Learning デザイナーの "モデルのハイパーパラメーターの調整" コンポーネントの使用方法について説明します。 目標は、機械学習モデルの最適なハイパーパラメーターを特定することです。 このコンポーネントでは、さまざまな設定の組み合わせを使い、複数のモデルをビルドおよびテストします。 その後、すべてのモデルについてメトリックを比較し、設定の組み合わせを求めます。

"パラメーター" と "ハイパーパラメーター" は混同しやすい用語です。 モデルの "パラメーター" は、コンポーネントの右ペインで設定します。 つまり、このコンポーネントでは、指定されたパラメーター設定に対する "パラメーター スイープ" を行います。 デシジョン ツリー、データセット、回帰方法ごとに異なる可能性がある "ハイパーパラメーター" の最適なセットを学習します。 最適な構成を見つけるプロセスは、"チューニング" と呼ばれることもあります。

このコンポーネントは、モデルの最適な設定を見つけるための方法である、"統合されたトレーニングとチューニング" に対応しています。この方法では、使用するパラメーター セットを自分で設定します。 その後、コンポーネントに複数の組み合わせに対する反復処理を行わせます。 コンポーネントは、"最適な" モデルが見つかるまで正確性の測定を行います。 ほとんどの学習器コンポーネントでは、トレーニング プロセス中に変更する必要があるパラメーターと、固定したままにする必要があるパラメーターを選ぶことができます。

チューニング プロセスの実行に掛ける時間しだいで、すべての組み合わせを網羅的にテストすることができます。 また、パラメーターの組み合わせのグリッドを構築し、このパラメーター グリッドからランダムに抽出したサブセットをテストすれば、プロセスを短時間で終えることもできます。

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

ヒント

関連タスクを実行することをお勧めします。 チューニングを始める前に、特徴選択を適用して、最も高い情報価値を持つ列または変数を特定します。

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

機械学習モデルに最適なハイパーパラメーターを調査するには、パイプラインを相当数使用する必要があります。

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

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

  1. デザイナーで、"モデルのハイパーパラメーターの調整" コンポーネントをパイプラインに追加します。

  2. 未トレーニングのモデルを左端の入力に接続します。

    Note

    モデルのハイパー パラメーターの調整は、組み込みの機械学習アルゴリズム コンポーネントにのみ接続でき、Python モデルの作成でビルドされたカスタム モデルをサポートすることはできません。

  3. トレーニングに使用するデータセットを追加し、[Tune Model Hyperparameters]\(モデルのハイパーパラメーターの調整\) の中間入力に接続します。

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

  4. [Tune Model Hyperparameters]\(モデルのハイパーパラメーターの調整\) の右側のパネルで、 [Parameter sweeping mode]\(パラメーターのスイープ モード\) の値を選択します。 このオプションは、パラメーターの選択方法を制御します。

    • Entire grid (グリッド全体) : このオプションを選ぶと、コンポーネントはシステムによって事前に定義されたグリッドをループし、さまざまな組み合わせを試行して最適な学習器を識別します。 このオプションは、最適なパラメーター設定がわからず、考え得る値の組み合わせすべてを試す必要がある場合に有用です。

    • Random sweep (ランダム スイープ) : このオプションを選ぶと、コンポーネントはシステム定義の範囲からパラメーター値をランダムに選びます。 コンポーネントで実行する最大実行数を指定する必要があります。 このオプションは、選択したメトリックを使用してモデルのパフォーマンスを向上させながら、コンピューティング リソースを節約したい場合に有用です。

  5. [Label column]/(ラベル列/) では、列セレクターを開いて 1 つのラベル列を選択します。

  6. 実行回数を選択します。

    • [Maximum number of runs on random sweep]/(ランダム スイープの最大実行数/) :ランダム スイープを選択した場合、パラメーター値のランダムな組み合わせを使用して、モデルをトレーニングする回数を指定できます。
  7. [Ranking]\(順位付け\) で、モデルの順位付けに使用する 1 つのメトリックを選択します。

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

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

  8. 定義済みの範囲からパラメーター値をランダムに選択するために使用される乱数ジェネレーターの擬似的な状態として、 [Random seed]\(ランダム シード\) に整数値を入力します。 このパラメーターが有効なのは、 [Parameter sweeping mode]\(パラメーターのスイープ モード\)[Random sweep]\(ランダム スイープ\) の場合のみです。

  9. パイプラインを送信します。

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

トレーニングの完了時:

  • スイープの結果を表示するには、コンポーネントを右クリックして [可視化] を選ぶか、コンポーネントの左出力ポートを右クリックして視覚化します。

    [Sweep results]/(スイープ結果/) には、そのモデルの種類のすべてのパラメーター スイープと正確性メトリックが含まれます。どのモデルが "最適" と見なされるかは順位付けに選択したメトリックによって決まります。

  • トレーニング済みのモデルのスナップショットを保存するには、 [モデルのトレーニング] コンポーネントの右側のパネルにある [Outputs+logs] \(出力とログ\) タブを選びます。 [データセットの登録] アイコンを選んで、再利用可能なコンポーネントとしてモデルを保存します。

テクニカル ノート

このセクションでは、実装の詳細とヒントを紹介します。

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

パラメーター スイープの設定時には、検索の範囲を定義します。 検索には、ランダムに選択された有限個のパラメーターを使用できます。 また、定義したパラメーター空間全体で網羅的な検索を行うこともできます。

  • [Random sweep]/(ランダム スイープ/) :このオプションでは、設定した反復回数を使用してモデルをトレーニングします。

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

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

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

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

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

特定のデータセットとモデルで最も効率的なトレーニング方法を決定するための設定のパイプライン処理をお勧めします。

評価メトリックの選択

テストの終了時にはモデルごとの正確性が記載されたレポートが表示され、メトリックの結果を確認できます。

  • 二項分類モデルにはすべて、一貫したメトリック セットが使用されます。
  • 多クラス分類モデルにはすべて、正確性が使用されます。
  • 回帰モデルには、さまざまなメトリック セットが使用されます。

ただし、トレーニング時には、チューニング処理中に生成されるモデルの順位付けに使用する単一のメトリックを選択する必要があります。 ビジネス上の問題や、擬陽性および検知漏れのコストに応じて、最適なメトリックが変わってくる可能性があります。

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

  • 正確性は、全事例に対する真の結果の割合を表します。

  • 精度は、陽性の結果に対する真の結果の割合を表します。

  • 再現率は、すべての結果に対するすべての正しい結果の割合を表します。

  • F スコアは、精度と再現率のバランスを取る尺度を表します。

  • AUC は、偽陽性を x 軸に、真陽性を y 軸にプロットした曲線の下の面積を表す値です。

  • 平均ログ損失は、2 つの確率分布 (真の確率分布とモデル内の確率分布) の間の差を表します。

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

  • 平均絶対誤差は、モデル内のすべての誤差を平均したものです。この "誤差" は、真の値と予測値との隔たりを示します。 しばしば MAE と略記されます。

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

  • 相対絶対誤差は、真の値の割合として誤差を表します。

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

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

パラメーター スイープがサポートされないコンポーネント

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

次のステップ

Azure Machine Learning で使用できる一連のコンポーネントを参照してください。