Main Content

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

分類学習器アプリでハイパーパラメーターの最適化を使用した分類器の学習

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

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

    load ionosphere
    tbl = array2table(X);
    tbl.Y = Y;
    
    rng('default') % For reproducibility of the data split
    partition = cvpartition(Y,'Holdout',0.15);
    idxTrain = training(partition); % Indices for the training set
    tblTrain = tbl(idxTrain,:);
    tblTest = tbl(~idxTrain,:);
  2. 分類学習器を開きます。[アプリ] タブをクリックしてから、[アプリ] セクションの右にある矢印をクリックしてアプリ ギャラリーを開きます。[機械学習および深層学習] グループの [分類学習器] をクリックします。

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

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

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

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

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

    ヒント

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

    メモ

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

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

  8. 最適化するモデル ハイパーパラメーターを選択します。[モデル タイプ] セクションで [詳細設定]、[詳細設定] を選択します。ダイアログ ボックスが開き、ここで最適化するハイパーパラメーターの [最適化] チェック ボックスを選択できます。既定では、利用可能なハイパーパラメーターのすべてのチェック ボックスが選択されます。この例では、[カーネル関数] および [データの標準化][最適化] チェック ボックスをオフにします。カーネル関数に [ガウス] 以外の固定値がある場合は、既定で [カーネル スケール][最適化] チェック ボックスがオフにされます。[ガウス] カーネル関数を選択し、[カーネル スケール][最適化] チェック ボックスを選択します。

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

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

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

    メモ

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

  11. 学習済みの事前設定された SVM モデルを学習済み最適化可能なモデルと比較します。[履歴] の一覧で、最高の検証 [精度] が四角で囲まれて強調表示されます。この例では、学習済み最適化可能な SVM モデルが 6 つの事前設定されたモデルよりも優れています。

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

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

    • [履歴] の一覧で [中程度のガウス SVM] モデルを選択します。[分類学習器] タブの [エクスポート] セクションで [モデルのエクスポート]、[モデルのエクスポート] をクリックします。ダイアログ ボックスで、モデルに gaussianSVM という名前を付けます。

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

  13. tblTest データで 2 つのモデルの精度を計算します。MATLAB コマンド ウィンドウで、エクスポートされた各モデル構造で関数 predictFcn を使用して、検定セット データの応答値を予測します。次に、混同行列を使用して結果を可視化します。検定セット データでモデルの精度値を計算および比較します。

    testY = tblTest.Y;
    
    labels = gaussianSVM.predictFcn(tblTest);
    figure
    cm = confusionchart(testY,labels);
    title('Preset Model Results')
    
    optLabels = optimizableSVM.predictFcn(tblTest);
    figure
    optcm = confusionchart(testY,optLabels);
    title('Optimizable Model Results')
    
    cmvalues = cm.NormalizedValues;
    optcmvalues = optcm.NormalizedValues;
    presetAccuracy = sum(diag(cmvalues))/sum(cmvalues,'all')*100
    optAccuracy = sum(diag(optcmvalues))/sum(optcmvalues,'all')*100
    
    presetAccuracy =
    
       92.3077
    
    optAccuracy =
    
       88.4615

    この例では、学習済み最適化可能な SVM モデルも、学習済みの事前設定されたモデルも、検定セット データで実行されません。

関連するトピック