使用 SHAP 进行本地可解释性

Python 可解释性 AI

Fouad Trad

Machine Learning Engineer

全局 vs 本地可解释性

全局可解释性
  • 模型整体行为
  • 不能解释单个样本

教授向全班解释总体表现。

本地可解释性
  • 解释特定数据点的预测
  • 对敏感场景至关重要

教授向一位学生解释其成绩原因。

1 图像由 DALL·E 生成
Python 可解释性 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 可解释性 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 可解释性 AI

SHAP 瀑布图

  • 展示特征如何提升或降低模型预测

一个瀑布图,展示多个特征及其对预测的贡献。

Python 可解释性 AI

SHAP 瀑布图

  • 展示特征如何提升或降低模型预测

同一瀑布图,展示作为预测起点的基线值。

Python 可解释性 AI

SHAP 瀑布图

  • 展示特征如何提升或降低模型预测

同一瀑布图,说明在瀑布图中,向右推动的特征提高预测,向左推动的特征降低预测。

Python 可解释性 AI

绘制瀑布图

shap.waterfall_plot(

shap.Explanation(
values=shap_values[:,1],
base_values=explainer.expected_value[1],
data=test_instance,
feature_names=X.columns
)
)
Python 可解释性 AI

多实例瀑布图

四个样本的瀑布图,展示不同样本以不同路径达成模型决策。

Python 可解释性 AI

Let's practice!

Python 可解释性 AI

Preparing Video For Download...