3.2 KiB
3.2 KiB
title, type, tags, last_updated
| title | type | tags | last_updated | |||
|---|---|---|---|---|---|---|
| SHAP (SHapley Additive exPlanations) | concept |
|
2026-04-25 |
Definition
SHAP(SHapley Additive exPlanations)是一种基于博弈论 Shapley 值的模型可解释性框架,为每个特征的贡献提供统一的量化度量。通过计算每个特征在所有可能的特征组合中的边际贡献均值,SHAP 给出唯一且公平的归因值。
Core Concepts
Global Interpretability
- SHAP Summary Plot (Beeswarm):同时展示特征值方向和影响幅度的散点图,横轴为 SHAP 值,纵轴为特征,颜色编码特征值高低
- SHAP Bar Plot:各特征 mean |SHAP| 排序,展示整体特征重要性
- 应用场景:与文档化特征理由对比,识别未在方法论文档中讨论但实际影响显著的"隐性特征"
Local Interpretability
- SHAP Waterfall Plot:解释单个预测——从基础值(base value)出发,逐特征展示其推动预测的方向和幅度
- SHAP Force Plot:可视化单个预测的特征贡献,常用于高风险决策解释
- 应用场景:边缘案例预测(top/bottom decile、误分类记录)的深度分析
SHAP Interaction Values
- 检测特征之间的依赖和交互效应
- 将总 SHAP 贡献分解为:主效应 + 交互效应
- 用于识别模型学习到的非预期特征交互
Usage
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
# Global: beeswarm
shap.summary_plot(shap_values, X, show=False)
plt.savefig("shap_beeswarm.png", dpi=150)
# Global: bar
shap.summary_plot(shap_values, X, plot_type="bar", show=False)
plt.savefig("shap_importance.png", dpi=150)
# Local: waterfall
explanation = explainer(X.iloc[[idx]])
shap.plots.waterfall(explanation[0], show=False)
plt.savefig(f"shap_waterfall_{idx}.png", dpi=150)
Model QA 中的应用
Model QA Specialist 使用 SHAP 进行以下审计:
- 全局分析:对比 SHAP 特征重要性与文档化特征理由,发现未记录的高贡献特征
- PDP 交叉验证:SHAP 分析结合 PDP 验证特征方向是否符合预期
- 局部解释:边缘案例的 SHAP waterfall 揭示模型决策机制
- 稳定性监测:跨时间窗口的 SHAP 排名变化反映特征重要性漂移
Relationship
- 依赖 Population-Stability-Index:PSI 监测特征分布漂移,SHAP 监测特征贡献变化,两者结合才能完整评估模型健康度
- 依赖 Calibration-Testing:SHAP 解释模型"为什么"预测,校准测试验证模型"多准确"预测
- 依赖 Discrimination-Metrics:SHAP 贡献分析在 AUC/Gini 判定模型整体可用之后进行细节诊断
- 支撑 Partial-Dependence-Plots:PDP 提供边际效应可视化,SHAP 提供精确归因,两者互补
Key Limitations
- 计算复杂度:精确 Shapley 值计算为指数级,TreeExplainer 对树模型高效但对神经网络等黑盒模型需用 KernelExplainer(采样近似)
- 交互效应分离:当特征高度相关时,Shapley 值归因可能不稳定
- 基准依赖:Shapley 值的解释力取决于基准(base value)的选取