2. SHAP 基础:从博弈论到模型可解释性

SHAP(SHapley Additive exPlanations)是目前最主流的模型可解释性框架之一。它统一了六种已有的特征归因方法,并基于博弈论中的 Shapley 值为每个特征分配一个唯一的、可加性的贡献值。理解 SHAP 的核心原理,是后续将其集成到低延迟评分接口中的理论前提。

2.1 博弈论 Shapley 值原理

Shapley 值由 Lloyd Shapley 于 1953 年提出,用于解决合作博弈中如何公平分配联盟总收益的问题。其核心思想是:每个参与者的贡献应等于其在所有可能联盟顺序中的边际贡献的平均值。

核心公式(离散形式):
φi(v) = ΣS ⊆ N \ {i} [ |S|! (|N| - |S| - 1)! / |N|! ] · [ v(S ∪ {i}) - v(S) ]

其中:
  • N:所有特征的集合(联盟成员)
  • S:不包含特征 i 的特征子集
  • v(S):仅使用子集 S 中的特征时模型的预测值
  • φi:特征 i 的 Shapley 值(贡献度)

Shapley 值满足四个公理,使其成为唯一公平的分配方案:

公理 含义 在模型解释中的体现
有效性 所有特征的贡献之和等于总预测值减去基线值 ∑ φi = f(x) - E[f(x)]
对称性 若两个特征在所有子集中贡献相同,则其 Shapley 值相等 避免对等价特征的不公平偏重
虚拟性 若特征 i 在任何子集中都不增加预测值,则其 Shapley 值为 0 自动忽略无关特征
可加性 若两个独立博弈合并,则 Shapley 值可相加 支持多模型集成场景的分解

2.2 SHAP 值定义与特征贡献度分解

SHAP 将 Shapley 值引入机器学习,定义了一个加性特征归因模型:

g(z') = φ₀ + Σᵢ φᵢ · z'ᵢ

其中:
- g(z') 是解释模型
- φ₀ 是基线值(所有特征缺失时的期望预测)
- φᵢ 是特征 i 的 SHAP 值
- z'ᵢ ∈ {0, 1} 表示特征 i 是否被观测到

与原始 Shapley 值相比,SHAP 做了两个关键适配:

  • 基线值替代空联盟:用训练集平均预测代替“无特征”状态,解决机器学习中特征不能完全缺失的问题。
  • 条件期望近似:通过条件分布 E[f(x) | xS] 来估计特征子集 S 下的模型输出,避免指数级枚举。
直观理解: 假设模型预测某笔贷款违约概率为 0.8,基线违约率为 0.1。SHAP 值会将 0.7 的增量分解到各个特征上:收入低贡献 +0.3,历史逾期 +0.25,负债率高 +0.15,其余特征贡献为 0。
SHAP 值分解:从基线到预测 基线 φ₀ E[f(x)] = 0.10 + φ₁ 收入 +0.30 φ₂ 逾期 +0.25 φ₃ 负债率 +0.15 = 预测值 0.80 特征贡献累加 加性可解释性 预测值 = 基线 + 所有特征 SHAP 值之和 0.80 = 0.10 + 0.30 + 0.25 + 0.15 + 0.00(其余特征)

2.3 模型可解释性的价值

在工业级评分接口中,可解释性不再是“锦上添花”,而是合规与信任的硬性要求。SHAP 带来的核心价值体现在三个层面:

层面 具体价值 业务场景示例
合规与审计 满足 GDPR、巴塞尔协议等对“解释权”的要求 信贷拒绝时向用户提供具体原因
模型调试 发现特征异常行为、数据泄露、过拟合 发现“用户ID”特征贡献异常高
业务信任 让业务方理解模型决策逻辑,减少黑箱抵触 风控团队接受模型替代规则引擎
常见误区: SHAP 值衡量的是特征对当前预测的贡献,而非特征的重要性。一个特征可能整体重要性很低,但在某个特定样本上贡献极大。在低延迟评分接口中,我们通常为每个请求返回该样本的局部 SHAP 值,而非全局特征重要性。

2.4 SHAP 计算复杂度与近似方法

精确计算 SHAP 值需要枚举所有 2N 个特征子集,对于高维特征(N > 20)不可行。实际工程中采用以下近似策略:

  • Kernel SHAP:基于线性回归的加权近似,适用于任意模型,但计算量仍较大。
  • Tree SHAP:针对树模型的精确多项式时间算法,复杂度 O(TL2M),其中 T 为树数量,L 为叶子数,M 为最大深度。
  • Deep SHAP:针对深度神经网络的层级反向传播近似。
SHAP 计算策略:精度与速度的权衡 精确 Shapley O(2N) 枚举 仅 N ≤ 15 可用 精度↓ 速度↑ Tree SHAP O(TL2M) 精确解,推荐首选 精度↓ 速度↑ Kernel SHAP O(2K) 采样 任意模型,近似解 低延迟接口选型建议 若模型为 XGBoost/LightGBM,优先使用 Tree SHAP(精确且快) 若为深度学习模型,使用 Deep SHAP 或 Kernel SHAP 配合特征采样

2.5 本章小结