Shapley Value(夏普利值,沙普利值)
夏普利值是一种衡量合作博弈中各个参与者对于整体胜利的贡献的方法。在合作博弈中,多个参与者共同合作,以实现共同的目标或获得共同的奖励。夏普利值的核心思想是根据每个参与者对于整个合作过程的贡献程度来分配奖励或收益。
夏普利值的计算方法是,对于参与者的每一种可能的加入顺序,计算该参与者加入后对于整个合作过程的贡献,然后将这些贡献值加权平均。这种加权平均的权重是参与者加入的顺序,即先加入的参与者对于最终结果的贡献程度更高。
夏普利值的优点在于,它可以准确地衡量每个参与者对于整个合作过程的贡献程度,从而实现公平地分配奖励或收益的目的。它被广泛应用于经济学、社会学、政治学等领域中。
计算方法
假设现在有三个人一起合作,分别是老板,工程师,打工仔
人员 | 赚的钱 |
---|---|
老板 | 1 |
工程师 | 1 |
打工仔 | 0 |
老板+工程师 | 3 |
老板+打工仔 | 2 |
老板+工程师+打工仔 | 5 |
工程师+打工仔 | 2 |
那么老板的夏普利值怎么算呢
首先将可能有的序列都列出来,一共有 A 3 3 = 6 A^3_3=6 A33=6种序列
序列 | 计算贡献 | 老板的边际贡献 | 权重 | 夏普利值 |
---|---|---|---|---|
老板,工程师,打工仔 | ||||
老板,打工仔,工程师 | ||||
工程师,老板,打工仔 | ||||
工程师,打工仔,老板 | ||||
打工仔,工程师,老板 | ||||
打工仔,老板,工程师 |
第二部分就是计算贡献了,由于我们是计算老板的夏普利值,我们关注老板就可以了,老板的贡献等于他之前的排序(包括他)的钱,减去他之前的排序(不包括他)的值,这样说的话可能有点难理解,但是举例子就好了,例如有序列{打工仔,工程师,老板},那么计算边际贡献就相当于
v ( 打工仔,工程师,老板 ) − v ( 打工仔,工程师 ) = 5 − 2 = 3 v(打工仔,工程师,老板)-v(打工仔,工程师)=5-2=3 v(打工仔,工程师,老板)−v(打工仔,工程师)=5−2=3
所以我们有
序列 | 计算贡献 | 老板的边际贡献 | 权重 | 夏普利值 |
---|---|---|---|---|
老板,工程师,打工仔 | v(老板) | 1 | 1/6 | |
老板,打工仔,工程师 | v(老板) | 1 | 1/6 | |
工程师,老板,打工仔 | v(工程师,老板)-v(工程师) | 3-1=2 | 1/6 | |
工程师,打工仔,老板 | v(工程师,打工仔,老板)-v(工程师,打工仔) | 5-2=3 | 1/6 | |
打工仔,工程师,老板 | v(打工仔,工程师,老板)-v(打工仔,工程师) | 5-2=3 | 1/6 | |
打工仔,老板,工程师 | v(打工仔,老板)-v(打工仔) | 2-0=2 | 1/6 |
夏普利值的计算就使用下面的公式计算
夏普利值 = 老板的边际贡献 ∗ 权重 夏普利值=老板的边际贡献*权重 夏普利值=老板的边际贡献∗权重
这里的老板的夏普利值为
1 6 + 1 6 + 2 6 + 3 6 + 3 6 + 2 6 = 12 6 \frac{1}{6}+\frac{1}{6}+\frac{2}{6}+\frac{3}{6}+\frac{3}{6}+\frac{2}{6}=\frac{12}{6} 61+61+62+63+63+62=612
使用公式法计算
有没有发现,其实上面有很多重复的运算,例如我们在计算的时候,只会关注我们选定的人的前面(包括选定的人)的情况,而且前面的人(不包括选定的人)的顺序不影响边际贡献的计算,所有利用排列组合工具我们可以有下面的公式。
ϕ i ( v ) = ∑ s ∈ S i w ( ∣ s ∣ ) [ v ( s ) − v ( s / i ) ] \phi_i(v) = \sum_{s\in S_i}w(|s|)[v(s)-v(s/{i})] ϕi(v)=s∈Si∑w(∣s∣)[v(s)−v(s/i)]
其中w为权重公式, ∣ ∗ ∣ |*| ∣∗∣为集合运算符用于求集合里面元素的个数。
w ( ∣ S ∣ ) = ( ∣ s ∣ − 1 ) ! ( n − ∣ s ∣ ! ) n ! w(|S|)=\frac{(|s|-1)!(n-|s|!)}{n!} w(∣S∣)=n!(∣s∣−1)!(n−∣s∣!)
这里的w其实是一个采样概率,上面为取到集合S的组合可能个数,下面为所有可能的集合情况。
可以看文章《Shapley值特点及其局限的讨论》
假设有n个合作人的集合
I = { 1 , 2 , . . . , n } I=\{1,2,...,n\} I={1,2,...,n}
i则为选择的合作人,例如在上面,选择个体就是老板。
S(i)为所有以i为末尾的序列代表的集合的集合(其实就是包含i的集合的集合,但是这样说能更好的对应上面的老板打工表),例如 I = { 1 , 2 , 3 } I=\{1,2,3\} I={1,2,3}为集合,那么 i i i为1,
S ( i ) = { { 1 } , { 2 , 1 } , { 3 , 1 } , { 3 , 2 , 1 } } S(i)=\{\{1\},\{2,1\},\{3,1\},\{3,2,1\}\} S(i)={{1},{2,1},{3,1},{3,2,1}}
合作人 | 赚的钱 |
---|---|
1 | 1 |
2 | 1 |
3 | 0 |
1+2 | 3 |
1+3 | 2 |
1+2+3 | 5 |
2+3 | 2 |
直接用公式算的话是,沙普利值这样算出来:
ϕ
i
(
v
)
=
(
1
−
1
)
!
(
3
−
1
)
!
3
!
∗
(
1
−
0
)
+
(
2
−
1
)
!
(
3
−
2
)
!
3
!
∗
(
3
−
1
)
+
(
2
−
1
)
!
(
3
−
2
)
!
3
!
∗
(
2
−
0
)
+
(
3
−
1
)
!
(
3
−
3
)
!
3
!
∗
(
5
−
2
)
\phi_i(v) = \frac{(1-1)!(3-1)!}{3!}*(1-0)+\frac{(2-1)!(3-2)!}{3!}*(3-1)+\frac{(2-1)!(3-2)!}{3!}*(2-0)+\frac{(3-1)!(3-3)!}{3!}*(5-2)
ϕi(v)=3!(1−1)!(3−1)!∗(1−0)+3!(2−1)!(3−2)!∗(3−1)+3!(2−1)!(3−2)!∗(2−0)+3!(3−1)!(3−3)!∗(5−2)
以上的这条式子分别对应
s = {1} , |s| = 1, v({1})-v({null}) = 1-0;
s = {2,1},|s|= 2, v({2,1}) - v({2}) = 3-1;
s = {3,1} |s| = 2, v({3,1}) - v({3}) = 2-0;
s = {3,2,1} |s| = 3, v({3,2,1})-v({3,2})=5-2;
ϕ
i
(
v
)
=
2
6
+
2
6
+
2
6
+
6
6
=
12
6
\phi_i(v) =\frac{2}{6}+\frac{2}{6}+\frac{2}{6}+\frac{6}{6}=\frac{12}{6}
ϕi(v)=62+62+62+66=612
我们发现和上面的结果是一样的
夏普利值的性质
- 对称性:合作获利的分配,不随每个人在合作中的记号或次序变化
- 有效性:合作各方获利总和等于合作获利
- 冗员性:如果一个成员对于任何他参与的合作联盟都没有贡献,则他不应当从全体合作中获利
- 有多种合作时,每种合作的利益分配方式与其他合作结果无关
目前运用的方向
目前好像是有投资领域,还有联邦学习这一块用的比较多,只要是能用到博弈论的好像都能用得上这个。