このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
plot
説明
plot(
は、explainer
)shapley
オブジェクト explainer
のシャープレイ値の横棒グラフを作成します。これらの値はオブジェクトの ShapleyValues
プロパティに格納されています。各棒グラフは、クエリ点 (explainer.
) について blackbox モデル (QueryPoint
explainer.
) 内の各特徴量のシャープレイ値を示します。BlackboxModel
plot(
では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、explainer
,Name,Value
)'NumImportantPredictors',5
と指定して、絶対シャープレイ値が上位の特徴量のうち 5 つの特徴量のシャープレイ値をプロットします。
b = plot(___)
は、前の構文におけるいずれかの入力引数の組み合わせを使用して、棒グラフ オブジェクト b
を返します。b
を使用して、作成後の棒グラフの Bar のプロパティ をクエリまたは変更します。
例
すべてのクラスのシャープレイ値のプロット
分類モデルの学習を行い、shapley
オブジェクトを作成します。次に、オブジェクト関数 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' }
関数fitcecoc
を使用して、信用格付けの blackbox モデルに学習させます。tbl
内の 2 ~ 7 列目の変数を予測子変数として使用します。クラス名を指定してクラスの順序を設定することが推奨されます。
blackbox = fitcecoc(tbl,'Rating', ... 'PredictorNames',tbl.Properties.VariableNames(2:7), ... 'CategoricalPredictors','Industry', ... 'ClassNames',{'AAA' 'AA' 'A' 'BBB' 'BB' 'B' 'CCC'});
最後の観測値の予測を説明する shapley
オブジェクトを作成します。計算速度を向上するには、tbl
の観測値の 25% を階層的にサブサンプリングし、その標本を使用してシャープレイ値を計算します。
queryPoint = tbl(end,:)
queryPoint=1×8 table
ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry Rating
_____ _____ _____ _______ ________ ____ ________ ______
73104 0.239 0.463 0.065 2.924 0.34 2 {'AA'}
rng('default') % For reproducibility c = cvpartition(tbl.Rating,'Holdout',0.25); tbl_s = tbl(test(c),:); explainer = shapley(blackbox,tbl_s,'QueryPoint',queryPoint);
分類モデルの場合、shapley
は各クラスの予測クラス スコアを使用してシャープレイ値を計算します。ShapleyValues
プロパティの値を表示します。
explainer.ShapleyValues
ans=6×8 table
Predictor AAA AA A BBB BB B CCC
__________ _________ __________ ___________ __________ ___________ __________ __________
"WC_TA" 0.051042 0.022644 0.0096138 0.0015954 -0.027857 -0.04134 -0.039475
"RE_TA" 0.16729 0.094789 0.05308 -0.011178 -0.087689 -0.20847 -0.29204
"EBIT_TA" 0.0012014 0.00053338 0.00043344 0.00012321 -0.00066994 -0.0013388 -0.0011793
"MVE_BVTD" 1.3377 1.338 0.67839 -0.027654 -0.55142 -0.75327 -0.59577
"S_TA" -0.012482 -0.009097 -0.00074119 -0.0035582 -7.3462e-05 0.0014495 -0.0020609
"Industry" -0.099102 -0.046871 0.0031376 0.080071 0.089726 0.099699 0.15692
ShapleyValues
プロパティには、クラスごとにすべての特徴量のシャープレイ値が格納されています。
関数 plot
を使用して予測クラスのシャープレイ値をプロットします。
plot(explainer)
横棒グラフは、絶対値で並べ替えられた、すべての変数のシャープレイ値を示します。各シャープレイ値は、クエリ点についてのスコアに関して対応する変数が原因で生じた予測クラスの平均スコアからの偏差を説明します。
explainer.BlackboxModel
ですべてのクラス名を指定して、すべてのクラスのシャープレイ値をプロットします。
plot(explainer,'ClassNames',explainer.BlackboxModel.ClassNames)
プロットする重要な予測子の数の指定
回帰モデルの学習を行い、shapley
オブジェクトを作成します。オブジェクト関数 fit
を使用して、指定したクエリ点のシャープレイ値を計算します。次に、オブジェクト関数 plot
を使用して、予測子のシャープレイ値をプロットします。関数 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);
関数fitrkernel
を使用して MPG
の blackbox モデルの学習を行います。
rng('default') % For reproducibility mdl = fitrkernel(tbl,'MPG','CategoricalPredictors',[2 5]);
shapley
オブジェクトを作成します。mdl
には学習データが含まれないため、データ セット tbl
を指定します。
explainer = shapley(mdl,tbl)
explainer = shapley with properties: BlackboxModel: [1x1 RegressionKernel] QueryPoint: [] BlackboxFitted: [] ShapleyValues: [] NumSubsets: 64 X: [392x7 table] CategoricalPredictors: [2 5] Method: 'interventional-kernel' Intercept: 22.6202
explainer
は、学習データ tbl
を X
プロパティに格納します。
tbl
の最初の観測値についてすべての予測子変数のシャープレイ値を計算します。
queryPoint = tbl(1,:)
queryPoint=1×7 table
Acceleration Cylinders Displacement Horsepower Model_Year Weight MPG
____________ _________ ____________ __________ __________ ______ ___
12 8 307 130 70 3504 18
explainer = fit(explainer,queryPoint);
回帰モデルの場合、shapley
は予測応答を使用してシャープレイ値を計算し、ShapleyValues
プロパティに格納します。ShapleyValues
プロパティの値を表示します。
explainer.ShapleyValues
ans=6×2 table
Predictor ShapleyValue
______________ ____________
"Acceleration" -0.1561
"Cylinders" -0.18306
"Displacement" -0.34203
"Horsepower" -0.27291
"Model_Year" -0.2926
"Weight" -0.32402
関数 plot
を使用して、クエリ点のシャープレイ値をプロットします。'NumImportantPredictors',5
を指定して、予測応答について最も重要な 5 つの予測子のみをプロットします。
plot(explainer,'NumImportantPredictors',5)
横棒グラフは、絶対値で並べ替えられた、5 つの最も重要な予測子のシャープレイ値を示します。各シャープレイ値は、クエリ点についての予測に関して対応する変数が原因で生じた平均からの偏差を説明します。
入力引数
explainer
— blackbox モデルを説明するオブジェクト
shapley
オブジェクト
blackbox モデルを説明するオブジェクト。shapley
オブジェクトとして指定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: plot(explainer,'NumImportantPredictors',5,'ClassNames',c)
は、クラス c
について 5 つの最も重要な予測子のシャープレイ値を示す棒グラフを作成します。
NumImportantPredictors
— プロットする重要な予測子の数
min(M,10)
(M
は予測子の数) (既定値) | 正の整数
プロットする重要な予測子の数。正の整数を指定します。関数 plot
は、絶対シャープレイ値が上位の予測子のうち指定された数の予測子のシャープレイ値をプロットします。
例: 'NumImportantPredictors',5
は、上位 5 つの重要な予測子をプロットするように指定します。関数 plot
は、絶対シャープレイ値を使用して重要度の順序を決定します。
データ型: single
| double
ClassNames
— プロットするクラス ラベル
explainer.BlackboxFitted
(既定値) | categorical 配列 | 文字配列 | logical ベクトル | 数値ベクトル | 文字ベクトルの cell 配列
プロットするクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。'ClassNames'
値の値とデータ型は、explainer
における機械学習モデルの ClassNames
プロパティ (explainer.BlackboxModel.ClassNames
) のクラス名のものと一致しなければなりません。
1 つ以上のラベルを指定できます。複数のクラス ラベルを指定した場合は、各特徴量の複数の棒グラフが異なる色でプロットされます。
既定値は、クエリ点についての予測クラス (explainer
の BlackboxFitted
プロパティ) です。
この引数は、explainer
の機械学習モデル (BlackboxModel
) が分類モデルである場合のみ有効です。
例: 'ClassNames',{'red','blue'}
例: 'ClassNames',explainer.BlackboxModel.ClassNames
は、'ClassNames'
として BlackboxModel
内のすべてのクラスを指定します。
データ型: single
| double
| logical
| char
| cell
| categorical
詳細
シャープレイ値
ゲーム理論におけるプレーヤーのシャープレイ値とは、協力ゲームでのプレーヤーの平均限界貢献度です。機械学習予測のコンテキストでは、クエリ点の特徴量のシャープレイ値は、指定したクエリ点での予測 (回帰の場合は応答、分類の場合は各クラスのスコア) に対する特徴量の寄与を説明します。
クエリ点の特徴量のシャープレイ値は、平均予測からの偏差に対する特徴量の寄与です。クエリ点について、すべての特徴量に関するシャープレイ値の合計は、予測の平均からの合計偏差に対応します。つまり、平均予測とすべての特徴量に関するシャープレイ値の合計は、クエリ点についての予測に対応します。
詳細については、機械学習モデルのシャープレイ値を参照してください。
参照
[1] Lundberg, Scott M., and S. Lee. "A Unified Approach to Interpreting Model Predictions." Advances in Neural Information Processing Systems 30 (2017): 4765–774.
[2] Aas, Kjersti, Martin Jullum, and Anders Løland. "Explaining Individual Predictions When Features Are Dependent: More Accurate Approximations to Shapley Values." Artificial Intelligence 298 (September 2021).
[3] Lundberg, Scott M., G. Erion, H. Chen, et al. "From Local Explanations to Global Understanding with Explainable AI for Trees." Nature Machine Intelligence 2 (January 2020): 56–67.
バージョン履歴
R2021a で導入
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)