Shaply算法

发布时间 2024-01-08 14:11:37作者: zjb480

Shapley值归因是一种公平且基于贡献分配权重的算法,它源于博弈论,用于在多因素共同作用产生结果的情况下,精确计算每个因素(或渠道)对总体效果的独特贡献。以下是一个使用具体数据说明Shapley值归因的例子:

假设一个电商平台上有三个广告渠道:邮件营销(M)、社交媒体广告(S)和搜索引擎广告(E),它们分别对用户转化产生的价值如下表所示:

| 渠道组合 | 转化价值 |
| --- | --- |
| 空集 | 0 |
| M | 10 |
| S | 5 |
| E | 2 |
| MS | 20 |
| ME | 15 |
| SE | 7 |
| MSE | 30 |

现在我们要计算各个渠道对于最终转化的Shapley值。

**Shapley值公式为:**

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

其中:
- \( i \) 是当前需要计算贡献的个体(即邮件、社交媒体或搜索引擎)
- \( S \) 表示不包含 \( i \) 的所有可能子集
- \( N \) 是全体参与者集合,这里就是 {M, S, E}
- \( n \) 是参与者的总数,这里是 3
- \( v(S) \) 是渠道集合 \( S \) 对应的转化价值

以邮件营销为例,我们计算其Shapley值:

1. \( \phi_M \)

首先遍历所有没有邮件营销的子集,并计算邮件加入后的边际贡献,乘以相应的概率权重系数:

- 对于空集,边际贡献是 \( v(M) - v(\{\}) = 10 - 0 = 10 \),权重大约为 \( \frac{2!}{3!} \times 10 \)
- 对于单个渠道子集 S={S}, \( v(MS) - v(S) = 20 - 5 = 15 \),权重大约为 \( \frac{1!}{3!} \times 15 \)
- 对于另外两个单渠道子集以此类推

将以上各组边际贡献与对应的权重相乘并求和得到邮件营销的Shapley值。

通过计算可以得出:

- 邮件营销:\( \phi_M \approx 1/3 \times 10 + 1/3 \times 15 + 1/6 \times (15 - 2 + 13) = 18 \)
- 社交媒体:\( \phi_S \) 和 \( \phi_E \) 类似地按照上述步骤计算
- 最终,会得到社交媒体和搜索引擎各自的Shapley值

这样就完成了基于实际数据对Shapley值归因的具体应用计算。通过这种算法,我们不仅得知每个渠道单独的作用,还能够了解它们联合起来时的相对重要性。