主要内容

。

機械学習モデルの解釈

このトピックでは,モデルを解釈するための统计和机器学习工具箱™の机能について说明し,机械学习モデル(分类および回帰)を解釈する方法を示します。

機械学習モデルは,そのモデルでどのように予測が行われるかがわかりにくいことがあるため,“ブラックボックス”モデルとよく呼ばれます。解釈可能性ツールを使用すると、機械学習アルゴリズムのこの側面に対処でき、予測子が予測にどのように寄与しているか (または寄与していないか) がわかります。また、モデルがその予測で正しい証拠を使用しているかどうかを検証でき、すぐにはわからないモデル バイアスを検出できます。

モデルを解釈するための機能

石灰沙普利およびplotPartialDependenceを使用して,学習済みの分類モデルまたは回帰モデルの予測に対する個々の予測子の寄与を説明します。

  • 石灰- 本地可解释的模型无关的解释(LIME[1])は解釈可能な単純モデルをクエリ点に当てはめることにより,クエリ点についての予測を解釈します。単純モデルは学習済みモデルの近似として動作し,クエリ点周辺のモデル予測を説明します。単純モデルにできるのは,線形モデルまたは決定木モデルのいずれかです。線形モデルの推定係数または決定木モデルの予測子の推定重要度を使用して,クエリ点についての予測に対する個々の予測子の寄与を説明できます。詳細については,石灰を参照してください。

  • 沙普利- クエリ点の予测子のシャープレイ値[2][3]は,クエリ点についての予测(回帰の场合は応答,分类の场合はクラススコア)に关して予测子が原因で生じた平均予测からの偏差を说明します。クエリ点について,すべての特徴量に关するシャープレイ値の合计は,予测の平均からの合计偏差に対応します。详细については,機械学習モデルのシャープレイ値を参照してください。

  • plotPartialDependenceおよびpartialDependence——部分依存プロット(PDP[4])は学習済みモデルにおける予測子(または予測子のペア)と予測(回帰の場合は応答,分類の場合はクラススコア)の関係を示します。選択した予測子に対する部分依存は,他の変数の効果を除外することで取得した平均予測によって定義されます。そのため,部分依存は,データセットに対する選択した予測子の平均効果を示す,選択した予測子の関数です。各観測値について一連の個別条件付き期待値(冰[5])プロットを作成して,単一の観測値に対する選択した予測子の効果を示すこともできます。詳細については,plotPartialDependenceのリファレンスページの詳細を参照してください。

一部の机械学习モデルでは,モデルの学习プロセスの一部としてモデルが予测子の重要度を学习する组み込み型特徴选択がサポートされます。予测子の推定重要度を使用してモデル予测を说明できます。以下に例を示します。

  • バギングされた決定木(ランダムフォレストなど)のアンサンブル(ClassificationBaggedEnsembleまたはRegressionBaggedEnsemble)に学習をさせて関数predictorImportanceおよびoobPermutedPredictorImportanceを使用します。

  • 重要度が最も低い予測子の係数を縮小する套索正則化を使用して線形モデルに学習をさせます。その後,推定係数を予測子の重要度の測定値として使用します。たとえば,fitclinearまたはfitrlinearを使用して名前と値の引数“正规化”“套索”として指定します。

組み込み型特徴選択をサポートする機械学習モデルの一覧については,組み込み型特徴選択を参照してください。

モデルの解釈には局所的,コーホート,大域的の3つのレベルがあり,それぞれに応じて统计和机器学习工具箱机能を使用します。

レベル 目的 使用例 统计和机器学习工具箱机能
局所的解釈 単一のクエリ点についての予測を説明する。
  • 個々の予測の重要な予測子を識別する。

  • 直観的ではない予測を調べる。

