Main Content

分類学習器から実験マネージャーへのモデルのエクスポート

分類学習器で分類モデルに学習させた後、実験を複数実行するためにモデルを実験マネージャーにエクスポートできます。既定では、実験マネージャーは、分類学習器で最適化可能なモデルに学習させる場合と同様のプロセスで、ベイズ最適化を使用してモデルを調整します。(詳細については、分類学習器アプリのハイパーパラメーターの最適化を参照。)次のいずれかを行う場合は、モデルを実験マネージャーにエクスポートすることを検討してください。

  • ハイパーパラメーター調整におけるハイパーパラメーター検索範囲を調整する。

  • 学習データを変更する。

  • モデルの当てはめ前の前処理手順を調整する。

  • ハイパーパラメーターを別のメトリクスを使用して調整する。

ワークフローの例については、実験マネージャーを使用した分類モデルの調整を参照してください。

Statistics and Machine Learning Toolbox™ のライセンスがあれば、実験マネージャー アプリを使用するために Deep Learning Toolbox™ のライセンスは必要ないことに注意してください。

分類モデルのエクスポート

分類学習器で学習させたモデルから実験マネージャーの実験を作成するには、[モデル] ペインでモデルを選択します。[学習] タブで、[エクスポート] セクションの [モデルのエクスポート] をクリックし、[実験の作成] を選択します。

メモ

このオプションはバイナリ GLM ロジスティック回帰モデルではサポートされません。

[実験の作成] ダイアログ ボックスで、ファイル名を変更するか既定値を受け入れます。

Create Experiment dialog box in Classification Learner for a linear model

アプリによって、次のファイルが実験マネージャーにエクスポートされます。

  • 学習関数 — この関数は、実験マネージャー アプリで指定されたモデル ハイパーパラメーターを使用して分類モデルに学習させ、結果のメトリクスと可視化を記録します。実験の各試行では、アプリで指定されたハイパーパラメーター検索範囲から選択されたハイパーパラメーター値の新たな組み合わせを使って、アプリが学習関数を呼び出します。返された学習済みモデルはアプリによって保存され、学習の完了後に MATLAB® ワークスペースにエクスポートできます。

  • 学習データ セット — この .mat ファイルには、分類学習器で使用されたデータ セット全体 (テスト データを除く学習データと検証データ) が格納されます。分類学習器へのデータのインポート方法に応じて、dataTable という名前の table か predictorMatrix および responseData という名前の 2 つの別々の変数のいずれかにデータ セットが格納されます。

  • 条件付き制約関数 — 条件付き制約関数は、ベイズ最適化を使用してモデルのハイパーパラメーターを調整するために一部のモデルで必要になります。条件付き制約により、次の条件のいずれかが適用されます。

    • 一部のハイパーパラメーターが特定の値をもつとき、他のハイパーパラメーターが指定値に設定される。

    • 一部のハイパーパラメーターが特定の値をもつとき、他のハイパーパラメーターが NaN (数値ハイパーパラメーターの場合) または <undefined> 値 (categorical ハイパーパラメーターの場合) に設定される。

    詳細については、条件付き制約 — ConditionalVariableFcnを参照してください。

  • 確定的制約関数 — 確定的制約関数は、ベイズ最適化を使用してモデルのハイパーパラメーターを調整するために一部のモデルで必要になります。確定的制約関数は、ハイパーパラメーター探索空間内の点が実行可能な場合 (つまり、問題が有効であるか、この点で適切に定義されている場合) に true 値を返し、それ以外の場合は false 値を返します。詳細については、確定的制約 — XConstraintFcnを参照してください。

[実験の作成] をクリックすると、アプリで実験マネージャーが開きます。その後、実験マネージャー アプリでダイアログ ボックスが開き、実験に新規のプロジェクトを使用するか既存のプロジェクトを使用するかを選択できます。

Create Experiment dialog box in Experiment Manager

ハイパーパラメーターの選択

