跳转至

通俗讲解SHAP值计算

以下内容由AI生成

SHAP值(SHapley Additive exPlanations)是一种基于博弈论的解释方法,用于解释机器学习模型的预测结果。它的核心思想是将每个特征视为一个“玩家”,这些玩家共同合作来产生一个预测结果。SHAP值通过计算每个特征在不同组合中的边际贡献,来衡量每个特征对预测结果的贡献度。

壹丨通俗解释

假设我们有一个机器学习模型,它的输入是多个特征,输出是一个预测结果。我们想知道每个特征对这个预测结果的贡献有多大。可以将这个问题类比为一群人(特征)合作完成一项任务(预测),我们想知道每个人(特征)在这项任务中的贡献。

1. 边际贡献

首先,我们需要计算每个特征在不同组合中的边际贡献。边际贡献是指在已有特征组合的基础上,加入一个新特征后,预测结果的变化量。例如:

  • 假设我们有三个特征 \(A\)\(B\)\(C\)
  • 我们先计算只有特征 \(A\) 时的预测结果,然后计算加入特征 \(B\) 后的预测结果,二者的差值就是特征 \(B\) 的边际贡献。

2. 所有可能的组合

为了公平地衡量每个特征的贡献,我们需要考虑所有可能的特征组合。例如,对于特征 \(A\),我们需要计算它在以下所有组合中的边际贡献:

  • 只有 \(A\)
  • \(A\)\(B\)
  • \(A\)\(C\)
  • \(A\)\(B\)\(C\)

3. 平均边际贡献

对于每个特征,我们计算它在所有可能组合中的边际贡献,然后取平均值。这个平均值就是该特征的 SHAP 值。SHAP 值表示该特征在所有可能组合中的平均贡献度。

贰丨数学公式

SHAP 值的计算基于 Shapley 值,Shapley 值的公式如下:

\[ \phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|! (|N| - |S| - 1)!}{|N|!} \left[ f(S \cup \{i\}) - f(S) \right] \]

其中:

  • \(\phi_i\) 是特征 \(i\) 的 SHAP 值。
  • \(N\) 是所有特征的集合。
  • \(S\) 是特征 \(N\) 中的一个子集,不包含特征 \(i\)
  • \(|S|\) 是子集 \(S\) 的大小。
  • \(f(S)\) 是只包含子集 \(S\) 的特征时的模型预测值。
  • \(f(S \cup \{i\})\) 是包含子集 \(S\) 和特征 \(i\) 时的模型预测值。

叁丨计算过程

  1. 选择一个特征 \(i\)
  2. 遍历所有不包含特征 \(i\) 的子集 \(S\)
  3. 计算特征 \(i\) 在子集 \(S\) 中的边际贡献\(f(S \cup \{i\}) - f(S)\)
  4. 根据子集大小的权重,计算加权平均

肆丨示例

假设我们有一个简单的模型,输入是两个特征 \(A\)\(B\),输出是一个预测结果。我们想知道特征 \(A\)\(B\) 的 SHAP 值。

  1. 计算特征 \(A\) 的 SHAP 值

  2. 只有 \(A\) 时的预测结果:\(f(\{A\})\)

  3. \(A\)\(B\) 时的预测结果:\(f(\{A, B\})\)
  4. 只有 \(B\) 时的预测结果:\(f(\{B\})\)
  5. 无特征时的预测结果:\(f(\{\})\)

特征 \(A\) 的 SHAP 值:

\[ \phi_A = \frac{1}{2} \left[ f(\{A\}) - f(\{\}) \right] + \frac{1}{2} \left[ f(\{A, B\}) - f(\{B\}) \right] \]
  1. 计算特征 \(B\) 的 SHAP 值

  2. 只有 \(B\) 时的预测结果:\(f(\{B\})\)

  3. \(A\)\(B\) 时的预测结果:\(f(\{A, B\})\)
  4. 只有 \(A\) 时的预测结果:\(f(\{A\})\)
  5. 无特征时的预测结果:\(f(\{\})\)

特征 \(B\) 的 SHAP 值:

\[ \phi_B = \frac{1}{2} \left[ f(\{B\}) - f(\{\}) \right] + \frac{1}{2} \left[ f(\{A, B\}) - f(\{A\}) \right] \]

通过这种方式,我们可以计算每个特征的 SHAP 值,衡量它们对模型预测结果的贡献度。