指定したクエリ点に対して石灰沙普利を使用します。
コーホート解釈 学習済みモデルがデータセット全体のサブセットについてどのように予測を行うかを説明する。 特定の标本グループについての予测を検证する。
  • 複数のクエリ点に対して石灰沙普利を使用します。石灰オブジェクトまたは沙普利オブジェクトの作成後,オブジェクト関数适合を複数回呼び出して他のクエリ点についての予測を解釈できます。

  • 石灰沙普利およびplotPartialDependenceを呼び出す际にデータのサブセットを渡します。これらの机能は,学习データセット全体ではなく指定されたサブセットを使用して学习済みモデルを解釈します。

大域的解釈 学习済みモデルがデータセット全体についてどのように予测を行うかを说明する。
  • 学習済みモデルがどのように機能するかを示す。

  • 異なるモデルを比較する。

  • plotPartialDependenceを使用して,対象の予测子のとPDP ICEプロットを作成します。

  • 組み込み型特徴選択をサポートする学习済みモデルから重要な予测子を见つけます。

分类モデルの解釈

この例では,ランダムフォレストアルゴリズムを使用してバギングされた決定木のアンサンブルに学習をさせ,解釈可能性機能を使用して学習済みモデルを解釈します。学習済みモデルのオブジェクト関数(oobPermutedPredictorImportanceおよびpredictorImportance)を使用してモデル内の重要な予测子を见つけますま。た,石灰沙普利を使用して指定したクエリ点についての予测を解釈します。その后,plotPartialDependenceを使用して,重要な予測子と予測分類スコアの関係を示すプロットを作成します。

アンサンブル分类モデルの学习

CreditRating_Historicalデータセットを読み込みます。データセットには,顾客ID,顾客の财务比率,业种ラベル,および信用格付けが格纳されています。

台= readtable ('CreditRating_Historical.dat');

テーブルの最初の3行を表示します。

头(资源描述,3)
ans =3×8表ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA工业评分_____ _____ _____ _______ ________ _____ ________ ______ 62394 0.013 0.104 0.036 0.447 0.142 3 { 'BB'} 48608 0.232 0.335 0.062 1.969 0.281 8 { 'A'} 42444 0.311 0.367 0.074 1.935 0.366 1 {'A'}

资源描述から顧客IDと信用格付けを含む列を削除して,予測子変数の表を作成します。

tblX = removevars(资源描述,“ID”“评分”]);

関数fitcensemble.を使用してアンサンブル集約法としてランダムフォレスト(“包”)を指定することで,バギングされた决定木のアンサンブルに学习をさせます。ランダムフォレストアルゴリズムの再现性を得るため,木学习器の名前と値の引数“重现”真的に指定します。また,クラス名を指定して学習済みモデルのクラスの順序を設定します。

