Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

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

メモ

ハイパーパラメーターの最適化は過適合モデルになる可能性があるため、分類学習器アプリにデータをインポートする前に個別の検定セットを作成するアプローチが推奨されます。最適化可能なモデルに学習させた後、アプリからそれをエクスポートし、検定セットで性能を確認できます。たとえば、分類学習器アプリでハイパーパラメーターの最適化を使用した分類器の学習を参照してください。

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

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

    メモ

    ハイパーパラメーターの最適化はロジスティック回帰モデルではサポートされません。

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

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

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

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

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

最適化可能なモデルを選択した後、最適化するハイパーパラメーターを選択できます。[モデル タイプ] セクションで [詳細設定]、[詳細設定] を選択します。ダイアログ ボックスが開き、ここで最適化するハイパーパラメーターの [最適化] チェック ボックスを選択できます。[値] で、最適化すべきでないハイパーパラメーターまたは最適化不可能なハイパーパラメーターに対して固定値を指定します。

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

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

  • 分割基準[ジニ多様性指数][Twoing 規則][最大逸脱度減少量] で探索します。

  • 代理決定分岐

  • 各ノードの最大代理

詳細は、ツリーの詳細オプションを参照してください。

最適化可能な判別
  • 判別タイプ[線形][2 次][対角線形]、および [対角二次] で探索します。

 
  • [判別タイプ] の最適化可能なハイパーパラメーターは事前設定されたモデル タイプ ([線形判別] および [2 次判別]) を事前設定されたモデルの [共分散の構造] 詳細オプションを組み合わせます。

詳細は、判別の詳細オプションを参照してください。

最適化可能な単純ベイズ
  • 分布名[ガウス] および [カーネル] 間で探索します。

  • カーネル タイプ[ガウス][ボックス][Epanechnikov]、および [三角形] で探索します。

  • サポート

  • [分布名] の最適化可能なハイパーパラメーターの [ガウス] 値は [ガウス単純ベイズ] モデルを指定します。同様に、[カーネル][分布名] 値は、[カーネル単純ベイズ] モデルを指定します。

詳細は、単純ベイズの詳細オプションを参照してください。

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

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

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

  • マルチクラス手法[1 対 1] および [1 対他] 間で探索します。

  • データの標準化true および false 間で探索します。

 

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

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

詳細は、SVM の詳細オプションを参照してください。

最適化可能な KNN
  • 近傍の数 – 範囲 [1,max(2,round(n/2))] の対数スケールで整数を探索します。ここで、n は観測値の数です。

  • 距離計量 – 以下で探索します。

    • ユークリッド

    • 市街地

    • チェビシェフ

    • ミンコフスキー (3 次)

    • マハラノビス

    • コサイン

    • 相関

    • スピアマン

    • ハミング

    • ジャカード

  • 距離重み付け[イコール][逆数]、および [逆 2 乗] で探索します。

  • 標準化true および false 間で探索します。

 

詳細は、KNN の詳細オプションを参照してください。

最適化可能なアンサンブル
  • アンサンブル法[AdaBoost][RUSBoost][LogitBoost][GentleBoost]、および [バギング] で探索します。

  • 最大分割数 – 範囲 [1,max(2,n–1)] の対数スケールで整数を探索します。ここで、n は観測値の数です。

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

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

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

  • 学習器タイプ

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

  • [LogitBoost] 値および [GentleBoost] 値はバイナリ分類のみで使用できます。

  • [サンプリングする予測子の数] の最適化可能なハイパーパラメーターは事前設定されたアンサンブル モデルの詳細オプションでは使用できません。

  • [サンプリングする予測子の数] の最適化可能なハイパーパラメーターは、[アンサンブル法] 値が [バギング] の場合にのみ最適化できます。[最適化] チェック ボックスをオフにして [サンプリングする予測子の数] の値を指定しない限り、[アンサンブル法][バギング] 以外の値がある場合は、[すべて選択] の既定値が使用されます。

詳細は、アンサンブルの詳細オプションを参照してください。

最適化オプション

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

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

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

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

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

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

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

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

獲得関数

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

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

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

  • 改良の期待量

  • 期待改善量プラス

  • 秒単位の期待改善量

  • 信頼限界の下限

  • 改良の確率

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

反復

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

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

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

最小分類誤差のプロット

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

メモ

最適化可能なモデルに学習させると [並列の使用] ボタンが無効になります。学習が完了した後に最適化不可能なモデルを選択すると、このボタンは再び使用可能になります。既定では、ボタンはオフです。

最小分類誤差のプロットには以下の情報が表示されます。

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

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

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

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

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

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

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

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

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

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

最適化の結果

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

学習済み最適化可能なモデルの最適化結果を調べるには、[履歴] の一覧でモデルを選択し、[現在のモデル] ペインを確認します。

[現在のモデル] ペインには以下のセクションが含まれています。

  • 結果 – 最適化可能なモデルの性能を示します

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

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

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

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

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

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

関連するトピック