実験マネージャーでは、さまざまなハイパーパラメーターとハイパーパラメーター検索範囲を使用してモデルを調整します。実験のタブの [ハイパーパラメーター] セクションで、[追加] をクリックしてモデル調整プロセスにハイパーパラメーターを追加します。テーブルで、エントリをダブルクリックしてその値を調整します。

Hyperparameters table in Experiment Manager

既定のベイズ最適化手法をモデル調整に使用する場合は、実験で使用されるハイパーパラメーターについて、次のプロパティを指定します。

  • 名前 — 有効なハイパーパラメーターの名前を入力します。

  • 範囲 — 実数値または整数値のハイパーパラメーターの場合、ハイパーパラメーターの下限と上限を示す 2 要素のベクトルを入力します。categorical ハイパーパラメーターの場合は、ハイパーパラメーターが取り得る値をリストする string 配列または文字ベクトルの cell 配列を入力します。

  • — 実数値のハイパーパラメーターの場合は [実数]、整数値のハイパーパラメーターの場合は [整数]、categorical ハイパーパラメーターの場合は [categorical] を選択します。

  • 変換 — 変換を使用しない場合は [なし]、対数変換を使用する場合は [対数] を選択します。[対数] を選択する場合、ハイパーパラメーター値は正でなければなりません。この設定の場合、ハイパーパラメーターがベイズ最適化アルゴリズムによって対数スケールでモデル化されます。

次の表に、アプリで調整できるハイパーパラメーターの情報をモデル タイプ別に示します。

モデル タイプ近似関数ハイパーパラメーター
fitctree

MaxNumSplits, MinLeafSize, SplitCriterion

詳細については、OptimizeHyperparameters を参照してください。

判別fitcdiscr

Delta, DiscrimType, Gamma

詳細については、OptimizeHyperparameters を参照してください。

単純ベイズfitcnb

DistributionNames, Kernel, Standardize, Width

詳細については、OptimizeHyperparameters を参照してください。

SVMfitcsvm (2 クラスの場合)、fitcecoc (3 クラス以上の場合)

BoxConstraintCoding (3 クラス以上の場合のみ)、KernelFunctionKernelScalePolynomialOrderStandardize

詳細については、OptimizeHyperparameters (fitcsvm ハイパーパラメーターの場合) および OptimizeHyperparameters (fitcecoc ハイパーパラメーターの場合) を参照してください。

効率的な線形fitclinear (2 クラスの場合)、fitcecoc (3 クラス以上の場合)

Coding (3 クラス以上の場合のみ)、LambdaLearnerRegularization

詳細については、OptimizeHyperparameters (fitclinear ハイパーパラメーターの場合) および OptimizeHyperparameters (fitcecoc ハイパーパラメーターの場合) を参照してください。

KNNfitcknn

Distance, DistanceWeight, Exponent, NumNeighbors, Standardize

詳細については、OptimizeHyperparameters を参照してください。

カーネルfitckernel (2 クラスの場合)、fitcecoc (3 クラス以上の場合)

Coding (3 クラス以上の場合のみ)、KernelScaleLambdaLearnerNumExpansionDimensionsStandardize

詳細については、OptimizeHyperparameters (fitckernel ハイパーパラメーターの場合) および OptimizeHyperparameters (fitcecoc ハイパーパラメーターの場合) を参照してください。

アンサンブルfitcensemble

LearnRate, MaxNumSplits, Method, MinLeafSize, NumLearningCycles, NumVariablesToSample, SplitCriterion

詳細については、OptimizeHyperparameters を参照してください。

ニューラル ネットワークfitcnet

Activations, Lambda, LayerBiasesInitializer, LayerSizes, LayerWeightsInitializer, Standardize

詳細については、OptimizeHyperparameters を参照してください。

MATLAB コマンド ウィンドウで関数 hyperparameters を使用すると、モデルに使用できるハイパーパラメーターとそれらの既定の検索範囲に関する詳細情報が得られます。関数 hyperparameters の呼び出しで、近似関数、学習予測子データ、および学習応答変数を指定します。

