写论文的时候真的困惑,为什么depent plot自动画出来的不是和某个变量的交互作用最大的变量;也好奇是不是变量重要性越高,它越可能在交互作用下有优势【回答:应该不是】。

Shapeley值理论基础


背景:

假设 A、B、C 三个人一起打车,车费总共是 100 元。每个人对车费的贡献不同,具体如下:

  • 如果只有 A 一个人打车,车费是 40 元
  • 如果只有 B 一个人打车,车费是 30 元
  • 如果只有 C 一个人打车,车费是 50 元
  • 如果 A 和 B 一起打车,车费是 60 元
  • 如果 A 和 C 一起打车,车费是 80 元
  • 如果 B 和 C 一起打车,车费是 70 元
  • 如果 A、B、C 一起打车,车费是 100 元

我们的目标是公平地分摊这 100 元车费,根据每个人对总车费的贡献来计算他们应该支付的金额。这时就可以用到 Shapley 值


Shapley 值的核心思想:

Shapley 值是一种公平分配贡献的方法,它考虑了每个人在所有可能的组合中的边际贡献。具体来说,Shapley 值的计算步骤如下:

  1. 列出所有可能的组合:包括 A、B、C 的所有可能组合(如 A 单独、A 和 B、A 和 C、A+B+C 等)。
  2. 计算每个人的边际贡献:即某个人加入一个组合后,总车费的变化。
  3. 平均边际贡献:对每个人的所有边际贡献取平均值,得到其 Shapley 值。

计算步骤:

1. 计算 A 的 Shapley 值:

A 可以加入以下组合:

  • 空集 → {A}:边际贡献 = 40 - 0 = 40 元
  • {B} → {A, B}:边际贡献 = 60 - 30 = 30 元
  • {C} → {A, C}:边际贡献 = 80 - 50 = 30 元
  • {B, C} → {A, B, C}:边际贡献 = 100 - 70 = 30 元

A 的 Shapley 值 = (40 + 30 + 30 + 30) / 4 = 32.5 元

2. 计算 B 的 Shapley 值:

B 可以加入以下组合:

  • 空集 → {B}:边际贡献 = 30 - 0 = 30 元
  • {A} → {A, B}:边际贡献 = 60 - 40 = 20 元
  • {C} → {B, C}:边际贡献 = 70 - 50 = 20 元
  • {A, C} → {A, B, C}:边际贡献 = 100 - 80 = 20 元

B 的 Shapley 值 = (30 + 20 + 20 + 20) / 4 = 22.5 元

3. 计算 C 的 Shapley 值:

C 可以加入以下组合:

  • 空集 → {C}:边际贡献 = 50 - 0 = 50 元
  • {A} → {A, C}:边际贡献 = 80 - 40 = 40 元
  • {B} → {B, C}:边际贡献 = 70 - 30 = 40 元
  • {A, B} → {A, B, C}:边际贡献 = 100 - 60 = 40 元

C 的 Shapley 值 = (50 + 40 + 40 + 40) / 4 = 42.5 元


最终结果:

根据 Shapley 值,三个人分摊车费如下:

  • A 支付:32.5 元
  • B 支付:22.5 元
  • C 支付:42.5 元

为什么 Shapley 值公平?

  1. 考虑了所有可能的组合:Shapley 值不仅考虑了个人的单独贡献,还考虑了他们在不同组合中的贡献。
  2. 边际贡献的平均值:通过对所有边际贡献取平均值,避免了单一组合的偏差。
  3. 满足公平性:Shapley 值满足以下公平性条件:
    • 效率性:所有人的分摊总和等于总车费(32.5 + 22.5 + 42.5 = 100)。
    • 对称性:如果两个人的贡献相同,他们的分摊也相同。
    • 零贡献者支付为零:如果某个人对车费没有贡献,他不需要支付。

交互 SHAP 值(Interaction SHAP Values)

交互 SHAP 值(Interaction SHAP Values)是 SHAP 值的扩展,用于衡量两个特征之间的交互作用对模型输出的影响。它可以帮助我们理解特征之间是否存在协同效应(synergy)或对抗效应(antagonism)。

下面我们仍然用 ABC 三个人分摊车费的形式来解释交互 SHAP 值。我们已经通过 Shapley 值计算了每个人的单独贡献,现在进一步分析 两个人之间的交互作用


交互 SHAP 值的核心思想:

交互 SHAP 值衡量的是两个特征一起出现时,对模型输出的额外贡献,即超出它们单独贡献的部分。具体来说,交互 SHAP 值的计算步骤如下:

  1. 计算单独贡献:使用 Shapley 值计算每个人的单独贡献。
  2. 计算联合贡献:计算两个人一起出现时的贡献。
  3. 计算交互作用联合贡献减去单独贡献,得到交互作用。

计算步骤:

1. 计算 A 和 B 的交互 SHAP 值:
  • A 的单独贡献:32.5 元
  • B 的单独贡献:22.5 元
  • A 和 B 一起打车的联合贡献:60 元

交互 SHAP 值 = 联合贡献 - (A 的单独贡献 + B 的单独贡献)
= 60 - (32.5 + 22.5)
= 5 元

2. 计算 A 和 C 的交互 SHAP 值:
  • A 的单独贡献:32.5 元
  • C 的单独贡献:42.5 元
  • A 和 C 一起打车的联合贡献:80 元

交互 SHAP 值 = 联合贡献 - (A 的单独贡献 + C 的单独贡献)
= 80 - (32.5 + 42.5)
= 5 元

3. 计算 B 和 C 的交互 SHAP 值:
  • B 的单独贡献:22.5 元
  • C 的单独贡献:42.5 元
  • B 和 C 一起打车的联合贡献:70 元

交互 SHAP 值 = 联合贡献 - (B 的单独贡献 + C 的单独贡献)
= 70 - (22.5 + 42.5)
= 5 元


结果解释:

  • A 和 B 的交互 SHAP 值为 5 元,表示 A 和 B 一起打车时,他们的贡献比单独贡献之和多了 5 元。这是一种协同效应
  • A 和 C 的交互 SHAP 值为 5 元,表示 A 和 C 一起打车时,他们的贡献比单独贡献之和多了 5 元。这也是一种协同效应
  • B 和 C 的交互 SHAP 值为 5 元,表示 B 和 C 一起打车时,他们的贡献比单独贡献之和多了 5 元。同样是一种协同效应

总结:

交互 SHAP 值帮助我们理解特征之间的交互作用。在这个例子中,A、B、C 两两之间都存在协同效应,即他们一起打车时,对车费的贡献比单独贡献之和更大。

在机器学习中,交互 SHAP 值可以用于:

  1. 发现特征之间的协同或对抗效应:例如,某些特征组合可能对模型输出的影响更大。
  2. 解释复杂模型:帮助理解模型如何利用特征之间的交互作用进行预测。
  3. 优化特征工程:识别重要的特征组合,改进模型性能。

通过交互 SHAP 值,我们可以更全面地理解特征之间的关系,而不仅仅是它们的单独贡献。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