学习参考资料:
https://baike.baidu.com/item/shapley值法/5909624
https://www.zhihu.com/question/23180647
https://www.bilibili.com/video/BV1MA41137iv?from=search&seid=9563739550004489326
https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CJFD&dbname=CJFD2013&filename=SSJS201304007&v=gINqgtNlfA%25mmd2BN%25mmd2BweW6Jg1PX2lPFQWcExU%25mmd2FRrv9Opswp8%25mmd2BXPAZYTlGhuoRIhIeCBaz
1951年,由诺贝尔得主Shapley提出,用于公平地定量评估用户边际贡献度的常用指标,起源于合作博弈,并用于广泛的领域,包括使用Shapley Value作为ML特征的选择,对训练数据的重要性进行排序
百度百科:
基于Shapley值进行联盟成员的利益分配体现了各盟员对联盟总目标的贡献程度,避免了分配上的平均主义,比任何一种仅按资源投入价值、资源配置效率及将二者相结合的分配方式都更具合理性和公平性,也体现了各盟员相互博弈的过程。但Shapley值法的利益分配方案尚未考虑联盟成员的风险分担因素,实质上隐含着各盟员风险分担均等的假设,**因此,对于联盟成员风险分担不等或风险分担存在较大差异的状况,需要根据风险分担大小对Shapley值法的利益分配方案做出适当的修正。**另需要注意利用Shapley值法进行利益分配应具备的前提条件是:要求每个参与人对在不同联盟组合状态下的利益要有一个较为准确的预期;此外,还要对这种复杂的计算方式有一个清楚的了解。知识联盟的总产出有时可能是不确定的,不同联盟组合状态下的收益也可能是不确定的,这会在一定程度上影响Shapley值法的应用。对于总效用不确定的情况,为了获取一个比较合理的不同联盟组合状态下的效用值,可以采用AHP法、ANP法、模糊数学等综合评价方法来估算各种联盟组合状态下的可能效用值,从而获得shapley值法所需要的数据,再进行具体利益分配上的计算 [1] 。
甲、乙、丙三人合作经商。倘若甲、乙合作可获利7万元,甲、丙合作可获利5万元,乙、丙合作可获利4万元,三人合作则获利10万元,每人单干各获利1万元。问三人合作时如何分配获利?
很显然,利益分配时,三人获利总和应为10万元。设甲、乙、丙三人分配获利为 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3,则有
{ x 1 ≥ 1 , x 2 ≥ 1 , x 3 ≥ 1 x 1 + x 2 ≥ 7 , x 1 + x 3 ≥ 5 , x 2 + x 3 ≥ 4 x 1 + x 2 + x 3 = 10 \begin{cases} x_1 \ge1, x_2 \ge 1,x_3 \ge 1 \\ x_1 + x_2 \ge 7, x_1+x_3\ge5,x_2+x_3\ge 4 \\ x_1 + x_2 +x_3 = 10 \end{cases} ⎩⎪⎨⎪⎧x1≥1,x2≥1,x3≥1x1+x2≥7,x1+x3≥5,x2+x3≥4x1+x2+x3=10
三人中如果谁获利小于1万元,则他就会单干,不会加入这个联盟。如果 x 1 + x 2 ≥ 7 x_1 +x_2 \ge 7 x1+x2≥7不成立,甲和乙就会组成一个小的联盟,而把丙抛在一边。
但是,这个系统有无穷多组解,例如$(x_1,x_2,x_3) = (4, 3, 3), (6,2,2),(5,3,2) , 甚 至 是 ( 3 , 5 , 2 ) 。 很 显 然 , 站 在 乙 或 丙 的 角 度 , 和 甲 合 作 都 可 以 获 得 更 大 的 利 益 , 换 言 之 , 甲 在 他 所 参 与 的 合 作 中 贡 献 最 大 ; 同 理 , 乙 次 之 , 丙 贡 献 最 小 。 因 此 , 像 ,甚至是(3,5,2)。很显然,站在乙或丙的角度,和甲合作都可以获得更大的利益,换言之,甲在他所参与的合作中贡献最大;同理,乙次之,丙贡献最小。因此,像 ,甚至是(3,5,2)。很显然,站在乙或丙的角度,和甲合作都可以获得更大的利益,换言之,甲在他所参与的合作中贡献最大;同理,乙次之,丙贡献最小。因此,像(5,3,2),(\frac{14}{3}, \frac{11}{3}, \frac{5}{3})$都是合理的解。哪一个更合理?因此应该有一种圆满的利益分配方法。
这类问题称为n人合作对策。L.S.Shapley在1953年给出了解决该问题的一种方法,称为Shapley值法。
下面先给出合作对策的一般模型。记 I = { 1 , 2 , . . . , n } I=\{1,2,...,n\} I={1,2,...,n}为n个合作人的集合。若对于 I I I的任何子集 s ⊆ I s \subseteq I s⊆I
都有一个实数v(s)与之对应,且满足下列条件:
在实际问题中, v ( s ) v(s) v(s)就是各种联盟的获利,而第二个条件表明任何情况下合作至少总比单干或者小团体的合作来得有利。
合作对策就是需要确定每个人获得的利益 φ i ( v ) \varphi_i(v) φi(v),或者对全体成员来讲就是向量 φ ( v ) = ( φ 1 ( v ) , φ 2 ( v ) , φ 3 ( v ) . . . ) \varphi(v)=(\varphi_1(v),\varphi_2(v),\varphi_3(v)...) φ(v)=(φ1(v),φ2(v),φ3(v)...)
在合作优于单干的前提下,各种联盟中需要确定每个人的利益也就是确定 φ \varphi φ向量,以实现确定最公平的联盟组合以及利益方式
按照前例的分析,我们知道合理的分配需要满足 ∑ i ∈ s φ i ( v ) ≥ v ( s ) \sum_{i\in s} \varphi_i(v) \ge v(s) ∑i∈sφi(v)≥v(s)当 s = I s=I s=I时等号成立
这个式子从上面的例子中很好理解,每个人确定的利益之和要大于所有可能的联盟组合的利益,就如上面例子中所有组合都是 ≥ \ge ≥一样,当 s = I s=I s=I等号成立就是上面例子的 x 1 + x 2 + x 3 = 10 x_1+x_2+x_3=10 x1+x2+x3=10
其实,到这里也只是一个抽象上的数学总结,并没有给出限制(与上面例子一样),满足这样的条件结果还是有很多
Shapley给出了一组对策应满足的公理,并证明了在这些公理下合作对策是唯一的。
φ i ( w ) = φ i ( v ( π s ) ) = φ i ( v ( π ) v ( s ) ) = φ π i ( v ( s ) ) = φ π i ( v ) \varphi_i(w) = \varphi_i(v(\pi s)) = \varphi_i(v(\pi)v(s)) = \varphi_{\pi i}(v(s))= \varphi_{\pi i}(v) φi(w)=φi(v(πs))=φi(v(π)v(s))=φπi(v(s))=φπi(v)
这表示合作获利的分配不随每个人在合作中的记号或次序变化。
上面的抽象中的大于只有在 s ⊂ I s \subset I s⊂I的情况下产生,计算出各个节点的Shapley值最终的和应该与总体联盟的总利益相等,否则无效
这说明如果一个成员对于任何他参与的合作联盟都没有贡献,则他不应当从全体合作中获利。
**这表明有多种合作时,每种合作的利益分配方式与其他合作结果无关。**例如对于i来说对于两次合作S1、S2分别计算个人收益之和与两次合作总收益之和再计算个人收益之和是相同的
Shapley证明了满足这四条公理的 φ ( v ) \varphi(v) φ(v)是唯一的(主要证明的就是有效性),并且公式为:
φ i ( v ) = ∑ s ∈ S i w ( ∣ s ∣ ) [ v ( s ) − v ( s / { i } ) ] \varphi_i(v)=\sum_{s\in S_i}w(|s|)[v(s)-v(s/\{i\})] φi(v)=∑s∈Siw(∣s∣)[v(s)−v(s/{i})]
其中, S i S_i Si是 I I I中包含成员i的所有子集形成的集合, ∣ s ∣ |s| ∣s∣是集合S元素个数, w ( ∣ s ∣ ) w(|s|) w(∣s∣)是加权因子且有
w ( ∣ s ∣ ) = ( ∣ s ∣ − 1 ) ! ( n − ∣ s ∣ ) ! n ! w(|s|)=\frac{(|s|-1)!(n-|s|)!}{n!} w(∣s∣)=n!(∣s∣−1)!(n−∣s∣)!
边际贡献
v ( s ) − v ( s / { i } ) v(s)-v(s/\{i\}) v(s)−v(s/{i})是成员i在参与合作s中的贡献也叫做边际贡献(marginal contribution),边际贡献是考察是否公平的主要考量,先不考虑权重 ∑ s ∈ S i [ v ( s ) − v ( s / { i } ) ] \sum_{s\in S_i}[v(s)-v(s/\{i\})] ∑s∈Si[v(s)−v(s/{i})]这部分就代表了对于i来说自己对于所有包含自己的S合作中自己的边际贡献,如果再乘上每一个S中对应的权重那么就构成了i的Shapley值
权重
从公式中可以看出:权重的计算只与合作s集合的大小有关,而合作s的大小就是代表着几方合作
现在对于i,计算其Shapley公式中的权重:
我们画出权重分配树:
那么怎么计算权重呢,Shapley采用了平均的方法:
按分支平均,第一层到第二层共有n个分支,所以每个分支的权重为 1 n \frac{1}{n} n1
第二层到第三层的分支数要分开讨论,对于合作人数1来说就是1即 C n − 1 0 C_{n-1}^0 Cn−10,对于合作人数2来说其分支数为 C n − 1 1 C_{n-1}^1 Cn−11所以每个分支的平均权重为 1 C n − 1 1 \frac{1}{C_{n-1}^1} Cn−111,剩下的同理
现在对于每个叶子节点也就是每一种包含i的合作s,权重的计算就很明确了,例如叶子 { 1 , 2 } \{1,2\} {1,2}其权重就是: 1 n ∗ 1 C n − 1 1 = 1 n C n − 1 1 \frac{1}{n} * \frac{1}{C_{n-1}^1} = \frac{1}{nC_{n-1}^1} n1∗Cn−111=nCn−111
那么,我们回归到函数 w ( ∣ s ∣ ) w(|s|) w(∣s∣), 我们需要计算出这样的通式来表示这个函数,不难写出每个分支权重的通式:
1 n ∗ 1 C n − 1 ∣ s ∣ − 1 \frac{1}{n} * \frac{1}{C_{n-1}^{|s|-1}} n1∗Cn−1∣s∣−11
上式通过化简就可以推导出 w ( ∣ s ∣ ) w(|s|) w(∣s∣)的函数了:
对于上面的问题一,下面就可以计算出来了:
此外,知乎上也有大佬给出了一个详细的例子,可以加大理解程度:
已知:
v({1})=100,v({2})=125,v({3})=50
v({1,2})=270,v({2,3})=350,v({1,3})=375
v({1,2,3})=500
则计算过程可用图标画出:
则各个节点/代理的Shapley值为:
从这里可以看出,计算Shapley的值其实过程可以大致概括为:在 n ! n! n!次全排列中计算节点的边际贡献的平均值
Shapley值是各种各样具有不同良好性质的解中最重要的一种,它将成本或者收益按照所有的边际成本进行分摊,即每个参与人获得的利益等于参与人对所有联盟的边际贡献的平均值
Shapley是满足匿名性、有效性、可加性和虚拟性四个性质的唯一的解
不同的思考角度都可以得出上述的权重计算公式,列举如下:
重点突出:每个随机排序的概率相等,保持总体平等性
所有规模出现的概率是相同的,相同的规模中每一个联盟的概率是相同的
贡献的平等性(不是贡献值的平等性)
注意:如果联合建厂,那么污水处理厂应该建立在下游城镇。例如1,2联合建厂,那么按照河流的流向应该将厂建立在2城镇
答案:分情况列出五种情况:
可以得出联合建厂的总投资最少,那么下一步该怎样进行利益的分配呢?? shapley值的计算!
第一步也是最关键的一步就是定义特征函数 V ( s ) V(s) V(s)
我们定义特征函数 V ( s ) V(s) V(s)为联合建厂比单独建厂节约的投资
计算后可得到:
最后的分担应该就是在每个城镇单独建厂的资金中减去其能节约的资金:
观察结果,不难看出城镇2的贡献最大分担最小,重要度/贡献度的排序应该是2,1,3,但是考虑现实生活中,城镇3处于最下游,考虑到污水处理厂对附近居民的影响, 处在下游的城镇重要性应该更大, 城镇理应获得更多的利润分配比,这与这样的结果是有点不符合的。
其实重点在于考虑构建特征函数时没有把所有的因素考虑进去,上面的例子只考虑了污水量以及距离两个因素,而没有有考虑到地理位置因素,是否需要添加不能光靠猜想,而是要通过数据验证
特征函数的设计需要将因素考虑全面
通过将特征函数中其他因素保持相同,将需要考量的单个因素控制变量来考察其是否一个合理的因素,这就是对于单因素是否添加到特征函数的分析过程
对于上面的例子的所有因素:{污水量、距离、地理位置} 考虑地理位置因素是否需要:
将三个城镇的污水量、距离控制相同,将地理环境改变,分别为原题河流上下游环境和环湖泊环境(没有上下游,1与3对称)
在计算之前,先讨论一下建厂方案的一般拟定:
注意:要将建厂方案与利益分配/重要性区别开来,建厂方案决定总利润(且上面的计算合作利润最高所以只建一个厂),利益分配决定单人利益
按照这个拟定,下面的表格中建厂默认河流中在3,湖泊建在污水量大的城镇
可得出下列表格,利润大小代表重要程度:
可看出:
所以,结论是上下游的地理环境因素不会作用于单个城镇的重要性,上下游位置优势会影响总体的利润值和利润分配
进一步研究污水量因素对于城镇2重要性的影响,仅改变城镇2的污水量其他因素不变,可得以下表:
可得出:
这里就完全体现了问题:当污水量是{5,6,5}时,随着2的污水量提升,1分配的利益越多,而建厂在3的利益却逐渐的减少!
所以说明了:下游的优势作用并不能给下游个体带来更大利润,只是在全体上的利润更优
例如,当城镇2污水量大于1,3时,河流下3的下游优势只体现在全局的利润而不体现在个人,相反个人的利润比例还会减小
综上可知, 地理位置的优势不能转化为利润上的优势时, 值便无法体现这种优势
shapley 值只能体现那些带来利润多寡的因素,换句话说:忽略了无法直接转化为利润的因素
需要知道所有合作的利润,即要定义 I = { 1 , 2 , 3 , . . . , n } I=\{1,2,3,...,n\} I={1,2,3,...,n}的所有子集( 2 n − 1 2^n-1 2n−1个)特征函数,在世纪中难以做到
其次,公式本身计算随着节点的提升是NP难的问题
优势:利润分配上是平等的
缺点:忽略了无法转换为利润的因素
根源在于设定是使用Shapley值时参与人都是平等的,有些因素不能够直接影响利润改变而是造成了地位的不平等,但是在利润分配时各个参与人的地位是不同的,这些因素也不会在利润分配上体现
对于此项缺点也有了很多的研究,例如引入权重等
觉得不错的话,请点赞关注呦~~你的关注就是博主的动力