(オプション) 実験のカスタマイズ

実験では、モデルのハイパーパラメーター以外も変更できます。ほとんどの場合、実験のカスタマイズでは、実験を実行する前に学習関数ファイルの編集が必要になります。たとえば、学習データ セット、前処理手順、返されるメトリクス、生成される可視化を変更するには、学習関数ファイルを更新しなければなりません。学習関数を編集するには、実験のタブの [学習関数] セクションで [編集] をクリックします。実験のカスタマイズを含む例については、実験マネージャーを使用した分類モデルの調整を参照してください。

実験のカスタマイズには、学習関数ファイルの編集が不要な手順もいくつかあります。たとえば、モデル調整の手法の変更、ベイズ最適化オプションの調整、ベイズ最適化の実行に使用するメトリクスの変更が可能です。

モデル調整の手法の変更

ベイズ最適化を使用して最適なハイパーパラメーター値を検索する代わりに、ハイパーパラメーター値の範囲をスイープすることができます。実験のタブの [ハイパーパラメーター] セクションで、[手法][網羅的なスイープ] に設定します。ハイパーパラメーター テーブルで、実験で使用するハイパーパラメーターの名前と値を入力します。ハイパーパラメーターの値は、数値、logical 値、string 値のスカラーまたはベクトルか、文字ベクトルの cell 配列でなければなりません。たとえば、モデルに応じて、次のようなハイパーパラメーターの指定が有効です。

  • 0.01

  • 0.01:0.01:0.05

  • [0.01 0.02 0.04 0.08]

  • ["Bag","AdaBoostM2","RUSBoost"]

  • {'gaussian','linear','polynomial'}

実験を実行すると、実験マネージャーは、テーブルで指定されたハイパーパラメーター値のすべての組み合わせを使用してモデルに学習させます。

ベイズ最適化オプションの調整

ベイズ最適化を使用する場合、実験の期間を指定できます。実験のタブの [ハイパーパラメーター] セクションで、[手法][ベイズ最適化] に設定されていることを確認します。[ベイズ最適化オプション] セクションで、実行する最大時間 (秒単位) と最大試行回数を入力します。実験マネージャーは試行完了時にのみこれらのオプションをチェックするため、実験における実際の実行時間と試行回数はこれらの設定値を超える場合があることに注意してください。

ベイズ最適化アルゴリズムの獲得関数も指定できます[ベイズ最適化オプション] セクションで [詳細オプション] をクリックします。[獲得関数名] リストから獲得関数を選択します。このオプションの既定値は [expected-improvement-plus] です。詳細については、獲得関数のタイプを参照してください。

新しい確定的制約関数または条件付き制約関数が必要で学習関数ファイルを編集する場合、それらの新しい関数の名前を [詳細オプション] セクションで指定できることに注意してください。

ベイズ最適化の実行に使用するメトリクスの変更

既定では、検証精度が最小になるハイパーパラメーター値の組み合わせをベイズ最適化を使用して見つけるようにアプリで試行されます。代わりに、検証の総コストを最小化するように指定できます。実験のタブの [メトリクス] セクションで、ValidationTotalCost の値を最適化するように指定します。[方向][最小化] に設定されたままにします。

別のメトリクスを返すように学習関数ファイルを編集する場合、そのメトリクスを [メトリクス] セクションで指定できることに注意してください。指定したメトリクスの [方向] が適切であることを確認してください。

実験の実行

実験を実行する準備ができたら、逐次的または並列に実行できます。

  • Parallel Computing Toolbox™ がある場合、実験マネージャーで計算を並列に実行できます。[実験マネージャー] タブの [実行] セクションで、[モード] リストから [同時] を選択します。

    メモ

    実験マネージャーでは、スレッド プールを使用した並列計算はサポートされません。

  • それ以外の場合は、[モード] の既定のオプションである [逐次] を使用します。

[実験マネージャー] タブの [実行] セクションで、[実行] をクリックします。

参考

アプリ

関連するトピック