SHAP值理论(一)
交互 SHAP 值帮助我们理解特征之间的交互作用。在这个例子中,A、B、C 两两之间都存在协同效应,即他们一起打车时,对车费的贡献比单独贡献之和更大。发现特征之间的协同或对抗效应:例如,某些特征组合可能对模型输出的影响更大。解释复杂模型:帮助理解模型如何利用特征之间的交互作用进行预测。优化特征工程:识别重要的特征组合,改进模型性能。通过交互 SHAP 值,我们可以更全面地理解特征之间的关系,而不仅
写论文的时候真的困惑,为什么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 值的计算步骤如下:
- 列出所有可能的组合:包括 A、B、C 的所有可能组合(如 A 单独、A 和 B、A 和 C、A+B+C 等)。
- 计算每个人的边际贡献:即某个人加入一个组合后,总车费的变化。
- 平均边际贡献:对每个人的所有边际贡献取平均值,得到其 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 值公平?
- 考虑了所有可能的组合:Shapley 值不仅考虑了个人的单独贡献,还考虑了他们在不同组合中的贡献。
- 边际贡献的平均值:通过对所有边际贡献取平均值,避免了单一组合的偏差。
- 满足公平性: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 值的计算步骤如下:
- 计算单独贡献:使用 Shapley 值计算每个人的单独贡献。
- 计算联合贡献:计算两个人一起出现时的贡献。
- 计算交互作用:联合贡献减去单独贡献,得到交互作用。
计算步骤:
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 值可以用于:
- 发现特征之间的协同或对抗效应:例如,某些特征组合可能对模型输出的影响更大。
- 解释复杂模型:帮助理解模型如何利用特征之间的交互作用进行预测。
- 优化特征工程:识别重要的特征组合,改进模型性能。
通过交互 SHAP 值,我们可以更全面地理解特征之间的关系,而不仅仅是它们的单独贡献。
更多推荐



所有评论(0)