plot
説明
は、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)
ID 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 table
WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry
_____ _____ _______ ________ ____ ________
0.239 0.463 0.065 2.924 0.34 2
rng('default') % For reproducibility results = lime(blackbox,'QueryPoint',queryPoint,'NumImportantPredictors',6, ... 'SimpleModelType','tree')
results = lime with properties: BlackboxModel: [1x1 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
はクエリ点の重要な予測子として財務比率変数 MVE_BVTD
および RE_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 table
Predictor Importance
____________________
MVE_BVTD 0.088412
RE_TA 0.0018061
線形単純モデルを使用した予測の説明
回帰モデルの学習を行い、線形単純モデルを使用する lime
オブジェクトを作成します。lime
オブジェクトを作成するときに、クエリ点と重要な予測子の数を指定しなかった場合、ソフトウェアは合成データ セットの標本を生成しますが、単純モデルの当てはめは行いません。オブジェクト関数 fit
を使用して、クエリ点に単純モデルを当てはめます。次に、オブジェクト関数 plot
を使用して、当てはめた線形単純モデルの係数を表示します。
carbig
データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
load carbig
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 reproducibility mdl = fitrkernel(tblX,tbl.MPG,'CategoricalPredictors',[2 5]);
lime
オブジェクトを作成します。mdl
には予測子データが含まれないため、予測子データ セットを指定します。
results = lime(mdl,tblX)
results = lime with properties: BlackboxModel: [1x1 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 table
Acceleration 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',{'Expanded Predictor Name','Coefficient'})
ans=17×2 table
Expanded 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.
バージョン履歴
R2020b で導入
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)