Main Content

回帰学習器アプリのハイパーパラメーターの最適化

決定木やサポート ベクター マシン (SVM) など、学習させる特定のモデルのタイプを選択した後、別の詳細オプションを選択してモデルを調整できます。たとえば、決定木に対する最小リーフ サイズ、あるいは SVM のボックス制約を変更できます。これらのオプションの一部はモデルの内部パラメーターまたはハイパーパラメーターであり、その性能に大きく影響します。これらのオプションを手動で選択するのではなく、回帰学習器アプリ内でハイパーパラメーターの最適化を使用してハイパーパラメーター値の選択を自動化できます。特定のモデル タイプに対し、アプリではモデルの平均二乗誤差 (MSE) を最小化しようとする最適化法を使用してさまざまなハイパーパラメーター値の組み合わせが試され、最適化されたハイパーパラメーターをもつモデルが返されます。結果のモデルは他の学習済みモデルと同じように使用できます。

メモ

ハイパーパラメーターの最適化によってモデルが過適合になることがあるため、回帰学習器アプリにデータをインポートする前にテスト セットを別途作成することを推奨します。最適化可能なモデルに学習させた後、テスト セットで性能を確認できます。たとえば、回帰学習器アプリのハイパーパラメーターの最適化を使用した回帰モデルの学習を参照してください。

回帰学習器でハイパーパラメーターの最適化を実行するには、以下の手順に従います。

  1. モデル タイプを選択し、最適化するハイパーパラメーターを決定します。最適化するハイパーパラメーターの選択 を参照してください。

    メモ

    ハイパーパラメーターの最適化は線形回帰モデルのモデルではサポートされません。

  2. (オプション) 最適化が実行される方法を指定します。詳細は、最適化オプションを参照してください。

  3. モデルに学習させます。最小 MSE のプロットを使用して最適化の結果を追跡します。

  4. 学習済みモデルを検査します。最適化の結果 を参照してください。

最適化するハイパーパラメーターの選択

回帰学習器アプリで、[学習] タブの [モデル] セクションで矢印をクリックしてギャラリーを開きます。ギャラリーにはハイパーパラメーターの最適化を使用して学習させることができる最適化可能なモデルが含まれます。

最適化可能なモデルを選択した後、最適化するハイパーパラメーターを選択できます。モデルの [概要] タブの [モデルのハイパーパラメーター] セクションで、最適化するハイパーパラメーターの [最適化] チェック ボックスを選択します。[値] で、最適化すべきでないハイパーパラメーターまたは最適化不可能なハイパーパラメーターに対して固定値を指定します。

次の表では、モデルのタイプごとに最適化できるハイパーパラメーターと、各ハイパーパラメーターの検索範囲について説明します。これには固定値を指定できる追加ハイパーパラメーターも含まれています。

モデル最適化可能なハイパーパラメーター追加ハイパーパラメーターメモ:
最適化可能なツリー
  • 最小リーフ サイズ — 範囲 [1,max(2,floor(n/2))] の対数スケールで整数を探索します。ここで、n は観測値の数です。

  • 代理決定分岐

  • 各ノードの最大代理

詳細は、回帰木モデルのハイパーパラメーターのオプションを参照してください。

最適化可能な SVM
  • カーネル関数[ガウス][線形][2 次]、および [3 次] で探索します。

  • ボックス制約 — 範囲 [0.001,1000] の対数スケールで正の値を探索します。

  • カーネル スケール — 範囲 [0.001,1000] の対数スケールで正の値を探索します。

  • イプシロン — 範囲 [0.001,100]*iqr(Y)/1.349 の対数スケールで正の値を探索します。ここで、Y は応答変数です。

  • データの標準化YesNo で探索します。

 

  • [ボックス制約] の最適化可能なハイパーパラメーターは、事前設定された SVM モデルの [ボックス制約モード][手動のボックス制約] 詳細オプションを結合します。

  • [カーネル スケール] の最適化可能なハイパーパラメーターは、事前設定された SVM モデルの [カーネル スケール モード][手動カーネル スケール] 詳細オプションを組み合わせます。

  • [カーネル スケール] の最適化可能なハイパーパラメーターは、[カーネル関数] 値が [ガウス] の場合にのみ最適化できます。[最適化] チェック ボックスをオフにして [カーネル スケール] の値を指定しない限り、[カーネル関数][ガウス] 以外の値がある場合は、既定で 1[手動] 値が使用されます。

  • [イプシロン] の最適化可能なハイパーパラメーターは、事前設定された SVM モデルの [イプシロン モード][手動のイプシロン] 詳細オプションを結合します。

