SHAP によるローカル説明可能性

Pythonで学ぶExplainable AI

Fouad Trad

Machine Learning Engineer

グローバル vs. ローカルの説明可能性

グローバルな説明可能性
  • モデル全体の振る舞い
  • 個々のインスタンスは説明しない

教授がクラス全体の成績について説明している。

ローカルな説明可能性
  • 特定データ点の予測を説明
  • センシティブな用途で重要

教授が特定の学生に成績の理由を説明している。

1 Images generated by DALL-E
Pythonで学ぶExplainable AI

心疾患データセット

age sex chest_pain_type blood_pressure ecg_results thalassemia target
52 1 0 125 1 3 0
53 1 0 140 0 3 0
70 1 0 145 1 3 0
61 1 0 148 1 3 0
62 0 0 138 1 2 0

 

knn: 心疾患リスクを予測する KNN 分類器

Pythonで学ぶExplainable AI

SHAP によるローカル説明可能性

explainer = shap.KernelExplainer(knn.predict_proba, shap.kmeans(X, 10))

test_instance = X.iloc[0, :]
shap_values = explainer.shap_values(test_instance)
print(shap_values.shape)
(6, 2)
Pythonで学ぶExplainable AI

SHAP ウォーターフォールプロット

  • 特徴量が予測を増減させる仕組みを可視化

複数の特徴量と、それぞれの予測への寄与を示すウォーターフォールプロット。

Pythonで学ぶExplainable AI

SHAP ウォーターフォールプロット

  • 特徴量が予測を増減させる仕組みを可視化

予測の初期点として機能するベースライン値を示す同じウォーターフォールプロット。

Pythonで学ぶExplainable AI

SHAP ウォーターフォールプロット

  • 特徴量が予測を増減させる仕組みを可視化

ウォーターフォールプロットでは、右に押す特徴量は予測を増やし、左に押す特徴量は減らすことを示す同じプロット。

Pythonで学ぶExplainable AI

ウォーターフォールプロットの作成

shap.waterfall_plot(

shap.Explanation(
values=shap_values[:,1],
base_values=explainer.expected_value[1],
data=test_instance,
feature_names=X.columns
)
)
Pythonで学ぶExplainable AI

複数インスタンスのウォーターフォール

4つのサンプルそれぞれのウォーターフォールプロット。サンプルごとに異なる経路でモデルの判断に至る様子を示す。

Pythonで学ぶExplainable AI

Let's practice!

Pythonで学ぶExplainable AI

Preparing Video For Download...