文章目录

  • 一、小问题
  • 二、数学抽象
  • 三、Shapley公理
  • 四、公式推导
  • 五、例子助理解
  • 六、各种角度理解公式
  • 七、特征函数的考量
    • 1. 污水处理厂典例
    • 2. 单因素分析
  • 八、shapley的局限性
    • 1. 计算量
    • 2. 优势即缺点

学习参考资料:

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万元。设甲、乙、丙三人分配获利为x1,x2,x3x_1,x_2,x_3x1​,x2​,x3​,则有
{x1≥1,x2≥1,x3≥1x1+x2≥7,x1+x3≥5,x2+x3≥4x1+x2+x3=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万元,则他就会单干,不会加入这个联盟。如果x1+x2≥7x_1 +x_2 \ge 7x1​+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个合作人的集合。若对于III的任何子集s⊆Is \subseteq Is⊆I

都有一个实数v(s)与之对应,且满足下列条件:

  1. v(∅)=0v(\varnothing) = 0v(∅)=0,其中∅\varnothing∅为空集。
  2. 对于任意两个不交子集s1,s2∈Is_1,s_2 \in Is1​,s2​∈I,都有$v(s_1 \cup s_2 )\ge v(s_1)+v(s_2) ,则称v(s)为定义在,则称v(s)为定义在,则称v(s)为定义在I$上的一个特征函数

在实际问题中,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=Is=Is=I时等号成立

这个式子从上面的例子中很好理解,每个人确定的利益之和要大于所有可能的联盟组合的利益,就如上面例子中所有组合都是≥\ge≥一样,当s=Is=Is=I等号成立就是上面例子的x1+x2+x3=10x_1+x_2+x_3=10x1​+x2​+x3​=10

其实,到这里也只是一个抽象上的数学总结,并没有给出限制(与上面例子一样),满足这样的条件结果还是有很多

三、Shapley公理

Shapley给出了一组对策应满足的公理,并证明了在这些公理下合作对策是唯一的。

  1. 对称性
    设π\piπ是I={1,2,…,n}I=\{1,2,…,n\}I={1,2,…,n}的一个序列,对于III的任意子集s={i1,i2,i3,...,in}s = \{i_1,i_2,i_3,...,i_n\}s={i1​,i2​,i3​,...,in​},有πs={πi1,...,πin}\pi s = \{\pi i_1,...,\pi i_n\}πs={πi1​,...,πin​}。若在定义特征函数w(s)=v(πs)w(s)=v(\pi s)w(s)=v(πs),则对于每个i∈Ii\in Ii∈I都有φi(w)=φπi(v)\varphi_i(w)=\varphi_{\pi i}(v)φi​(w)=φπi​(v)

    φ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)

    这表示合作获利的分配不随每个人在合作中的记号或次序变化。

  2. 有效性
    合作各方获利总和等于合作获利:∑i∈sφi(v)=v(I)\sum_{i\in s} \varphi_i(v) = v(I)∑i∈s​φi​(v)=v(I)

    上面的抽象中的大于只有在s⊂Is \subset Is⊂I的情况下产生,计算出各个节点的Shapley值最终的和应该与总体联盟的总利益相等,否则无效

  3. 冗员性
    若对于包含成员i的所有子集s都有v(s/{i})=v(s)v(s / \{i\} )= v(s)v(s/{i})=v(s)则φi(v)=0\varphi_i(v)=0φi​(v)=0,其中s/{i}s / \{i\}s/{i}为集合s去掉元素i后的集合

    这说明如果一个成员对于任何他参与的合作联盟都没有贡献,则他不应当从全体合作中获利。

  4. 可加性
    若在III上有两个特征函数v1,v2v_1,v_2v1​,v2​,则有φ(v1+v2)=φ(v1)+φ(v2)\varphi(v_1+v_2)=\varphi(v_1)+\varphi(v_2)φ(v1​+v2​)=φ(v1​)+φ(v2​) ,

    **这表明有多种合作时,每种合作的利益分配方式与其他合作结果无关。**例如对于i来说对于两次合作S1、S2分别计算个人收益之和与两次合作总收益之和再计算个人收益之和是相同的