詳細は、SVM モデルのハイパーパラメーターのオプションを参照してください。

最適化できる効率的な線形
  • 学習器[SVM][最小二乗] で探索します。

  • 正則化[リッジ][LASSO] で探索します。

  • 正則化強度 (Lambda) — 範囲 [0.00001/n,100000/n] の対数スケールで正の値を探索します。ここで、n は観測値の数です。

  • ソルバー

  • 係数の相対許容誤差 (ベータ許容誤差)

  • イプシロン

詳細については、効率的に学習させた線形モデルのハイパーパラメーターのオプションを参照してください。

最適化可能な GPR
  • 基底関数[ゼロ][定数]、および [線形] で探索します。

  • カーネル関数 — 以下で探索します。

    • 非等方性有理二次

    • 等方性有理二次

    • 非等方性二乗指数

    • 等方性二乗指数

    • Nonisotropic Matern 5/2

    • Isotropic Matern 5/2

    • Nonisotropic Matern 3/2

    • Isotropic Matern 3/2

    • 非等方性指数

    • 等方性指数

  • カーネル スケール — 範囲 [0.001,1000] の対数スケールで正の値を探索します。

  • シグマ — 範囲 [0.0001,max(0.001,10*std(Y))] の対数スケールで正の値を探索します。ここで、Y は応答変数です。

  • データの標準化[はい][いいえ] で探索します。

  • 信号標準偏差

  • 数値パラメーターの最適化

  • [カーネル関数] の最適化可能なハイパーパラメーターは、事前設定されたガウス過程モデルの [カーネル関数][等方性カーネルを使用] 詳細オプションを結合します。

  • [カーネル スケール] の最適化可能なハイパーパラメーターは、事前設定されたガウス過程モデルの [カーネル モード][カーネル スケール] 詳細オプションを結合します。

  • [シグマ] の最適化可能なハイパーパラメーターは、事前設定されたガウス過程モデルの [シグマ モード][シグマ] 詳細オプションを結合します。

  • 等方性カーネル関数の [カーネル スケール] を最適化するとカーネル スケールのみが最適化され、信号標準偏差は最適化されません。[信号標準偏差] 値を指定するか、その既定値を使用できます。

    非等方性カーネル関数の [カーネル スケール] は最適化できません。

詳細は、ガウス過程回帰モデルのハイパーパラメーターのオプションを参照してください。

最適化可能なカーネル
  • 学習器[SVM][最小二乗カーネル] で探索します。

  • 拡張次元数 — 範囲 [100,10000] の対数スケールで正の整数を探索します。

  • 正則化強度 (Lambda) — 範囲 [0.001/n,1000/n] の対数スケールで正の値を探索します。ここで、n は観測値の数です。

  • カーネル スケール — 範囲 [0.001,1000] の対数スケールで正の値を探索します。

  • イプシロン — 範囲 [0.001,100]*iqr(Y)/1.349 の対数スケールで正の値を探索します。ここで、Y は応答変数です。

  • データの標準化[はい][いいえ] で探索します。

  • 反復制限

詳細については、カーネル モデルのハイパーパラメーターのオプションを参照してください。

最適化可能なアンサンブル
  • アンサンブル法[バギング][LSBoost] で探索します。

  • 最小リーフ サイズ — 範囲 [1,max(2,floor(n/2))] の対数スケールで整数を探索します。ここで、n は観測値の数です。

  • 学習器の数 — 範囲 [10,500] の対数スケールで整数を探索します。

  • 学習率 — 範囲 [0.001,1] の対数スケールで実数値を探索します。

  • サンプリングする予測子の数 — 範囲 [1,max(2,p)] で整数を探索します。ここで、p は予測子変数の数です。

 
  • [アンサンブル法] の最適化可能なハイパーパラメーターの [バギング] 値は [バギング木] モデルを指定します。同様に、[アンサンブル法][LSBoost] 値は [ブースティング木] モデルを指定します。

詳細は、アンサンブル モデルのハイパーパラメーターのオプションを参照してください。

