--- title: "SHAP (SHapley Additive exPlanations)" type: concept tags: [model-interpretability, feature-attribution, explainable-ai] last_updated: 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 ```python 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 进行以下审计: 1. **全局分析**:对比 SHAP 特征重要性与文档化特征理由,发现未记录的高贡献特征 2. **PDP 交叉验证**:SHAP 分析结合 PDP 验证特征方向是否符合预期 3. **局部解释**:边缘案例的 SHAP waterfall 揭示模型决策机制 4. **稳定性监测**:跨时间窗口的 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)的选取