分類学習器アプリにおけるテスト セットを使用した分類器の性能チェック
この例では、分類学習器で複数のモデルに学習させ、検証精度に基づいて最適なモデルを特定する方法を示します。学習データと検証データを含むデータ セット全体で学習させた最適なモデルのテスト精度をチェックします。
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,:);
あるいは、後でアプリにデータをインポートするときにテスト セットを作成できます。詳細については、(オプション) テスト用のデータの確保を参照してください。
分類学習器を開きます。[アプリ] タブをクリックしてから、[アプリ] セクションの右にある矢印をクリックしてアプリ ギャラリーを開きます。[機械学習および深層学習] グループの [分類学習器] をクリックします。
[分類学習器] タブで、[ファイル] セクションの [新規セッション] をクリックし、[ワークスペースから] を選択します。
[ワークスペースからの新規セッション] ダイアログ ボックスで、[データセット変数] のリストから table
[tblTrain]
を選択します。ダイアログ ボックスに示されているように、応答変数および予測子変数が選択されます。既定の応答変数は
[Y]
です。過適合を防止するために、既定の検証オプションは 5 分割交差検証になっています。この例では、既定の設定を変更しないでください。既定のオプションをそのまま使用して続行するため、[セッションの開始] をクリックします。
事前設定されたすべてのモデルに学習させます。[分類学習器] タブの [モデル] セクションで矢印をクリックしてギャラリーを開きます。[開始] グループで [すべて] をクリックします。[学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。事前設定された各モデル タイプの学習が既定の複雑な木のモデルと共に 1 つずつ行われ、モデルが [モデル] ペインに表示されます。
メモ
Parallel Computing Toolbox™ がある場合は、[並列の使用] ボタンが既定でオンに切り替わります。[すべてを学習] をクリックして [すべてを学習] または [選択を学習] を選択すると、ワーカーの並列プールが開きます。この間、ソフトウェアの対話的な操作はできません。プールが開いた後、モデルの学習を並列で実行しながらアプリの操作を続けることができます。
Parallel Computing Toolbox がない場合は、[すべてを学習] メニューの [バックグラウンド学習を使用] チェック ボックスが既定でオンになります。オプションを選択してモデルに学習させると、バックグラウンド プールが開きます。プールが開いた後、モデルの学習をバックグラウンドで実行しながらアプリの操作を続けることができます。
検証精度に基づいて学習済みモデルを並べ替えます。[モデル] ペインで [並べ替え] リストを開き、
[精度 (検証)]
を選択します。[モデル] ペインで、検証精度が高い上位 3 つのモデルの横にある星形アイコンをクリックします。最も高い検証精度が四角で囲まれて強調表示されます。この例では、学習済みの [SVM カーネル] モデルの検証精度が最も高くなっています。
2 番目の複雑な木のモデル (モデル 2.1) についての検証の混同行列が表示されます。青色の値は正しい分類を示し、赤色の値は誤った分類を示します。左の [モデル] ペインに各モデルの検証精度が表示されます。
メモ
検証により、結果に無作為性が導入されます。実際のモデルの検証結果は、この例に示されている結果と異なる場合があります。
最適なモデルのテスト セット性能をチェックします。はじめに、アプリにテスト データをインポートします。
[分類学習器] タブの [テスト] セクションで [テスト データ] をクリックし、[ワークスペースから] を選択します。
[テスト データのインポート] ダイアログ ボックスで、[テスト データ セット変数] のリストから table
[tblTest]
を選択します。ダイアログ ボックスに示されているように、応答変数および予測子変数が特定されます。
[インポート] をクリックします。
tblTest
データで、事前設定された最適なモデルの精度を計算します。便宜上、すべてのモデルのテスト セットの精度をまとめて計算します。[分類学習器] タブの [テスト] セクションで [すべて検定] をクリックし、[すべて検定] を選択します。学習データと検証データを含むデータ セット全体で学習させたモデルのテスト セットの性能が計算されます。テスト セットの精度に基づいてモデルを並べ替えます。[モデル] ペインで [並べ替え] リストを開き、
[精度 (テスト)]
を選択します。テスト精度で表示しても、最も高い検証精度をもつモデルのメトリクスの概要が依然として表示されます。モデルのテスト セット性能を視覚的にチェックします。星マークが付いたモデルごとに、[モデル] ペインでモデルを選択します。[分類学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開き、[テスト結果] グループの [混同行列 (テスト)] をクリックします。
比較しやすくするためにプロットのレイアウトを再編成します。まず、[モデル 1] および [モデル 2.1] の概要とプロットのタブを閉じます。次に、モデル プロットのタブの右端にある [ドキュメント アクション] 矢印をクリックします。
[すべて並べて表示]
オプションを選択し、1 行 3 列のレイアウトを指定します。プロットの右上にある [プロット オプションを非表示] ボタンをクリックして、プロットのスペースを大きくします。
この例では、テスト セット データにおいて、学習済みの [中程度のガウス SVM] モデルが最適なモデルとなっています。
元のレイアウトに戻すには、[プロットと解釈] セクションで [レイアウト] ボタンをクリックし、[単一モデル (既定)] を選択します。
学習済みの [SVM カーネル] モデルの検証精度とテスト精度を比較します。[モデル] ペインでモデルをダブルクリックします。モデルの [概要] ペインで、[学習結果] の [精度 (検証)] の値と [テスト結果] の [精度 (テスト)] の値を比較します。この例では、検証精度がテスト精度よりも高く、このモデルの性能が検証精度で過大推定されている可能性があることを示しています。