plot
Local Interpretable Model-agnostic Explanations (LIME) の結果のプロット
説明
plot(
は、results
)lime
オブジェクト results
の LIME の結果を可視化します。 (R2023b 以降)
横棒グラフに、
results
の単純なモデル (results
のSimpleModel
プロパティ) に応じて、単純な線形モデルの係数値または単純な決定木モデルの予測子の重要度の値が表示されます。プロットに、機械学習モデルと単純なモデルをそれぞれ使用して計算されたクエリ点の 2 つの予測が表示されます。これらの値は、
results
のBlackboxFitted
プロパティとSimpleModelFitted
プロパティに対応します。
例
回帰モデルの学習を行い、線形単純モデルを使用する 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: [1×1 RegressionKernel] DataLocality: 'global' CategoricalPredictors: [2 5] Type: 'regression' X: [392×6 table] QueryPoint: [] NumImportantPredictors: [] NumSyntheticData: 5000 SyntheticData: [5000×6 table] Fitted: [5000×1 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
をプロットします。
plot(results)
プロットには、クエリ点についての 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.5035e-05
{'Model_Year (74 vs. 70)'} -6.1591e-07
{'Model_Year (80 vs. 70)'} -3.9803e-07
{'Model_Year (81 vs. 70)'} 3.4186e-07
{'Model_Year (82 vs. 70)'} -2.2331e-07
{'Cylinders (6 vs. 8)' } -1.9807e-07
{'Model_Year (76 vs. 70)'} 1.816e-07
{'Cylinders (5 vs. 8)' } 1.7318e-07
{'Model_Year (71 vs. 70)'} 1.5694e-07
{'Model_Year (75 vs. 70)'} 1.5486e-07
{'Model_Year (77 vs. 70)'} 1.5151e-07
{'Model_Year (78 vs. 70)'} 1.3864e-07
{'Model_Year (72 vs. 70)'} 6.8949e-08
{'Cylinders (4 vs. 8)' } 6.3098e-08
{'Model_Year (73 vs. 70)'} 4.9696e-08
{'Model_Year (79 vs. 70)'} -2.4822e-08
⋮
分類モデルの学習を行い、単純な決定木モデルを使用する lime
オブジェクトを作成します。lime
オブジェクトを作成するときに、クエリ点と重要な予測子の数を指定して、ソフトウェアが合成データ セットの標本を生成し、重要な予測子を使って単純モデルをクエリ点に当てはめるようにします。次に、オブジェクト関数 plot
を使用して、予測子の推定重要度を単純モデルに表示します。
CreditRating_Historical
データ セットを読み込みます。データ セットには、顧客 ID、顧客の財務比率、業種ラベル、および信用格付けが格納されています。
tbl = readtable('CreditRating_Historical.dat');
table の最初の 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: [1×1 ClassificationECOC] DataLocality: 'global' CategoricalPredictors: 6 Type: 'classification' X: [3932×6 table] QueryPoint: [1×6 table] NumImportantPredictors: 6 NumSyntheticData: 5000 SyntheticData: [5000×6 table] Fitted: {5000×1 cell} SimpleModel: [1×1 ClassificationTree] ImportantPredictors: [2×1 double] BlackboxFitted: {'AA'} SimpleModelFitted: {'AA'}
オブジェクト関数 plot
を使用して、lime
オブジェクト results
をプロットします。
f = plot(results);
プロットには、クエリ点についての 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
オブジェクトとして指定します。results
の SimpleModel
プロパティは、当てはめ済みの単純なモデルを含んでいなければなりません。
R2023b 以降
プロットの座標軸。Axes
オブジェクトとして指定します。ax
を指定しない場合、plot
は、現在の座標軸を使用してプロットを作成します。Axes
オブジェクトを作成する方法の詳細については、axes
を参照してください。
参照
[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 で導入オブジェクト関数 plot
でターゲットの座標軸を指定できるようになりました。関数の最初の入力引数として Axes
オブジェクトを指定します。
出力引数 f
を指定しない場合、オブジェクト関数 plot
は Figure
オブジェクトを返さずに LIME の結果の可視化を作成します。以前のリリースでは、関数 plot
は常に Figure
オブジェクトを返していました。
LIME の結果を figure オブジェクト f
で返す場合、関数 plot
は座標軸の TickLabelInterpreter
の値を既定で 'none'
に設定します。つまり、f.CurrentAxes.TickLabelInterpreter
は 'none'
になります。以前のリリースでは、座標軸の TickLabelInterpreter
の値は既定では 'tex'
でした。'none'
値と 'tex'
値の違いの詳細については、TickLabelInterpreter
を参照してください。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)