Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

回帰学習器アプリのハイパーパラメーターの最適化を使用した回帰モデルの学習

この例では、回帰学習器アプリでハイパーパラメーターの最適化を使用してアンサンブル回帰のハイパーパラメーターを調整する方法を示します。学習済みの最適化可能なアンサンブルの検定セット性能を、事前設定された最適なアンサンブル モデルと比較します。

  1. MATLAB® コマンド ウィンドウで、carbig データセットを読み込み、ほとんどの変数が含まれている table を作成します。table を学習セットと検定セットに分割します。

    load carbig
    cartable = table(Acceleration,Cylinders,Displacement, ...
        Horsepower,Model_Year,Weight,Origin,MPG);
    
    rng('default') % For reproducibility of the data split
    n = length(MPG);
    partition = cvpartition(n,'HoldOut',0.15);
    idxTrain = training(partition); % Indices for the training set
    cartableTrain = cartable(idxTrain,:);
    cartableTest = cartable(~idxTrain,:);
  2. 回帰学習器を開きます。[アプリ] タブをクリックしてから、[アプリ] セクションの右にある矢印をクリックしてアプリ ギャラリーを開きます。[機械学習および深層学習] グループの [回帰学習器] をクリックします。

  3. [回帰学習器] タブの [ファイル] セクションで、[新規セッション]、[ワークスペースから] を選択します。

  4. [新規セッション] ダイアログ ボックスで、[データセット変数] のリストからテーブル [cartableTrain] を選択します。

    ダイアログ ボックスに示されているように、応答変数および予測子変数が選択されます。既定の応答変数は [MPG] です。既定の検証オプションは 5 分割交差検証であるため、過適合が防止されます。この例では、既定の設定を変更しないでください。

  5. 既定のオプションをそのまま使用して続行するため、[セッションの開始] をクリックします。

  6. 事前設定されたすべてのアンサンブル モデルに学習させます。[回帰学習器] タブの [モデル タイプ] セクションで矢印をクリックしてギャラリーを開きます。[木のアンサンブル] グループで [すべてのアンサンブル] をクリックします。[学習] セクションで [学習] をクリックします。各アンサンブル モデル タイプに学習させて、モデルを [履歴] の一覧に表示します。

    ヒント

    Parallel Computing Toolbox™ がある場合、はじめて [学習] をクリックすると (または長時間経過した後で再び [学習] をクリックすると)、[プールを開いています] ダイアログ ボックスが開きます。このダイアログ ボックスは、ワーカーの並列プールが開くときに開いたままになります。この間、ソフトウェアの対話的な操作はできません。プールが開いた後で、同時に複数のモデルに学習をさせ、作業を続行することができます。

    メモ

    検証により、結果に無作為性が導入されます。実際のモデルの検証結果は、この例に示されている結果と異なる場合があります。

  7. 学習させる最適化可能なアンサンブル モデルを選択します。[回帰学習器] タブの [モデル タイプ] セクションで矢印をクリックしてギャラリーを開きます。[木のアンサンブル] グループで [最適化可能なアンサンブル] をクリックします。最適化可能なモデルを選択すると [並列の使用] ボタンが無効になります。

  8. 最適化するモデル ハイパーパラメーターを選択します。[モデル タイプ] セクションで [詳細設定]、[詳細設定] を選択します。ダイアログ ボックスが開き、ここで最適化するハイパーパラメーターの [最適化] チェック ボックスを選択できます。既定では、すべてのチェック ボックスが選択されます。この例の場合、既定の選択をそのまま使用して、ダイアログ ボックスを閉じます。

  9. [学習] セクションで [学習] をクリックします。

  10. 最適化が実行されると [最小 MSE のプロット] が表示されます。反復ごとに、ハイパーパラメーター値の異なる組み合わせが試され、その反復までに観測された最小検証の平均二乗誤差 (MSE) をもつプロットが更新され、濃い青で示されます。最適化プロセスが完了すると、最適化された一連のハイパーパラメーターが選択され、赤の四角形で示されます。詳細は、最小 MSE のプロットを参照してください。

    最適化されたハイパーパラメーターはプロットの右上と [現在のモデル] ペインの [最適化されたハイパーパラメーター] セクションの両方に一覧表示されます。

    メモ

    一般に、最適化の結果に再現性はありません。

  11. 学習済みの事前設定されたアンサンブル モデルを学習済みの最適化可能なモデルと比較します。[履歴] の一覧で、最小の検証 [RMSE] (平方根平均二乗誤差) が四角で囲まれて強調表示されます。この例では、学習済みの最適化可能なアンサンブルが 2 つの事前設定されたモデルよりも優れています。

    学習済みの最適化可能なモデルに、学習済みの事前設定されたモデルよりも低い RMSE が必ずあるとは限りません。学習済みの最適化可能なモデルが適切に機能しない場合、より長く最適化を実行してより優れた結果が得られるように試すことができます。[モデル タイプ] セクションで [詳細設定]、[オプティマイザーのオプション] を選択します。ダイアログ ボックスで [反復] の値を増やします。たとえば、既定値の 30 をダブルクリックし、値 60 を入力します。

  12. ハイパーパラメーター調整は過適合モデルになることがよくあるため、最適化されたハイパーパラメーターをもつアンサンブル モデルの検定セットの性能をチェックし、事前設定された最適なアンサンブル モデルの性能と比較します。はじめに、2 つのモデルを MATLAB ワークスペースにエクスポートします。

    • [履歴] の一覧で [ブースティング木] モデルを選択します。[回帰学習器] タブの [エクスポート] セクションで [モデルのエクスポート]、[モデルのエクスポート] を選択します。ダイアログ ボックスで、モデルに treeEnsemble という名前を付けます。

    • [履歴] の一覧で [最適化可能なアンサンブル] モデルを選択します。[回帰学習器] タブの [エクスポート] セクションで [モデルのエクスポート]、[モデルのエクスポート] を選択します。ダイアログ ボックスで、モデルに optimizableEnsemble という名前を付けます。

  13. cartableTest データで 2 つのモデルの RMSE を計算します。MATLAB コマンド ウィンドウで、エクスポートされた各モデル構造で関数 predictFcn を使用して、検定セット データの応答値を予測します。次に、NaN 値をすべて除外して検定セット データでモデルごとに RMSE を計算します。2 つの RMSE 値を比較します。

    y = treeEnsemble.predictFcn(cartableTest);
    presetRMSE = sqrt((1/length(y))*sum((cartableTest.MPG - y).^2,'omitnan'))
    
    z = optimizableEnsemble.predictFcn(cartableTest);
    optRMSE = sqrt((1/length(z))*sum((cartableTest.MPG - z).^2,'omitnan'))
    
    presetRMSE =
    
        3.4591
    
    optRMSE =
    
        3.1884
    

    この例では、学習済みの最適化可能なアンサンブルが、依然として検定セット データで学習済みの事前設定されたモデルよりも優れています。

関連するトピック