。
このトピックでは,モデルを解釈するための统计和机器学习工具箱™の机能について说明し,机械学习モデル(分类および回帰)を解釈する方法を示します。
機械学習モデルは,そのモデルでどのように予測が行われるかがわかりにくいことがあるため,“ブラックボックス”モデルとよく呼ばれます。解釈可能性ツールを使用すると、機械学習アルゴリズムのこの側面に対処でき、予測子が予測にどのように寄与しているか (または寄与していないか) がわかります。また、モデルがその予測で正しい証拠を使用しているかどうかを検証でき、すぐにはわからないモデル バイアスを検出できます。
石灰
、沙普利
およびplotPartialDependence
を使用して,学習済みの分類モデルまたは回帰モデルの予測に対する個々の予測子の寄与を説明します。
石灰
- 本地可解释的模型无关的解释(LIME[1])は解釈可能な単純モデルをクエリ点に当てはめることにより,クエリ点についての予測を解釈します。単純モデルは学習済みモデルの近似として動作し,クエリ点周辺のモデル予測を説明します。単純モデルにできるのは,線形モデルまたは決定木モデルのいずれかです。線形モデルの推定係数または決定木モデルの予測子の推定重要度を使用して,クエリ点についての予測に対する個々の予測子の寄与を説明できます。詳細については,石灰を参照してください。
沙普利
- クエリ点の予测子のシャープレイ値[2][3]は,クエリ点についての予测(回帰の场合は応答,分类の场合はクラススコア)に关して予测子が原因で生じた平均予测からの偏差を说明します。クエリ点について,すべての特徴量に关するシャープレイ値の合计は,予测の平均からの合计偏差に対応します。详细については,機械学習モデルのシャープレイ値を参照してください。
plotPartialDependence
およびpartialDependence
——部分依存プロット(PDP[4])は学習済みモデルにおける予測子(または予測子のペア)と予測(回帰の場合は応答,分類の場合はクラススコア)の関係を示します。選択した予測子に対する部分依存は,他の変数の効果を除外することで取得した平均予測によって定義されます。そのため,部分依存は,データセットに対する選択した予測子の平均効果を示す,選択した予測子の関数です。各観測値について一連の個別条件付き期待値(冰[5])プロットを作成して,単一の観測値に対する選択した予測子の効果を示すこともできます。詳細については,plotPartialDependence
のリファレンスページの詳細を参照してください。
一部の机械学习モデルでは,モデルの学习プロセスの一部としてモデルが予测子の重要度を学习する组み込み型特徴选択がサポートされます。予测子の推定重要度を使用してモデル予测を说明できます。以下に例を示します。
バギングされた決定木(ランダムフォレストなど)のアンサンブル(ClassificationBaggedEnsemble
またはRegressionBaggedEnsemble
)に学習をさせて関数predictorImportance
およびoobPermutedPredictorImportance
を使用します。
重要度が最も低い予測子の係数を縮小する套索正則化を使用して線形モデルに学習をさせます。その後,推定係数を予測子の重要度の測定値として使用します。たとえば,fitclinear
またはfitrlinear
を使用して名前と値の引数“正规化”
を“套索”
として指定します。
組み込み型特徴選択をサポートする機械学習モデルの一覧については,組み込み型特徴選択を参照してください。
モデルの解釈には局所的,コーホート,大域的の3つのレベルがあり,それぞれに応じて统计和机器学习工具箱机能を使用します。
レベル | 目的 | 使用例 | 统计和机器学习工具箱机能 |
---|---|---|---|
局所的解釈 | 単一のクエリ点についての予測を説明する。 |
|
指定したクエリ点に対して石灰 と沙普利 を使用します。 |
コーホート解釈 | 学習済みモデルがデータセット全体のサブセットについてどのように予測を行うかを説明する。 | 特定の标本グループについての予测を検证する。 |
|
大域的解釈 | 学习済みモデルがデータセット全体についてどのように予测を行うかを说明する。 |
|
|
この例では,ランダムフォレストアルゴリズムを使用してバギングされた決定木のアンサンブルに学習をさせ,解釈可能性機能を使用して学習済みモデルを解釈します。学習済みモデルのオブジェクト関数(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_TA
、RE_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_AAA
をplotPartialDependence
に渡して,この関数が'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_subset
をplotPartialDependence
に渡して,この関数がtbl_subset
の标本のみを使用して予测応答の期待値を计算するようにします。
图plotPartialDependence(黑盒,“Model_Year”tbl_subset)
プロットには4つのクエリ点のシャープレイ値で識別されたものと同じトレンドが表示されます。Model_Year
の値が大きくなると予測応答(MPG.
)の値も大きくなります。