最適化可能なニューラル ネットワーク
  • 全結合層の数12、および 3 全結合層で検索します。

  • 最初の層のサイズ — 範囲 [1,300] の対数スケールで整数を探索します。

  • 2 番目の層のサイズ — 範囲 [1,300] の対数スケールで整数を探索します。

  • 3 番目の層のサイズ — 範囲 [1,300] の対数スケールで整数を探索します。

  • アクティベーション[ReLU][tanh][なし]、および [シグモイド] で探索します。

  • 正則化強度 (Lambda) — 範囲 [0.00001/n,100000/n] の対数スケールで実数値を探索します。ここで、n は観測値の数です。

  • データの標準化[はい][いいえ] で探索します。

  • 反復制限

詳細については、ニューラル ネットワーク モデルのハイパーパラメーターのオプションを参照してください。

最適化オプション

既定では、回帰学習器アプリはベイズ最適化を使用してハイパーパラメーター調整を実行します。ベイズ最適化 (一般に、最適化) の目的は、目的関数を最小化する点を見つけることです。アプリのハイパーパラメーター調整のコンテキストにおいて、点は一連のハイパーパラメーター値であり、目的関数は損失関数または平均二乗誤差 (MSE) です。ベイズ最適化の基本の詳細については、ベイズ最適化のワークフローを参照してください。

ハイパーパラメーター調整が実行される方法を指定できます。たとえば、最適化手法をグリッド探索または学習時間の制限に変更できます。[学習] タブの [オプション] セクションで [オプティマイザー] をクリックします。ダイアログ ボックスが開き、ここで最適化オプションを選択できます。

選択したら、[保存して適用] をクリックします。選択内容は [モデル] ペインのすべての最適化可能なドラフト モデルに影響し、[学習] タブの [モデル] セクションのギャラリーを使用して作成する新しい最適化可能なモデルに適用されます。

単一の最適化可能なモデルの最適化オプションを指定するには、モデルに学習させる前にモデルの概要を開いて編集します。[モデル] ペインでモデルをクリックします。モデルの [概要] タブには、編集可能な [オプティマイザー] セクションが含まれています。

次の表では、使用可能な最適化オプションとそれらの既定値について説明します。

オプション説明
オプティマイザー

オプティマイザーの値は次のとおりです。

  • ベイズ最適化 (既定の設定) – ベイズ最適化を使用します。内部的に、関数 bayesopt が呼び出されます。

  • グリッド探索 – 次元ごとに [グリッド分割数] の値で決定された値の数があるグリッド探索を使用します。グリッドからの一様な非復元抽出により、無作為な順序で探索されます。

  • ランダム探索 – 複数の点で無作為に探索します。点の数は [反復] の値に対応します。

獲得関数

ハイパーパラメーター調整に対してベイズ最適化が実行される場合、獲得関数を使用して次に試すハイパーパラメーター値のセットが決定されます。

獲得関数の値は次のとおりです。

  • 秒単位の期待改善量プラス (既定の設定)

  • 期待改善量

  • 期待改善量プラス

  • 秒単位の期待改善量

  • 信頼限界の下限

  • 改善の確率

これらの獲得関数がベイズ最適化のコンテキストでどのように機能するかの詳細については、獲得関数のタイプを参照してください。

反復

各反復は、試行されるハイパーパラメーター値の組み合わせに対応します。ベイズ最適化または、ランダム探索を使用する場合は、反復回数を設定する正の整数を指定します。既定値は 30 です。

グリッド探索を使用すると、[反復] の値は無視され、グリッド全体の点ごとに損失が評価されます。学習時間制限を設定して最適化プロセスを途中で停止できます。

学習時間制限学習時間制限を設定するには、このオプションを選択し、[最大学習時間 (秒単位)] オプションを設定します。既定では、学習時間制限はありません。
最大学習時間 (秒単位)学習時間制限 (秒単位) を正の実数として設定します。既定値は 300 です。この制限は反復評価を中断させないため、実行時間が学習時間制限を超える可能性があります。
グリッド分割数グリッド探索を使用する場合、数値ハイパーパラメーターごとに試行される値の数として正の整数を設定します。この値は categorical ハイパーパラメーターに対して無視されます。既定値は 10 です。

最小 MSE のプロット

