可视化 SHAP 可解释性

Python 可解释性 AI

Fouad Trad

Machine Learning Engineer

数据集

age gender bmi children smoker charges
19 0 27.900 0 1 16884.92
18 1 33.770 1 0 1725.55
28 1 33.000 3 0 4449.46
33 1 22.705 0 0 21984.47
32 1 28.880 0 0 3866.85

model:随机森林回归器,用于预测费用

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
Python 可解释性 AI

特征重要性图

  • 显示各特征对模型输出的贡献
shap.summary_plot(shap_values, X, plot_type="bar")

特征重要性图,显示吸烟状态最重要。

Python 可解释性 AI

蜂群图(Beeswarm)

  • 展示 SHAP 值分布
  • 突出每个特征对预测的方向强度
    • 红色 → 特征值高
    • 蓝色 → 特征值低
    • SHAP 值 > 0 → 提高结果
    • SHAP 值 < 0 → 降低结果

蜂群图,显示每个特征的 SHAP 值分布,颜色表示特征取值。

Python 可解释性 AI

蜂群图(Beeswarm)

  • 展示 SHAP 值分布
  • 突出每个特征对预测的方向强度
    • 红色 → 特征值高
    • 蓝色 → 特征值低
    • SHAP 值 > 0 → 提高结果
    • SHAP 值 < 0 → 降低结果

相同的蜂群图,突出显示"smoker"特征的高取值对应正的 SHAP 值。

Python 可解释性 AI

蜂群图(Beeswarm)

  • 展示 SHAP 值分布
  • 突出每个特征对预测的方向强度
    • 红色 → 特征值高
    • 蓝色 → 特征值低
    • SHAP 值 > 0 → 提高结果
    • SHAP 值 < 0 → 降低结果
shap.summary_plot(shap_values, X, 
                  plot_type="dot")

相同的蜂群图,突出显示"smoker"特征的低取值对应负的 SHAP 值。

Python 可解释性 AI

部分依赖图(PDP)

  • 显示特征预测结果的关系
  • 展示特征在其取值范围内的影响
  • 验证关系是否符合预期

通用的部分依赖图,显示特征与结果为递减关系。

Python 可解释性 AI

部分依赖图(PDP)

  • 对每个样本:
    • 变化选定特征的取值
    • 其余特征保持不变
    • 预测结果
  • 对所有样本取平均
shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

age 特征的部分依赖图,显示随年龄上升,预测值上升。

Python 可解释性 AI

部分依赖图(PDP)

  • 对每个样本:

    • 变化选定特征的取值
    • 其余特征保持不变
    • 预测结果
  • 对所有样本取平均

shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

相同的部分依赖图,突出显示数据集中 age 取值的分布。

Python 可解释性 AI

Vamos praticar!

Python 可解释性 AI

Preparing Video For Download...