3. SHAP 核心概念:期望值、边际贡献与 SHAP 值的数学定义

SHAP(SHapley Additive exPlanations)的核心思想源自博弈论中的 Shapley 值。要理解 SHAP 如何解释模型,必须掌握三个基础概念:期望值、边际贡献以及SHAP 值的数学定义。本节将逐一拆解这些概念,并说明它们如何共同构成模型可解释性的理论基础。

3.1 期望值:预测的基准点

在 SHAP 框架中,期望值(Expected Value)是所有预测的平均基准。它代表在没有任何特征信息的情况下,模型对目标变量的“默认”预测。

  • 数学表达:对于训练数据集 \( D = \{x^{(1)}, x^{(2)}, ..., x^{(n)}\} \),模型 \( f \) 的期望值为:
    E[f(x)] ≈ (1/n) * Σ f(x^{(i)})
  • 直观理解:期望值相当于“全局平均预测值”。例如,在房价预测模型中,期望值可能是所有训练样本预测房价的平均值,如 50 万美元。
  • 在 SHAP 中的作用:期望值是 SHAP 解释的起点。对于单个预测样本,其预测值可以表示为:
    f(x) = E[f(x)] + Σ SHAP_j
    其中 \( SHAP_j \) 是第 \( j \) 个特征的贡献值。这意味着:预测值 = 基准值 + 所有特征的贡献之和。
💡 关键理解:期望值将模型预测“锚定”在一个可解释的全局基准上。所有特征的 SHAP 值都是相对于这个基准的“偏移量”,正数表示该特征将预测值推高,负数表示推低。

3.2 边际贡献:特征在合作中的价值

边际贡献(Marginal Contribution)衡量的是:在已有某些特征信息的情况下,加入一个新特征对模型预测带来的变化量。

  • 定义:对于特征子集 \( S \)(不包含特征 \( j \)),特征 \( j \) 的边际贡献为:
    Δ_j(S) = f(S ∪ {j}) - f(S)
    其中 \( f(S) \) 表示仅使用子集 \( S \) 中的特征时模型的预测值。
  • 核心思想:边际贡献不是孤立计算的,而是依赖于上下文(即已经存在的特征集合 \( S \))。同一个特征在不同的特征组合中,其边际贡献可能完全不同。
  • 示例:在预测信用风险时,“收入”特征在已有“负债率”特征时的边际贡献,与没有“负债率”时的边际贡献可能差异很大。
⚠️ 注意:边际贡献的“上下文依赖性”是 SHAP 能够捕捉特征交互效应的关键。它避免了简单线性归因的缺陷,能够反映特征之间的协同或抵消关系。

3.3 SHAP 值的数学定义与性质

SHAP 值本质上是所有可能特征组合下边际贡献的加权平均。它通过考虑所有可能的特征子集顺序,公平地分配每个特征的贡献。

3.3.1 数学定义

对于特征 \( j \),其 SHAP 值 \( \phi_j \) 定义为:

ϕ_j = Σ_{S ⊆ N \ {j}} [ |S|! * (|N| - |S| - 1)! / |N|! ] * [ f(S ∪ {j}) - f(S) ]

其中:

  • \( N \):所有特征的集合,\( |N| \) 为特征总数。
  • \( S \):不包含特征 \( j \) 的特征子集。
  • \( f(S) \):仅使用子集 \( S \) 中特征时的模型预测值。
  • \( |S|! * (|N| - |S| - 1)! / |N|! \):权重系数,确保所有特征子集顺序被公平考虑。

3.3.2 核心性质

性质 数学表达 直观解释
局部准确性 \( f(x) = \phi_0 + \sum_{j=1}^{M} \phi_j \) 所有特征的 SHAP 值之和加上期望值,精确等于模型预测值。
对称性 若 \( f(S ∪ {i}) = f(S ∪ {j}) \) 对所有 \( S \) 成立,则 \( \phi_i = \phi_j \) 两个特征对模型贡献相同时,它们的 SHAP 值相等。
虚拟性 若 \( f(S ∪ {j}) = f(S) \) 对所有 \( S \) 成立,则 \( \phi_j = 0 \) 对模型预测无影响的特征,其 SHAP 值为 0。
可加性 对于两个独立模型 \( f \) 和 \( g \),\( \phi_j(f+g) = \phi_j(f) + \phi_j(g) \) 多个模型的 SHAP 值可以线性叠加。
🔑 性质的重要性:这四个性质确保了 SHAP 值是唯一满足所有条件的特征归因方法。其中“局部准确性”是 SHAP 用于单样本解释的基础;“对称性”和“虚拟性”保证了分配的公平性;“可加性”使得 SHAP 可以用于集成模型。

3.4 SHAP 值计算流程

下图展示了从模型预测到生成 SHAP 解释值的完整流程:

SHAP 值计算与解释流程 输入样本 x 特征值:x₁, x₂, ..., xₘ 模型 f(x) 预测值:f(x) 期望值 E[f(x)] 全局平均基准 边际贡献计算 对所有特征子集 S ⊆ N\{j},计算 Δⱼ(S) = f(S ∪ {j}) - f(S) 考虑所有可能的特征组合顺序 SHAP 值 ϕⱼ 加权平均所有边际贡献:ϕⱼ = Σ w(S) · Δⱼ(S) 解释 输出 可视化 瀑布图 核心公式:f(x) = E[f(x)] + Σ ϕⱼ | 每个 ϕⱼ 是所有特征子集下边际贡献的公平加权平均

3.5 期望值与 SHAP 值的关系

为了更直观地理解期望值、边际贡献和 SHAP 值之间的关系,下图展示了它们如何共同构成一个完整的解释框架:

期望值、边际贡献与 SHAP 值的关系 期望值 E[f(x)] 全局基准 所有样本预测的平均值 边际贡献 Δⱼ(S) 上下文依赖 f(S∪{j}) - f(S) SHAP 值 ϕⱼ 公平分配 加权平均所有 Δⱼ(S) 三者如何协同工作? 1. 期望值 提供解释的起点(基准线)。 2. 边际贡献 衡量特征在不同上下文中的局部影响。 3. SHAP 值 对所有边际贡献进行加权平均,得到每个特征的唯一贡献值。 最终:f(x) = E[f(x)] + ϕ₁ + ϕ₂ + ... + ϕₘ

3.6 实际应用中的计算挑战

理论上,SHAP 值需要遍历所有 \( 2^M \) 个特征子集(\( M \) 为特征数量),这在特征较多时计算量巨大。实际应用中采用以下近似方法:

  • Kernel SHAP:基于核方法的近似,适用于任意模型。
  • Tree SHAP:针对树模型的优化算法,利用树结构高效计算。
  • Deep SHAP:针对深度学习模型的近似方法。
📌 课程实践提示:在后续的变量分箱案例中,我们将使用 Tree SHAP 对分箱后的特征进行解释。分箱操作会减少特征的可能取值数量,从而在一定程度上降低 SHAP 值的计算复杂度,同时增强解释的稳定性。