ハイパーパラメーターで最適化するモデルを指定し、追加の最適化オプションを設定した後 (オプション)、最適化可能なモデルに学習させます。[学習] タブの [学習] セクションで、[すべてを学習] をクリックして [選択を学習] を選択します。[最小 MSE のプロット] が作成され、最適化が実行されると更新されます。

Minimum MSE Plot of an optimizable ensemble model

最小平均二乗誤差 (MSE) のプロットには以下の情報が表示されます。

  • 推定された最小 MSE – 薄い青の各点は、最適化プロセスで計算された最小 MSE の推定値に対応し、それまで試行されたすべてのハイパーパラメーター値のセット (現在の反復を含む) が考慮されます。

    推定値は、[最良点ハイパーパラメーター] の説明にあるように、現在の MSE の目的関数モデルの信頼区間の上限に基づいています。

    グリッド探索またはランダム探索を使用してハイパーパラメーターの最適化を実行する場合、これらの薄い青の点は表示されません。

  • 観測された最小 MSE – 濃い青の各点は、それまでに最適化プロセスで計算された、観測された最小 MSE に対応します。たとえば、3 回目の反復では、青の点は 1 回目、2 回目、および 3 回目の反復で観測された最小 MSE に対応します。

  • 最良点ハイパーパラメーター – 赤色の正方形は最適化されたハイパーパラメーターに対応する反復を示します。[最適化の結果] の下でプロットの右上に一覧表示されている最適化されたハイパーパラメーターの値を見つけることができます。

    最適化されたハイパーパラメーターが常に観測された最小 MSE を提供するとは限りません。このアプリがベイズ最適化を使用してハイパーパラメーター調整を実行すると (簡単な説明については、最適化オプションを参照)、MSE を最小化するハイパーパラメーター値のセットではなく、MSE 目的関数モデルの信頼区間の上限を最小化するセットが選択されます。詳細については、bestPoint の名前と値の引数 "Criterion","min-visited-upper-confidence-interval" を参照してください。

  • 最小誤差ハイパーパラメーター – 黄色の点は、観測された MSE が最小になるハイパーパラメーターに対応する反復を示しています。

    詳細については、bestPoint の名前と値の引数 "Criterion","min-observed" を参照してください。

    グリッド探索を使用してハイパーパラメーターの最適化を実行する場合、[最良点ハイパーパラメーター][最小誤差ハイパーパラメーター] は同じです。

プロットで欠損している点は NaN 最小 MSE 値に対応します。

最適化の結果

アプリがモデルのハイパーパラメーターの調整を終了すると、最適化されたハイパーパラメーターの値 ([最良点ハイパーパラメーター]) で学習されたモデルが返されます。モデル メトリクスはプロットとして表示され、エクスポートされたモデルはハイパーパラメーターの固定値をもつ、この学習済みモデルに対応します。

学習済み最適化可能なモデルの最適化結果を調べるには、[モデル] ペインでモデルを選択し、モデルの [概要] タブを確認します。

Summary tab of an optimizable ensemble model

[概要] タブには以下のセクションが含まれています。

  • 学習結果 – 最適化可能なモデルの性能を示します。[概要] タブと [モデル] ペインでのモデル メトリクスの表示を参照してください。

  • モデルのハイパーパラメーター – 最適化可能なモデルのタイプを表示し、ハイパーパラメーターの固定値をすべて一覧表示します

    • 最適化されたハイパーパラメーター – 最適化されたハイパーパラメーターの値を一覧表示します

    • ハイパーパラメーターの検索範囲 – 最適化されたハイパーパラメーターの検索範囲を表示します

  • オプティマイザー – 選択したオプティマイザーのオプションを示します

モデル化するベイズ最適化を使用してハイパーパラメーター調整を実行し、学習済みの最適化可能なモデルを構造体としてワークスペースにエクスポートすると、構造体の HyperParameterOptimizationResult フィールドには BayesianOptimization オブジェクトが格納されます。オブジェクトには実行された最適化の結果が含まれています。

学習済み最適化可能なモデルから MATLAB® コードを生成すると、生成されたコードはモデルの最適化されたハイパーパラメーターの固定値を使用して新しいデータで学習します。生成されたコードに最適化プロセスは含まれません。近似関数の使用時にベイズ最適化を実行する方法の詳細については、近似関数を使用したベイズ最適化を参照してください。

関連するトピック