Shapley证明了满足这四条公理的φ(v)\varphi(v)φ(v)是唯一的(主要证明的就是有效性),并且公式为:

φi(v)=∑s∈Siw(∣s∣)[v(s)−v(s/{i})]\varphi_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})]

其中,SiS_iSi​是III中包含成员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∈Si[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公式中的权重:

我们画出权重分配树:

  • 根节点代表当前对象即i,也对应着树第一层
  • 第二层代表合作人数/几方合作
    例如1方合作就是只有i一个人,两方合作例如i和s中其他一个人,图中的标号就表示是几方合作
    对于大于1方的合作其孩子即分支的数量计算由排列组合可轻松得知,例如两方合作,一个确定一定是i了,剩下一个人就一定从(n−1)(n-1)(n−1)中选择一个(n表示总参与人数即∣I∣|I|∣I∣), 所有的可能就是Cn−11C_{n-1}^1Cn−11​, 其他同理
  • 第三层是叶子节点,由叶子到根就代表合作s的人员组成,例如图中{1,2}

那么怎么计算权重呢,Shapley采用了平均的方法:

按分支平均,第一层到第二层共有n个分支,所以每个分支的权重为1n\frac{1}{n}n1​

第二层到第三层的分支数要分开讨论,对于合作人数1来说就是1即Cn−10C_{n-1}^0Cn−10​,对于合作人数2来说其分支数为Cn−11C_{n-1}^1Cn−11​所以每个分支的平均权重为1Cn−11\frac{1}{C_{n-1}^1}Cn−11​1​,剩下的同理

现在对于每个叶子节点也就是每一种包含i的合作s,权重的计算就很明确了,例如叶子{1,2}\{1,2\}{1,2}其权重就是:1n∗1Cn−11=1nCn−11\frac{1}{n} * \frac{1}{C_{n-1}^1} = \frac{1}{nC_{n-1}^1}n1​∗Cn−11​1​=nCn−11​1​

那么,我们回归到函数w(∣s∣)w(|s|)w(∣s∣), 我们需要计算出这样的通式来表示这个函数,不难写出每个分支权重的通式:

1n∗1Cn−1∣s∣−1\frac{1}{n} * \frac{1}{C_{n-1}^{|s|-1}}n1​∗Cn−1∣s∣−1​1​

上式通过化简就可以推导出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是满足匿名性、有效性、可加性和虚拟性四个性质的唯一的解

不同的思考角度都可以得出上述的权重计算公式,列举如下:

  • 从构造联盟角度-总体平等性
    (这里的s就是∣s∣|s|∣s∣)
    这里最终的结果与我们上文讨论的结果一样,但是思考的方式不同

    重点突出:每个随机排序的概率相等,保持总体平等性

  • 从联盟内外平等性角度-平均加权
    这就是上面介绍的shapley值权重计算的主要思路,结果都是一样的

    所有规模出现的概率是相同的,相同的规模中每一个联盟的概率是相同的

  • 从联盟中参与人贡献平等性的角度-平等贡献性
  • 贡献的平等性(不是贡献值的平等性)

七、特征函数的考量

1. 污水处理厂典例

注意:如果联合建厂,那么污水处理厂应该建立在下游城镇。例如1,2联合建厂,那么按照河流的流向应该将厂建立在2城镇


答案:分情况列出五种情况:

可以得出联合建厂的总投资最少,那么下一步该怎样进行利益的分配呢?? shapley值的计算!

第一步也是最关键的一步就是定义特征函数V(s)V(s)V(s)

我们定义特征函数V(s)V(s)V(s)为联合建厂比单独建厂节约的投资

计算后可得到:

最后的分担应该就是在每个城镇单独建厂的资金中减去其能节约的资金:


观察结果,不难看出城镇2的贡献最大分担最小,重要度/贡献度的排序应该是2,1,3,但是考虑现实生活中,城镇3处于最下游,考虑到污水处理厂对附近居民的影响, 处在下游的城镇重要性应该更大, 城镇理应获得更多的利润分配比,这与这样的结果是有点不符合的。

其实重点在于考虑构建特征函数时没有把所有的因素考虑进去,上面的例子只考虑了污水量以及距离两个因素,而没有有考虑到地理位置因素,是否需要添加不能光靠猜想,而是要通过数据验证

特征函数的设计需要将因素考虑全面

2. 单因素分析

通过将特征函数中其他因素保持相同,将需要考量的单个因素控制变量来考察其是否一个合理的因素,这就是对于单因素是否添加到特征函数的分析过程

对于上面的例子的所有因素:{污水量、距离、地理位置} 考虑地理位置因素是否需要:

将三个城镇的污水量、距离控制相同,将地理环境改变,分别为原题河流上下游环境环湖泊环境(没有上下游,1与3对称)

在计算之前,先讨论一下建厂方案的一般拟定:

  • 湖泊环境下污水厂总是建在污水量最大的城市, 这样才能使得流动的污水量最少, 节约管道费用, 进而提高利润
  • 河流环境下, 污水处理厂 总是建在下游城镇, 体现了上下游的地理位置作用,方便污水流动

注意:要将建厂方案与利益分配/重要性区别开来,建厂方案决定总利润(且上面的计算合作利润最高所以只建一个厂),利益分配决定单人利益

按照这个拟定,下面的表格中建厂默认河流中在3,湖泊建在污水量大的城镇

可得出下列表格,利润大小代表重要程度:

可看出:

  • 不论是河流还是湖泊2都是最重要的/贡献最大的,1,3相同;
  • 从河流换到湖泊,2的重要性降低,1,3的重要性提高

所以,结论是上下游的地理环境因素不会作用于单个城镇的重要性,上下游位置优势会影响总体的利润值和利润分配

进一步研究污水量因素对于城镇2重要性的影响,仅改变城镇2的污水量其他因素不变,可得以下表:

可得出:

  • 湖泊环境下, 城镇1和3的重要性是相同的, 两者完全对称
  • 河流环境下, 当城镇2的污水量小于城镇1和3时, 城镇3的利润比大于城镇1的利润比;当大于时,3小于1

这里就完全体现了问题:当污水量是{5,6,5}时,随着2的污水量提升,1分配的利益越多,而建厂在3的利益却逐渐的减少!

所以说明了:下游的优势作用并不能给下游个体带来更大利润,只是在全体上的利润更优

例如,当城镇2污水量大于1,3时,河流下3的下游优势只体现在全局的利润而不体现在个人,相反个人的利润比例还会减小

综上可知, 地理位置的优势不能转化为利润上的优势时, 值便无法体现这种优势

shapley 值只能体现那些带来利润多寡的因素,换句话说:忽略了无法直接转化为利润的因素

八、shapley的局限性

1. 计算量

需要知道所有合作的利润,即要定义I={1,2,3,...,n}I=\{1,2,3,...,n\}I={1,2,3,...,n}的所有子集(2n−12^n-12n−1个)特征函数,在世纪中难以做到

其次,公式本身计算随着节点的提升是NP难的问题

2. 优势即缺点

优势:利润分配上是平等的

缺点:忽略了无法转换为利润的因素

根源在于设定是使用Shapley值时参与人都是平等的,有些因素不能够直接影响利润改变而是造成了地位的不平等,但是在利润分配时各个参与人的地位是不同的,这些因素也不会在利润分配上体现

对于此项缺点也有了很多的研究,例如引入权重等


觉得不错的话,请点赞关注呦~~你的关注就是博主的动力

Shapley_Value全解析与公式推导相关推荐

  1. Go modules基础精进,六大核心概念全解析(下)

    Go 语言做开发时,路径是如何定义的?Go Mudules又为此带来了哪些改变?本文将会全面介绍Go Modules六大核心概念,包括了设计理念与兼容性原则等,掌握这些技术点对于管理和维护Go 模块有 ...

  2. 第四章:Spring项目文件上传两种方式(全解析)

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  3. 阿里秋招面试全解析(含内推岗)

    每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...

  4. Apache Web服务器访问控制机制全解析

    Apache Web服务器访问控制机制全解析 原文请见: http://netsecurity.51cto.com/art/201102/245666.htm Linux下的Aapche服务器提供了强 ...

  5. 6.15 Unity引擎渲染效率全解析

    UWA新晋主播赵福恺从Unity渲染模块中的各种渲染效果性能.PBR渲染性能以及阴影的渲染性能三个角度分别进行了详细的分析总结.为响应各大听众的需求,小编奉上完整视频回顾,同时也向看完直播才下班的五好 ...

  6. python读取txt文件写入-Python读写txt文本文件的操作方法全解析

    一.文件的打开和创建 >>> f = open('/tmp/test.txt') >>> f.read() 'hello python! hello world! ...

  7. jQuery Ajax 实例 全解析(转)

    jQuery Ajax 实例 全解析 jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我 ...

  8. Fragment全解析系列

    文/YoKey(简书作者) 原文链接:http://www.jianshu.com/p/d9143a92ad94 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者". F ...

  9. 万物之始正则表达式全解析三部曲(中篇)-正则表达式运算符优先级及匹配规则

    前言 各位小伙伴大家好,接下来几天时间,我会从多个角度对正则表达式进行系统阐述,让你了解正则表达式的前世今生. 该系列文章上篇 万物之始正则表达式全解析三部曲(上篇)-正则表达式基础知识及语法 以下是 ...

  10. 机器学习算法源码全解析(三)-范数规则化之核范数与规则项参数选择

    前言 参见上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮叨下核范数和规则项参数选择.知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正.谢谢. 机器学习算法源码全解析( ...

最新文章

  1. 矩阵乘法的优化及其在卷积中的应用
  2. REM+SVG Sprite,web app案例
  3. 阿里云服务器 Windows连接不成功 提示“你的凭证不工作” 解决方法
  4. 网络学习笔记网络通讯
  5. Bugzilla 使用指南
  6. yii2: 点击编辑后,左侧的连接(a.navtab)失效,变成在新窗口打开
  7. 【FLink】Flink checkpoint 实现数据连续计算 恢复机制 案例实战
  8. PHP危险函数被禁止怎么绕过,PHP危险函数(disable_functions)设置
  9. Linux内核Makefile编译生成内核目标文件的过程
  10. 结对编程--基于android平台的黄金点游戏(2.0版本)
  11. 史上最全的面试宝典,让你轻松入职
  12. Atitit.软件仪表盘(2)--vm子系统--资源占用监测
  13. win2008服务器系统玩红警,win8系统玩红警2共和国卡死的解决办法
  14. mongodb WT_ERROR: non-specific WiredTiger error
  15. 运动目标检测之光流法(1):入门级了解
  16. Excel技能培训之四-按颜色排序,按自定义文字排序
  17. Ubuntu 16.04安装sogou拼音输入法
  18. 2020家用千兆路由器哪款好_家用路由器哪个牌子好穿墙2020
  19. CF100015B - Ball Painting
  20. Openlayers:Polygon绘图工具

热门文章

  1. uni-app 地图 可点击 可搜索全国
  2. 最全CacheCloud最完整安装使用文档【实操系列】
  3. 【数据分享】全国县市2000-2020年医疗卫生机构床位数数据(excel和shp格式)
  4. 微信h5棋牌以及下载类推广如何在微信中做好防封防屏蔽技术
  5. 解决扫码枪中文输入法冲突问题
  6. 如何搭建一个属于自己的在线wiki文档系统?
  7. 实对称矩阵必可正交对角化证明
  8. python爬虫js加密篇—搜狗微信公号文章的爬取
  9. canvas实现简单画板
  10. 可作为工质状态参数的是_§2工质的热力状态及其基本状态参数