SHAP 可解释性

Python 可解释性 AI

Fouad Trad

Machine Learning Engineer

SHAP 简介

  • SHAPSHapley Additive exPlanations
  • 与模型无关的方法
  • 源自博弈论中的 Shapley 值
  • SHAP 值 → 量化各特征对预测的贡献

SHAP 标志

Python 可解释性 AI

在乐队成员间分配利润

一支乐队的图片。

Python 可解释性 AI

SHAP 解释器

 

  • 计算 SHAP 值
  • 树解释器 → 适用于树模型

图示:SHAP 解释器分为通用解释器(适用于任意模型)与类型特定解释器(为特定模型优化)。

Python 可解释性 AI

录取数据集

GRE 分数 TOEFL 分数 大学评级 SOP LOR CGPA 录取概率 是否录取
337 118 4 4.5 4.5 9.65 0.92 1
324 107 4 4 4.5 8.87 0.76 1
316 104 3 3 3.5 8 0.72 1
322 110 3 3.5 2.5 8.67 0.8 1
314 103 2 2 3 8.21 0.45 0

 

  • rf_reg:预测录取概率
  • rf_class:预测是否录取
  • X:包含特征的数据框
Python 可解释性 AI

计算 SHAP 值

import shap
回归
explainer_reg = shap.TreeExplainer(rf_reg)

shap_values_reg = explainer_reg.shap_values(X)
分类
explainer_class = shap.TreeExplainer(rf_class)

shap_values_class = explainer_class.shap_values(X)
Python 可解释性 AI

理解 SHAP 输出

回归
print(shap_values_reg.shape)  
(400, 6)

图示:SHAP 值表与 X 数据框维度一致(样本数、特征数)

Python 可解释性 AI

理解 SHAP 输出

回归
print(shap_values_reg.shape)  
(400, 6)

图示:SHAP 值表与 X 数据框维度一致(样本数、特征数)

分类
print(shap_values_class.shape)
(400, 6, 2)

选择正类的值

positive_values = shap_values_class[:,:,1]
Python 可解释性 AI

特征重要性

mean_shap_values_class = np.abs(shap_values_class[:, :, 1]).mean(axis=0)
mean_shap_values_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X_train.columns, mean_shap_values_class) plt.bar(X_train.columns, mean_shap_values_reg)

图示:回归与分类的特征重要性,突出 CGPA 与 GRE 分数对录取预测影响最大。

Python 可解释性 AI

Vamos praticar!

Python 可解释性 AI

Preparing Video For Download...