rng (“默认”%的再现性t = templateTree (“重现”,真的);黑箱= fitcensemble(tblX,tbl.Rating,......'方法'“包”“学习者”t......“CategoricalPredictors”“行业”......“类名”{'AAA''AA''一种'“BBB”'BB''B''CCC'});

黑箱ClassificationBaggedEnsembleモデルです。

モデル固有の解釈可能性機能の使用

ClassificationBaggedEnsembleは,学習済みモデル内の重要な予測子を見つける2つのオブジェクト関数oobPermutedPredictorImportanceおよびpredictorImportanceをサポートします。

関数oobPermutedPredictorImportanceを使用してout-of-bag予測子の重要度を推定します。1予測子ごとにout-of-bagデータが無作為に並べ替えられ,この並べ替えによるout-of-bag誤差の増加が推定されます。増加がより大きいほど,特徴はより重要になります。

IMP1 = oobPermutedPredictorImportance(黑箱);

関数predictorImportanceを使用して予測子の重要度を推定します。この関数は,各予測子について分割によるノードリスク変動を合計し,この合計を枝ノード数で除算することにより,予測子の重要度を推定します。

IMP2 = predictorImportance(黑箱);

予測子の重要度の推定を格納する表を作成し,その表を使用して横棒グラフを作成します。予測子名に含まれるアンダースコアを表示するには,座標軸のTickLabelInterpreter値を“没有”に変更します。

table_Imp =表(IMP1' ,IMP2' ,......'VariableNames'{“走出球袋轮排的预测变量重要性”“预测的重要性”},......'RowNames', blackbox.PredictorNames);Tiledlayout (1,2) ax1 = nexttile;table_Imp1 = sortrows (table_Imp,“走出球袋轮排的预测变量重要性”);barh(分类(table_Imp1.Row table_Imp1.Row) table_Imp1。(“走出球袋轮排的预测变量重要性”)包含(“走出球袋轮排的预测变量重要性”)ylabel(“预测”)AX2 = nexttile;table_Imp2 =调用sortRows(table_Imp,“预测的重要性”);barh(分类(table_Imp2.Row table_Imp2.Row) table_Imp2。(“预测的重要性”)包含(“预测的重要性”ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”

両方のオブジェクト关数でMVE_BVTDおよびRE_TAが上位2つの重要な予测子として识别されています。

クエリ点の指定

评级'AAA'である観測値を特定して,その中から4つのクエリ点を選択します。

tblX_AAA = tblX (strcmp(资源描述。评级,'AAA'):);queryPoint = datasample (tblX_AAA 4“替换”,错误的)
queryPoint =4×6表WC_TA RE_TA EBIT_TA MVE_BVTD S_TA工业_____ _____ _______ ________ _____ ________ 0.331 0.531 0.077 7.116 0.522 12 0.26 0.515 0.065 3.394 0.515 0.121 1 0.413 0.057 3.647 0.466 0.617 12 0.766 0.126 4.442 0.483 9

線形単純モデルでの石灰の使用

線形単純モデルで石灰を使用してクエリ点についての予測を説明します。石灰は合成データセットを生成し,その合成データセットに単純モデルを当てはめます。

tblX_AAAを使用して石灰オブジェクトを作成し,石灰がデータセット全体ではなく评级'AAA'である観測値のみを使用して合成データセットを生成するようにします。

explainer_lime =石灰(黑箱,tblX_AAA);

石灰DataLocalityの既定値は“全球”です。この場合,石灰は既定で大域的合成データセットを生成し,すべてのクエリ点に使用します。石灰は異なる観測値の重みを使用して,クエリ点に近い観測値ほど重み値の比重が大きくなるようにします。そのため,各単純モデルを特定のクエリ点に対する学習済みモデルの近似として解釈できます。

オブジェクト関数适合を使用して4つのクエリ点に単純モデルを当てはめます。3番目の入力(単純モデルで使用する重要な予測子の数)を6に指定して,6つすべての予測子を使用します。

explainer_lime1 =拟合(explainer_lime,queryPoint(1,:),6);explainer_lime2 =拟合(explainer_lime,queryPoint(2,:),6);explainer_lime3 =拟合(explainer_lime,queryPoint(3,:),6);explainer_lime4 =拟合(explainer_lime,queryPoint(4,:),6);

オブジェクト関数情节を使用して,単純モデルの係数をプロットします。

Tiledlayout (2,2) ax1 = nexttile;情节(explainer_lime1);ax2 = nexttile;情节(explainer_lime2);ax3 = nexttile;情节(explainer_lime3);大举裁员= nexttile;情节(explainer_lime4);ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”;ax3。TickLabelInterpreter =“没有”;ax4.TickLabelInterpreter =“没有”

すべての単純モデルでEBIT_TARE_TAおよびMVE_BVTDが上位3つの重要な予测子として识别されています。予测子の正の系数は,予测子の値を大きくすると単纯モデルの予测スコアが大きくなることを示しています。

カテゴリカル予測子の場合,関数情节ではそのカテゴリカル予測子の最も重要なダミー変数のみが表示されます。そのため,棒グラフごとに異なるダミー変数が表示されます。

シャープレイ値の計算

クエリ点の予測子のシャープレイ値は,クエリ点についての予測スコアに関して予測子が原因で生じた平均スコアからの偏差を説明します。tblX_AAAを使用して沙普利オブジェクトを作成し,沙普利'AAA'の標本に基づいて期待される寄与を計算するようにします。

explainer_shapley =沙普利(黑箱,tblX_AAA);

オブジェクト関数适合を使用して,クエリ点のシャープレイ値を計算します。

explainer_shapley1 =拟合(explainer_shapley,queryPoint(1,:));explainer_shapley2 =拟合(explainer_shapley,queryPoint(2,:));explainer_shapley3 =拟合(explainer_shapley,queryPoint(3,:));explainer_shapley4 =拟合(explainer_shapley,queryPoint(4,:));

オブジェクト関数情节を使用して,シャープレイ値をプロットします。

Tiledlayout (2,2) ax1 = nexttile;Plot (explainer_shapley1) ax2 = nexttile;Plot (explainer_shapley2) ax3 = nexttile;Plot (explainer_shapley3) ax4 = nexttile;情节(explainer_shapley4) ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”;ax3。TickLabelInterpreter =“没有”;ax4.TickLabelInterpreter =“没有”

4つすべてのクエリ点でMVE_BVTDおよびRE_TAが3つの最も重要な予測子のうちの2つとなっています。

MVE_BVTDのシャープレイ値は,1番目と4番目のクエリ点では正,2番目と3番目のクエリ点では負です。MVE_BVTDの値は1番目と4番目のクエリ点ではそれぞれ約7と4,2番目と3番目のクエリ点ではどちらも約3.5です。4つのクエリ点のシャープレイ値によると,MVE_BVTDの値が大きいと予測スコアが平均と比較して大きくなり,MVE_BVTDの値が小さいと予測スコアが小さくなります。結果は石灰の結果と一致しています。

部分依存プロット(PDP)の作成

PDPプロットは,学习済みモデルにおける予测子と予测スコアの平均化された关系を示します。RE_TAおよびMVE_BVTDのPDPを作成し,他の解釈可能性ツールで重要な予測子として識別します。tblx_AAAplotPartialDependenceに渡して,この関数が'AAA'の標本のみを使用して予測スコアの期待値を計算するようにします。

图plotPartialDependence(黑盒,“RE_TA”'AAA',tblX_AAA)

plotPartialDependence(黑盒,“MVE_BVTD”'AAA',tblX_AAA)

x軸の小目盛りはtbl_AAAの一意の予测子値を表します。MVE_BVTDのプロットは,MVE_BVTDの値が小さいと予測スコアが大きくなることを示しています。MVE_BVTDの値が约5に达するまではその値が大きくなるとスコア値は小さくなり,その后はMVE_BVTDの値が大きくなってもスコア値は変化しないままとなります。plotPartialDependenceで识别されたサブセットtbl_AAAにおけるMVE_BVTDに対する依存関係は,石灰沙普利で識別された4つのクエリ点におけるMVE_BVTDの局所的な寄与と一致しません。

回帰モデルの解釈

回帰問題に関するモデルの解釈ワークフローは,分类モデルの解釈の例で示した分類問題に関するワークフローに似ています。

この例では,ガウス过程回帰(GPR)モデルに学习をさせ,解釈可能性机能を使用して学习済みモデルを解釈します.gpr后モデルのカーネルパラメーターを使用して予测子の重みを推定します。また,石灰沙普利を使用して指定したクエリ点についての予测を解釈します。その后,plotPartialDependenceを使用して,重要な予測子と予測応答の関係を示すプロットを作成します。

探地雷达モデルの学習

carbigデータセットを読み込みます。このデータセットには,1970年代と1980年代初期に製造された自動車の測定値が格納されています。

负载carbig

予測子変数加速度气瓶などを格纳する表を作成します。

台=表(加速度、汽缸、排量、马力、Model_Year重量);

関数fitrgpを使用して,応答変数MPG.のGPRモデルに学習をさせます。“KernelFunction”として“ardsquaredexponential”を指定して,予测子ごとに特性长スケールが异なる二乘指数カーネルを使用します。

黑箱= fitrgp(TBL,MPG,“ResponseName”“英里”“CategoricalPredictors”(2 - 5),......“KernelFunction”“ardsquaredexponential”);

黑箱RegressionGPモデルです。

モデル固有の解釈可能性機能の使用

モデルで使用されるカーネル关数の学习済み特性长スケールから予测子の重み(予测子の重要度)を计算できます。特性长スケールは,予测子がどのくらい応答値から离れると无相关になるかを定义します。负の学习済み特性长スケールの指数を使用して,正规化した予测子の重みを求めます。

SIGMAL = blackbox.KernelInformation.KernelParameters(1:结束-1);学会长度标度权重= EXP(-sigmaL);%预测的权重重量=重量/笔(重量);%归一化预测的权重

正规化した予测子の重みを格纳する表を作成し,その表を使用して横棒グラフを作成します。予测子名に含まれるアンダースコアを表示するには,座标轴のTickLabelInterpreter値を“没有”に変更します。

tbl_weight =表(重量、'VariableNames'{“预测体重”},......'RowNames',blackbox.ExpandedPredictorNames);tbl_weight =调用sortRows(tbl_weight,“预测体重”);b = barh(分类(tbl_weight.Row tbl_weight.Row) tbl_weight。(“预测体重”));b.Parent.TickLabelInterpreter =“没有”;Xlabel(“预测体重”)ylabel(“预测”

予測子の重みから,カテゴリカル予測子Model_Yearおよび气瓶の复数のダミー変数が重要であることがわかります。

クエリ点の指定

MPG.の値がMPG.の0.25分位数より小さい観測値を特定します。サブセットから,欠損値が含まれていない4つのクエリ点を選択します。

rng (“默认”%的再现性idx_subset =找到(MPG <位数(MPG,0.25));tbl_subset = TBL(idx_subset,:);queryPoint = datasample(rmmissing(tbl_subset),4,“替换”,错误的)
queryPoint =4×6表加速气瓶排量马力Model_Year重量____________ _________ ____________ __________ __________ ______ 13.2 8 318 150 76 3940 14.9 8 302 130 77 4295 14 8 360 215 70 4615 13.7 8 318 145 77 4140

単純な木モデルでの石灰の使用

単纯な决定木モデルで石灰を使用してクエリ点についての予測を説明します。石灰は合成データセットを生成し,その合成データセットに単純モデルを当てはめます。

tbl_subsetを使用して石灰オブジェクトを作成し,石灰がデータセット全体ではなくサブセットを使用して合成データセットを生成するようにします。“SimpleModelType”として'树'を指定して,単純な決定木モデルを使用します。

tbl_subset explainer_lime =石灰(黑盒,“SimpleModelType”'树');

石灰DataLocalityの既定値は“全球”です。この場合,石灰は既定で大域的合成データセットを生成し,すべてのクエリ点に使用します。石灰は異なる観測値の重みを使用して,クエリ点に近い観測値ほど重み値の比重が大きくなるようにします。そのため,各単純モデルを特定のクエリ点に対する学習済みモデルの近似として解釈できます。

オブジェクト関数适合を使用して4つのクエリ点に単純モデルを当てはめます。3番目の入力(単純モデルで使用する重要な予測子の数)を6に指定します。この設定により,ソフトウェアは,決定分岐(枝ノード)の最大数を6に指定し,当てはめられた決定木が,総数を上限に予測子を使用するようにします。

explainer_lime1 =拟合(explainer_lime,queryPoint(1,:),6);explainer_lime2 =拟合(explainer_lime,queryPoint(2,:),6);explainer_lime3 =拟合(explainer_lime,queryPoint(3,:),6);explainer_lime4 =拟合(explainer_lime,queryPoint(4,:),6);

オブジェクト関数情节を使用して,予測子の重要度をプロットします。

Tiledlayout (2,2) ax1 = nexttile;情节(explainer_lime1);ax2 = nexttile;情节(explainer_lime2);ax3 = nexttile;情节(explainer_lime3);大举裁员= nexttile;情节(explainer_lime4);ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”;ax3。TickLabelInterpreter =“没有”;ax4.TickLabelInterpreter =“没有”

すべての単純モデルで移位Model_Yearおよび重量が重要な予測子として識別されています。

シャープレイ値の計算

クエリ点の予測子のシャープレイ値は,クエリ点についての予測応答に関して予測子が原因で生じた平均応答からの偏差を説明します。tbl_subsetを使用してモデル黑箱沙普利オブジェクトを作成し,沙普利tbl_subsetの観测値に基づいて期待される寄与を计算するようにします。

explainer_shapley =沙普利(黑盒,tbl_subset);

オブジェクト関数适合を使用して,クエリ点のシャープレイ値を計算します。

explainer_shapley1 =拟合(explainer_shapley,queryPoint(1,:));explainer_shapley2 =拟合(explainer_shapley,queryPoint(2,:));explainer_shapley3 =拟合(explainer_shapley,queryPoint(3,:));explainer_shapley4 =拟合(explainer_shapley,queryPoint(4,:));

オブジェクト関数情节を使用して,シャープレイ値をプロットします。

Tiledlayout (2,2) ax1 = nexttile;Plot (explainer_shapley1) ax2 = nexttile;Plot (explainer_shapley2) ax3 = nexttile;Plot (explainer_shapley3) ax4 = nexttile;情节(explainer_shapley4) ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”;ax3。TickLabelInterpreter =“没有”;ax4.TickLabelInterpreter =“没有”

Model_Yearは1番目2番目および4番目のクエリ点で最も重要な予測子であり,Model_Yearのシャープレイ値は3つのクエリ点では正です。Model_Yearの値は,これら3つの点では76または77,3番目のクエリ点では70です0.4つのクエリ点のシャープレイ値によると,Model_Yearの値が小さいと予測応答が平均と比較して小さくなり,Model_Yearの値が大きいと予測応答が大きくなります。

部分依存プロット(PDP)の作成

PDPプロットは,学習済みモデルにおける予測子と予測応答の平均化された関係を示します。他の解釈可能性ツールで重要な予測子として識別されたModel_YearのPDPを作成します。tbl_subsetplotPartialDependenceに渡して,この関数がtbl_subsetの标本のみを使用して予测応答の期待値を计算するようにします。

图plotPartialDependence(黑盒,“Model_Year”tbl_subset)

プロットには4つのクエリ点のシャープレイ値で識別されたものと同じトレンドが表示されます。Model_Yearの値が大きくなると予測応答(MPG.)の値も大きくなります。

参照

[1] Ribeiro, Marco Tulio, S. Singh, C. Guestrin。“‘我为什么要相信你?’:解释任何分类器的预测。”第22届ACM SIGKDD知识发现与数据挖掘国际会议论文集,1135-44。旧金山,加利福尼亚:ACM, 2016。

Lundberg, Scott M和S. Lee。“解释模型预测的统一方法”神经信息处理系统进展30(2017):4765-774。

Aas, Kjersti, Martin。朱勒姆和安德斯·洛兰德。解释特征依赖时的个人预测:Shapley值的更精确逼近> arXiv:1903.10464(2019)。

[4]弗里德曼,杰罗姆。贪婪函数近似:梯度增压机《统计年鉴》第29期5(2001): 1189 - 1232。

Goldstein, Alex, Adam Kapelner, Justin Bleich, Emil Pitkin。《黑盒子里的窥视:用个体条件期望图可视化统计学习》《计算与图形统计学报》,第24期。1(2015年1月2日):44-65。

参考

||

関連するトピック