plot
Local Interpretable Model-agnostic Explanations (LIME) の結果のプロット
説明
は、f
= plot(results
)lime
オブジェクトresults
の LIME の結果を可視化します。関数はFigure
オブジェクトf
を返します。f
を使用して、作成後の Figure のFigure のプロパティをクエリまたは変更します。
Figure には、単純な線形モデルの係数値または単純な決定木モデルの予測子の重要度の値を示す横棒グラフが含まれています。
results
(results
のSimpleModel
プロパティ) の単純なモデルに応じて決まります。Figure は、機械学習モデルと単純なモデルをそれぞれ使用して計算されたクエリ点の 2 つの予測を表示します。これらの値は、
results
のBlackboxFitted
プロパティとSimpleModelFitted
プロパティに対応します。
例
単純な決定木モデルを使った予測の説明
分類モデルの学習を行い、単純な決定木モデルを使用するlime
オブジェクトを作成します。lime
オブジェクトを作成するときに、クエリ点と重要な予測子の数を指定して、ソフトウェアが合成データ セットの標本を生成し、重要な予測子を使って単純モデルをクエリ点にあてはめるようにします。次に、オブジェクト関数plot
を使用して、予測子の推定重要度を単純モデルに表示します。
CreditRating_Historical
データセットを読み込みます。データ セットには、顧客 ID、顧客の財務比率、業種ラベル、および信用格付けが格納されています。
tbl = readtable('CreditRating_Historical.dat');
テーブルの最初の 3 行を表示します。
head(tbl,3)
ans=3×8 tableID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry Rating _____ _____ _____ _______ ________ _____ ________ ______ 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' }
tbl
から顧客 ID と信用格付けの列を削除して、予測子変数の table を作成します。
tblX = removevars(tbl,["ID","Rating"]);
関数fitcecoc
を使用して、信用格付けの blackbox モデルに学習させます。
blackbox = fitcecoc(tblX,tbl.Rating,'CategoricalPredictors','Industry');
単純な決定木モデルを使用して最後の観測値の予測を説明するlime
オブジェクトを作成します。最大 6 つの重要な予測子を見つけるため、'NumImportantPredictors'
を 6 に指定します。lime
オブジェクトを作成するときに'QueryPoint'
と'NumImportantPredictors'
の値を指定した場合、ソフトウェアは合成データ セットの標本を生成し、解釈可能な単純モデルを合成データ セットにあてはめます。
queryPoint = tblX(end,:)
queryPoint=1×6 tableWC_TA RE_TA EBIT_TA MVE_BVTD S_TA行业_____ _____ _______ ________ ____ ________ 0.239 0.463 0.065 2.924 0.34 2
rng('default')% For reproducibilityresults = lime(blackbox,'QueryPoint',queryPoint,'NumImportantPredictors',6,...'SimpleModelType','tree')
结果=石灰与属性:BlackboxModel: [1 x1 ClassificationECOC] DataLocality: 'global' CategoricalPredictors: 6 Type: 'classification' X: [3932x6 table] QueryPoint: [1x6 table] NumImportantPredictors: 6 NumSyntheticData: 5000 SyntheticData: [5000x6 table] Fitted: {5000x1 cell} SimpleModel: [1x1 ClassificationTree] ImportantPredictors: [2x1 double] BlackboxFitted: {'AA'} SimpleModelFitted: {'AA'}
オブジェクト関数plot
を使用して、lime
オブジェクトresults
をプロットします。予測子名に含まれるアンダースコアを表示するには、座標軸のTickLabelInterpreter
値を'none'
に変更します。
f = plot(results); f.CurrentAxes.TickLabelInterpreter ='none';
プロットには、クエリ点についての 2 つの予測値が示されています。この予測値は、results
のBlackboxFittedプロパティとSimpleModelFittedプロパティに対応します。
横棒グラフは、予測子の重要度の並べ替えられた値を示しています。lime
はクエリ点の重要な予測子として財務比率変数EBIT_TA
およびWC_TA
を求めます。
バーの長さは、データ ヒントまたはBar のプロパティを使用して読み取ることができます。たとえば、関数findobj
を使用してBar
オブジェクトを検索し、関数text
を使用して、バーの端にラベルを追加できます。
b = findobj(f,'Type','bar'); text(b.YEndPoints+0.001,b.XEndPoints,string(b.YData))
あるいは、予測子変数名をもつ table に係数値を表示することもできます。
imp = b.YData; flipud(array2table(imp',...'RowNames',f.CurrentAxes.YTickLabel,'VariableNames',{'Predictor Importance'}))
ans=2×1 tablePredictor Importance ____________________ MVE_BVTD 0.088412 RE_TA 0.0018061
線形単純モデルを使用した予測の説明
回帰モデルの学習を行い、線形単純モデルを使用するlime
オブジェクトを作成します。lime
オブジェクトを作成するときに、クエリ点と重要な予測子の数を指定しなかった場合、ソフトウェアは合成データ セットの標本を生成しますが、単純モデルのあてはめは行いません。オブジェクト関数fit
を使用して、クエリ点に単純モデルをあてはめます。次に、オブジェクト関数plot
を使用して、あてはめた線形単純モデルの係数を表示します。
carbig
データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
loadcarbig
Acceleration
、Cylinders
などの予測子変数と応答変数MPG
が格納された table を作成します。
tbl = table(Acceleration,Cylinders,Displacement,Horsepower,Model_Year,Weight,MPG);
学習セットの欠損値を削除すると、メモリ消費量を減らして関数fitrkernel
の学習速度を向上させることができます。tbl
の欠損値を削除します。
tbl = rmmissing(tbl);
tbl
から応答変数を削除して、予測子変数のテーブルを作成します。
tblX = removevars(tbl,'MPG');
関数fitrkernel
を使用してMPG
の blackbox モデルの学習を行います。
rng('default')% For reproducibilitymdl = fitrkernel(tblX,tbl.MPG,'CategoricalPredictors',[2 5]);
lime
オブジェクトを作成します。mdl
には予測子データが含まれないため、予測子データ セットを指定します。
results = lime(mdl,tblX)
结果=石灰与属性:BlackboxModel: [1 x1 RegressionKernel] DataLocality: 'global' CategoricalPredictors: [2 5] Type: 'regression' X: [392x6 table] QueryPoint: [] NumImportantPredictors: [] NumSyntheticData: 5000 SyntheticData: [5000x6 table] Fitted: [5000x1 double] SimpleModel: [] ImportantPredictors: [] BlackboxFitted: [] SimpleModelFitted: []
results
には、生成された合成データ セットが含まれます。SimpleModel
プロパティは空 ([]
) です。
tblX
の最初の観測値に線形単純モデルをあてはめます。検出する重要な予測子の数を 3 に指定します。
queryPoint = tblX(1,:)
queryPoint=1×6 tableAcceleration Cylinders Displacement Horsepower Model_Year Weight ____________ _________ ____________ __________ __________ ______ 12 8 307 130 70 3504
results = fit(results,queryPoint,3);
オブジェクト関数plot
を使用して、lime
オブジェクトresults
をプロットします。予測子名に含まれるアンダースコアを表示するには、座標軸のTickLabelInterpreter
値を'none'
に変更します。
f = plot(results); f.CurrentAxes.TickLabelInterpreter ='none';
プロットには、クエリ点についての 2 つの予測値が示されています。この予測値は、results
のBlackboxFittedプロパティとSimpleModelFittedプロパティに対応します。
横棒グラフは、絶対値で並べ替えられた、単純モデルの係数値を示します。LIME は、クエリ点の重要な予測子として、Horsepower
、Model_Year
、およびCylinders
を見つけます。
Model_Year
およびCylinders
は複数のカテゴリをもつカテゴリカル予測子です。線形単純モデルの場合、各カテゴリカル予測子について、カテゴリの数よりも 1 つ少ないダミー変数が作成されます。棒グラフには最も重要なダミー変数のみが表示されます。他のダミー変数の係数はresults
のSimpleModel
プロパティを使用して確認できます。すべてのカテゴリカル ダミー変数を含む並べ替えられた係数の値を表示します。
[~,I] = sort(abs(results.SimpleModel.Beta),'descend'); table(results.SimpleModel.ExpandedPredictorNames(I)',results.SimpleModel.Beta(I),...'VariableNames',{'Exteded Predictor Name','Coefficient'})
ans=17×2 tableExteded Predictor Name Coefficient __________________________ ___________ {'Horsepower' } -3.4485e-05 {'Model_Year (74 vs. 70)'} -6.1279e-07 {'Model_Year (80 vs. 70)'} -4.015e-07 {'Model_Year (81 vs. 70)'} 3.4176e-07 {'Model_Year (82 vs. 70)'} -2.2483e-07 {'Cylinders (6 vs. 8)' } -1.9024e-07 {'Model_Year (76 vs. 70)'} 1.8136e-07 {'Cylinders (5 vs. 8)' } 1.7461e-07 {'Model_Year (71 vs. 70)'} 1.558e-07 {'Model_Year (75 vs. 70)'} 1.5456e-07 {'Model_Year (77 vs. 70)'} 1.521e-07 {'Model_Year (78 vs. 70)'} 1.4272e-07 {'Model_Year (72 vs. 70)'} 6.7001e-08 {'Model_Year (73 vs. 70)'} 4.7214e-08 {'Cylinders (4 vs. 8)' } 4.5118e-08 {'Model_Year (79 vs. 70)'} -2.2598e-08 ⋮
入力引数
results
—LIME の結果
lime
オブジェクト
LIME の結果。lime
オブジェクトとして指定します。results
のSimpleModel
プロパティは、あてはめ済みの単純なモデルを含んでいなければなりません。
参照
[1] Ribeiro, Marco Tulio, S. Singh, and C. Guestrin. "'Why Should I Trust You?': Explaining the Predictions of Any Classifier." In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 1135–44. San Francisco, California: ACM, 2016.
バージョン履歴
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select:.
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina(Español)
- Canada(English)
- United States(English)
Europe
- Belgium(English)
- Denmark(English)
- Deutschland(Deutsch)
- España(Español)
- Finland(English)
- France(Français)
- Ireland(English)
- Italia(Italiano)
- Luxembourg(English)
- Netherlands(English)
- Norway(English)
- Österreich(Deutsch)
- Portugal(English)
- Sweden(English)
- Switzerland
- United Kingdom(English)