3. SHAP 核心原理:期望值、边际贡献与 SHAP 值的数学定义
SHAP(SHapley Additive exPlanations)的核心思想源自博弈论中的 Shapley 值。在机器学习中,它将每一个特征视为“玩家”,将模型的预测结果视为“合作博弈的总收益”。SHAP 的目标是公平地将预测值分配到每个特征上,使得每个特征的贡献之和等于模型预测与平均预测的差值。
3.1 期望值:模型预测的基准
在 SHAP 框架中,期望值(Expected Value)是所有样本预测的平均值,通常记为 E[f(x)]。它代表了在没有特定样本信息时,模型对目标变量的“先验”预测。对于分类模型,期望值通常是训练集预测概率的平均值;对于回归模型,则是预测值的平均值。
对于一个具体样本 x,其模型预测值 f(x) 可以分解为:
f(x) = E[f(x)] + Σ φ_i
其中 φ_i 是第 i 个特征的 SHAP 值。期望值作为基准点,所有特征的贡献之和决定了预测值偏离基准的程度。
3.2 边际贡献:特征加入时的增量影响
边际贡献(Marginal Contribution)衡量的是,在已有特征子集 S 的基础上,加入一个新特征 i 后,模型预测值的变化量。其数学定义为:
Δ_i(S) = f(S ∪ {i}) - f(S)
其中 f(S) 表示仅使用特征子集 S 中的特征时模型的预测值。由于特征之间存在交互作用,同一个特征在不同特征组合下的边际贡献可能不同。SHAP 值正是通过对所有可能的特征子集进行加权平均,来公平地计算每个特征的平均边际贡献。
| 特征子集 S | 加入特征 A 前的预测 f(S) | 加入特征 A 后的预测 f(S∪{A}) | 边际贡献 Δ_A(S) |
|---|---|---|---|
| ∅(空集) | E[f(x)] = 0.50 | f({A}) = 0.65 | +0.15 |
| {B} | f({B}) = 0.55 | f({A, B}) = 0.72 | +0.17 |
| {C} | f({C}) = 0.48 | f({A, C}) = 0.60 | +0.12 |
| {B, C} | f({B, C}) = 0.58 | f({A, B, C}) = 0.80 | +0.22 |
上表展示了特征 A 在不同特征子集下的边际贡献。由于特征交互,边际贡献从 +0.12 到 +0.22 不等。SHAP 值需要综合所有这些情况。
3.3 SHAP 值的数学定义与计算公式
SHAP 值 φ_i 是特征 i 在所有可能特征子集上的边际贡献的加权平均值。其精确数学定义为:
φ_i = Σ_{S ⊆ N \ {i}} [ |S|! (|N| - |S| - 1)! / |N|! ] × [ f(S ∪ {i}) - f(S) ]
其中:
N是所有特征的集合,|N|是特征总数。S是不包含特征i的任意特征子集。|S|!和(|N|-|S|-1)!是排列组合的权重因子。f(S ∪ {i}) - f(S)是特征i在子集S上的边际贡献。
该公式满足以下四个公理,确保了分配的公平性:
- 效率性(Efficiency): 所有特征的 SHAP 值之和等于预测值与期望值的差值。
- 对称性(Symmetry): 如果两个特征在所有子集中的边际贡献相同,则它们的 SHAP 值相等。
- 虚拟性(Dummy): 如果一个特征对任何子集都没有贡献,其 SHAP 值为 0。
- 可加性(Additivity): 对于两个独立模型,合并后的 SHAP 值等于各自 SHAP 值之和。
3.4 SHAP 值的计算流程
下图展示了从模型预测到 SHAP 值输出的完整计算流程:
3.5 特征交互与 SHAP 值的分解
SHAP 值不仅可以衡量单个特征的主效应,还可以通过 SHAP 交互值(SHAP Interaction Values)来量化特征之间的交互效应。特征 i 和特征 j 的交互 SHAP 值定义为:
φ_{i,j} = Σ_{S ⊆ N \ {i,j}} [ |S|! (|N| - |S| - 2)! / (|N| - 1)! ] × [ f(S ∪ {i,j}) - f(S ∪ {i}) - f(S ∪ {j}) + f(S) ]
此时,特征 i 的总 SHAP 值可以分解为:
φ_i = φ_i^main + Σ_{j ≠ i} φ_{i,j}
其中 φ_i^main 是特征 i 的主效应,φ_{i,j} 是特征 i 与特征 j 的交互效应。这种分解能力使得 SHAP 成为解释复杂模型(如 GBDT、神经网络)中特征交互行为的强大工具。
3.6 SHAP 值的性质总结
| 性质 | 数学表达 | 实际意义 |
|---|---|---|
| 效率性 | Σ φ_i = f(x) - E[f(x)] | 所有特征贡献之和等于预测偏差 |
| 对称性 | 若 Δ_i(S) = Δ_j(S) ∀S,则 φ_i = φ_j | 贡献相同的特征获得相同 SHAP 值 |
| 虚拟性 | 若 Δ_i(S) = 0 ∀S,则 φ_i = 0 | 无贡献的特征 SHAP 值为 0 |
| 可加性 | φ_i(f+g) = φ_i(f) + φ_i(g) | 集成模型的 SHAP 值可分解 |
| 线性性 | φ_i(αf) = α·φ_i(f) | 模型缩放时 SHAP 值等比缩放 |