分類学習器アプリで学習させた分類器の解釈
一部の機械学習モデルでは、そのモデルでどのように予測が行われるかがわかりにくいことがあります。解釈可能性ツールを使用すると、予測子が予測にどのように寄与しているか (または寄与していないか) がわかります。学習済みの分類モデルの場合、部分依存プロット (PDP) は予測子と予測クラス スコアの関係を示します。選択した予測子に対する部分依存は、他の予測子の効果を除外することで取得した平均予測によって定義されます。
この例では、分類学習器アプリで分類モデルに学習させ、PDP を使用して最適なモデルを解釈する方法を示します。PDP の結果を使用して、モデルで特徴量が予想どおりに使用されることを確認したり、不要な特徴量をモデルの学習から削除したりできます。
MATLAB® コマンド ウィンドウで、
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。load carbig
米国製かどうかに基づいて、自動車を分類します。
Origin = categorical(cellstr(Origin)); Origin = mergecats(Origin,["France","Japan","Germany", ... "Sweden","Italy","England"],"NotUSA");
Acceleration
、Displacement
などの予測子変数と応答変数Origin
が格納された table を作成します。cars = table(Acceleration,Displacement,Horsepower, ... Model_Year,MPG,Weight,Origin);
cars
から table に欠損値がある行を削除します。cars = rmmissing(cars);
分類学習器を開きます。[アプリ] タブをクリックしてから、[アプリ] セクションの右にある矢印をクリックしてアプリ ギャラリーを開きます。[機械学習および深層学習] グループの [分類学習器] をクリックします。
[分類学習器] タブで、[ファイル] セクションの [新規セッション] をクリックし、[ワークスペースから] を選択します。
[ワークスペースからの新規セッション] ダイアログ ボックスで、[データセット変数] のリストから
[cars]
table を選択します。応答変数と予測子変数が選択されます。既定の応答変数は[Origin]
です。既定の検証オプションは 5 分割交差検証であるため、過適合が防止されます。[テスト] セクションで、テスト データ セットを確保するチェック ボックスをクリックします。インポートされたデータの
15
パーセントをテスト セットとして指定します。オプションはそのままで続行するため、[セッションの開始] をクリックします。
事前設定されたすべてのモデルに学習させます。[分類学習器] タブの [モデル] セクションで矢印をクリックしてギャラリーを開きます。[開始] グループで [すべて] をクリックします。[学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。事前設定された各モデル タイプの学習が既定の複雑な木のモデルと共に 1 つずつ行われ、モデルが [モデル] ペインに表示されます。
メモ
Parallel Computing Toolbox™ がある場合は、[並列の使用] ボタンが既定でオンに切り替わります。[すべてを学習] をクリックして [すべてを学習] または [選択を学習] を選択すると、ワーカーの並列プールが開きます。この間、ソフトウェアの対話的な操作はできません。プールが開いた後、モデルの学習を並列で実行しながらアプリの操作を続けることができます。
Parallel Computing Toolbox がない場合は、[すべてを学習] メニューの [バックグラウンド学習を使用] チェック ボックスが既定でオンになります。オプションを選択してモデルに学習させると、バックグラウンド プールが開きます。プールが開いた後、モデルの学習をバックグラウンドで実行しながらアプリの操作を続けることができます。
検証精度に基づいて学習済みモデルを並べ替えます。[モデル] ペインで [並べ替え] リストを開き、
[精度 (検証)]
を選択します。[モデル] ペインで、検証精度が高い上位 2 つのモデルの横にある星形アイコンをクリックします。最も高い検証精度が四角で囲まれて強調表示されます。この例では、学習済みの [バギング木] モデルの検証精度が最も高くなっています。
メモ
検証により、結果に無作為性が導入されます。実際のモデルの検証結果は、この例に示されている結果と異なる場合があります。
星マークが付いたモデルごとに、各種のプロット (散布図、混同行列、ROC 曲線など) を使用してモデルの性能をチェックできます。[モデル] ペインでモデルを選択します。[分類学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開きます。次に、[検証結果] グループのいずれかのボタンをクリックして対応するプロットを開きます。
複数のプロットを開いた後、モデル プロットのタブの右端にある [ドキュメント アクション] 矢印を使用して、プロットのレイアウトを変更できます。たとえば、矢印をクリックして
[サブタイル表示]
オプションを選択し、レイアウトを指定します。検証プロットの使用方法と表示方法の詳細については、分類学習器における分類器の性能の可視化と評価を参照してください。元のレイアウトに戻すには、[プロットと解釈] セクションで [レイアウト] ボタンをクリックし、[単一モデル (既定)] を選択します。
星マークが付いたモデルごとに、部分依存プロット (PDP) を使用して、モデルの特徴量とモデル予測の関係を確認します。[分類学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開きます。[解釈の結果] セクションで [部分依存] をクリックします。PDP では、学習済みモデルの予測スコアに対する各予測子の限界効果を可視化できます。アプリによる部分依存の値の計算には、
cars
内の観測値のうちテスト用に確保されていない 85% の観測値で学習させたモデルが使用されます。学習データ (つまり、
cars
内の観測値の 85%) におけるモデルの予測子とモデルのスコアの関係を調べます。[データ] で、[学習セット] を選択します。モデル予測に寄与していると思われる特徴量を探します。たとえば、[特徴] で
[Displacement]
を選択します。青色でプロットされたラインは、
Displacement
特徴量とNotUSA
予測スコアの間の平均化された部分関係性を表します。赤色でプロットされたラインは、Displacement
特徴量とUSA
予測スコアの間の平均化された部分関係性を表します。x 軸の目盛りは、学習データ セット内の一意のDisplacement
の値を示します。このモデル (モデル 2.22) では、自動車が米国で生産された確率はエンジン排気量の増加にともなって増加する傾向があります。特に、自動車が米国以外で生産された確率は、エンジン排気量が 200 を超えるとほぼ 0 に低下します。ただし、排気量の値が 200 を超える自動車はわずかしかないことに注意してください。
メモ
一般に、部分依存プロットを解釈する際は値の分布を考慮してください。予測子の値が均等に分布している観測値が十分にある間隔の方が結果の信頼性が高くなる傾向があります。
モデル予測に寄与していないと思われる予測子を削除して、最適なモデルを調整できます。たとえば、星マークが付いた各モデルの部分依存プロットの [特徴] で、
[Model_Year]
を選択します。両方のモデルで、予測スコアはモデル年が後になるほど大きく異なってはいないように思われます。この結果は、必ずしもその予測子が些末な特徴量であることを示すものではありません。変数
Model_Year
は離散変数であるため、x 軸の目盛りは予測子の値の分布を完全には反映できません。つまり、値はモデル年の範囲全体にわたってまばらまたは不均等に分散している可能性があります。Model_Year
が些末な特徴量であるかは判断できませんが、モデル年が自動車の生産国に与える影響は限られていると考えられます。そのため、Model_Year
予測子の削除を試すことができます。一般的に、予想どおりに予測に寄与している予測子を削除する必要はありません。この例では、
Model_Year
予測子を最適なモデルから削除します。星マークが付いたモデルごとに、モデルのコピーを作成します。[モデル] ペインでモデルを選択した後、[分類学習器] タブの [モデル] セクションで [複製] ボタンをクリックします。次に、モデルの [概要] タブで [特徴選択] セクションを展開し、[Model_Year] 特徴量の [選択] チェック ボックスをオフにします。
2 つの新しいモデルに学習させます。[分類学習器] タブの [学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。
[モデル] ペインで、2 つの新しいモデルの横にある星形アイコンをクリックします。星マークが付いたモデルをグループ化するには、[並べ替え] リストを開き、
[お気に入り]
を選択します。星マークが付いたモデルごとに、テスト セットでモデルの精度を計算します。まず、[モデル] ペインでモデルを選択します。次に、[分類学習器] タブの [テスト] セクションで [すべてテスト] をクリックし、[選択項目をテスト] を選択します。
テーブルを使用して、星マークが付いたモデルの検証精度とテスト精度の結果を比較します。[分類学習器] タブの [モデル] セクションで [結果テーブル] をクリックします。[結果テーブル] タブで、テーブルの右上にある [表示する列の選択] ボタンをクリックします。
[表示する列の選択] ダイアログ ボックスで、[事前設定] 列の [選択] ボックスをオンにし、[総コスト (検証)] 列と [総コスト (テスト)] 列の [選択] チェック ボックスをオフにします。[OK] をクリックします。
この例では、元の [バギング木] モデル (モデル 2.22) が検証精度とテスト精度の点で他のモデルよりも優れています。
最適なモデルで、テスト データ セットに対する PDP を確認します。部分関係性が予測と一致することを確認します。
この例では、
Acceleration
特徴量の学習セットおよびテスト セットの PDP とモデル 2.22 の予測スコアを比較します。[部分依存プロット] タブの [特徴] で、[Acceleration]
を選択します。[データ] で、[学習セット] を選択してから [テスト セット] を選択して各プロットを確認します。PDP は学習データ セットとテスト データ セットで同様です。加速度値が低い場合、予測スコアはほぼ一貫しています。加速度値が約 19.5 になるとスコアは著しく変化し始めます。テスト データ セットには加速度値が 20 を超える観測値は多く含まれていないように見えるため、その範囲の値の予測は比較できません。
最適なモデルに問題がなければ、学習済みのモデルをワークスペースにエクスポートできます。詳細については、新しいデータについて予測を行うためのワークスペースへのモデルのエクスポートを参照してください。分類学習器で作成したいずれかの部分依存プロットをエクスポートすることもできます。詳細については、分類学習器アプリのプロットのエクスポートを参照してください。
参考
plotPartialDependence
| partialDependence