机器学习中的 Shapley 值怎么理解?

article/2025/7/17 9:44:00

导语:在集体合作中,如何公平分配奖励?

机器学习中的 Shapley 值怎么理解?

图片来源:https://unsplash.com/photos/TL5Vy1IM-uA 

我第一次听说 Shapley 值是在学习模型可解释性的时候。我知道了 SHAP,它是一个框架,可以更好地理解为什么机器学习模型会那样运行。事实证明,Shapley 值已经存在了一段时间,它们最早起源于 1953 年的博弈论领域,目的是解决以下情况:

一群拥有不同技能的参与者为了集体奖励而相互合作。那么,如何在小组中公平分配奖励?

当一个「旧」概念被应用到另一个领域,如机器学习,关于它是如何获得新的应用是非常有趣的。在机器学习中,参与者是你输入的特征,而集体支出是模型预测。在这种情况中,Shapley 值用于计算每个单独的特征对模型输出的贡献。

如何计算 Shapley 值?大多数时候,你倾向于在文献中看到这个等式: 

机器学习中的 Shapley 值怎么理解?

让我们把它分解一下。在一个联盟游戏(前面描述的场景)中,我们有一组 N 个玩家。我们还有一个函数 v,它给出了这些参与者的任何子集的值,也就是说,S 是 N 的子集,然后 v(S)给出了该子集的值。因此,对于一个联合博弈(N,v),我们可以使用这个方程来计算玩家 i 的贡献,即 Shapley 值。

现在我不知道你会怎么想,但当我第一次遇到这个等式时,我的第一反应如下图:

机器学习中的 Shapley 值怎么理解?

我很难理解为什么它看起来是这样的。我花了一些时间研究之后,终于开始有了一些理解。所以,我们开始吧!

好吧,我们要做的第一件事是重写初始方程:

机器学习中的 Shapley 值怎么理解?

乍一看,这个公式似乎并没有变容易,但请不要着急。很快,我将分解方程的不同部分,以便理解它们,但我们也可以定义一个具体的场景,我们可以使用它来让所有部分都不那么抽象。

假设我们经营一家生产砖块的工厂。我们的一个生产团队由四个人组成:Amanda、Ben、Claire 和 Don(从现在起,我将以他们名字中的第一个字母来称呼他们)。每周他们一起设法生产出 X 块砖。由于我们工厂运转良好,我们有一笔奖金要发给队员们。但是,为了让我们以公平的方式做到这一点,我们需要弄清楚每个人对每周生产 X 数量的砖块贡献了多少。

最困难的是,我们有好几个因素都会影响团队可以生产的砖块数量。其中之一是团队规模,因为团队规模越大,生产的砖块就越多。另一个可能是团队成员之间的合作程度。问题是,我们无法以有意义的方式量化这些影响,但幸运的是,我们可以使用 Shapley 值来回避这个问题。

我们现在已经定义了我们的玩家(A、B、C 和 D)以及他们参与的游戏(生产砖块)。让我们从计算生产的 X 砖中有多少可以归于 Don 开始,即计算 D 的 Shapley 值。如果我们把它与 Shapley 值公式的参数联系起来,我们就得到:

机器学习中的 Shapley 值怎么理解?

所以 D 是我们的球员 i,整个 N 组由所有四个队员 A,B,C 和 D 组成,我们先看一下 Shapley 值公式的这一部分:

机器学习中的 Shapley 值怎么理解?

也就是说,我们需要把我们的团队成员排除在我们现在关注的人之外。然后,我们需要考虑所有可能形成的子集。所以如果我们从组中排除 D,我们就只剩下 {A,B,C}。从这个剩余的组中,我们可以形成以下子集:

机器学习中的 Shapley 值怎么理解?

机器学习中的 Shapley 值怎么理解?

 

 

 

我们总共可以构造出其余团队成员的 8 个不同子集。其中一个子集是空集,即它没有任何成员。现在让我们把注意力转移到这个部分:

机器学习中的 Shapley 值怎么理解?

这是我们 Shapley 值的一个基本概念的应用:在游戏中增加玩家 i 的边际价值。所以对于任何给定的子集,我们要比较它的值和当包括玩家 i 的时候它的值。通过这样做,我们得到了将玩家 i 添加到该子集的边际值。

我们把它和我们的例子联系起来,想看看如果我们把 D 加到 8 个子集中的每一个子集上,每周生产的砖块数量有什么不同。我们可以将这 8 个边缘值直观地表示为:

机器学习中的 Shapley 值怎么理解?

你可以将每种情况都视为我们需要观察的不同场景,以便公平地评估 D 对整个生产的贡献程度。这意味着,我们需要观察如果没有人工作(即空集合)会产生多少砖块,并将其与只有 D 工作时的情况进行比较。我们还需要观察 AB 产生的砖块数量,并将其与 AB 产生的砖块数量以及所有 8 个集合中 D 可以产生的砖块数量进行比较。

好吧,我们现在已经知道我们需要计算 8 个不同的边缘值。Shapley 值方程告诉我们,我们需要把它们加在一起。然而,在我们做这些之前,我们还需要调整每一个边际值,从等式的这一部分可以看出:

机器学习中的 Shapley 值怎么理解?

它计算出除玩家 i 以外的所有剩余团队成员的子集的排列可以有多少个。或者换句话说:如果你有| N |-1 个玩家,你能用它们组成多少个| S |大小的组?然后我们用这个数字除以玩家 i 对所有大小为| S |的群体的边际贡献。

在我们的场景中,| N |-1=3,也就是说,当我们计算 D 的 Shapley 值时,这些是剩下的团队成员数量。在我们的例子中,我们将使用等式的那一部分来计算我们可以形成多少个 0、1、2 和 3 大小的组,因为这些只是我们可以用剩下的成员构造的组大小。因此,例如,如果有| S |=2,那么我们可以构造 3 个不同的大小为 2 的组:AB、BC 和 CA。这意味着我们应该对 8 个边缘值中的每一个应用以下比例因子: 

机器学习中的 Shapley 值怎么理解?

让我们思考一下为什么要这样做。我们想知道 D 对团队总产出的贡献有多大。为了做到这一点,我们计算了他对我们所能形成的团队中每个集合的贡献。通过添加这个比例因子,我们平均了其他团队成员对每个子集大小的影响。这意味着,当我们将 D 加入到一个 0,1,2 和 3 大小的团队中时,我们能够捕获这些团队的平均边际贡献。

好了,我们差不多结束了,我们只有 Shapley 值方程的最后一部分要分解,这一点也应该很容易理解。

机器学习中的 Shapley 值怎么理解?

我们需要应用到所有的边际值,然后才能求和。我们必须把它们和总队员数分开。

我们为什么要这么做?好吧,如果我们看看砖厂的例子,我们已经平均出了其他团队成员对每个子集大小的影响,这样我们就可以算出 D 对 0、1、2 和 3 大小的组的贡献。最后一块拼图是平均小组规模的影响,也就是说,D 贡献了多少与小组规模无关。

我们现在终于可以计算出 D 的 Shapley 值了,我们观察到他对团队中所有不同的子集的贡献是多少。我们还对团队成员组成和团队规模的影响进行了平均,这最终允许我们计算:

机器学习中的 Shapley 值怎么理解?

数学符号更多的是一个图形化的说明,而不是一个数学的说明(这是我在脑海中想象它的方式)

在这里,我们得到了 D 的 Shapley 值。在我们为团队的其他成员完成这项工作之后,我们将知道每个人对每周生产的 X 块砖的贡献,这样我们就可以在所有团队成员中公平地分配奖金。

机器学习中的 Shapley 值怎么理解?

在这一点上,我希望你对 Shapley 的价值观有了更好的理解。很酷的是,我们不需要知道任何关于值函数 v 内部工作原理,只需要观察它为不同子集提供的值,我们可以从参与游戏的玩家中得到这些值。

这才是 Shapley 值背后真正的力量和吸引力。然而,这是有代价的。对于一组参与游戏的 n 个玩家,你将需要分析 2^n 个子集才能计算 Shapley 值。

有一些方法可以使计算更加实际可行,在引言中我提到了 SHAP 框架,它的主要优点是,当将 Shapley 值应用于机器学习时,它能够更有效地计算 Shapley 值。

via:https://towardsdatascience.com/making-sense-of-shapley-values-dc67a8e4c5e8


http://chatgpt.dhexx.cn/article/Lwmy2TiZ.shtml

相关文章

做数据分析如何从囚徒困境到合作的进化

小飞象交流会 即使拿到一手烂牌,也要打出一串王炸。这是场无限游戏,努力成为牌桌上最后一名玩家。 内部交流│7期 做数据分析如何 从囚徒困境到合作的进化 data analysis ●●●● 分享人:周海鹏 ‍ ‍‍ 在推进业务线各种项目的过程中&#…

博弈论学习(二)——完全信息静态博弈

这一篇主要介绍非合作博弈中,完全信息静态博弈的相关知识。 切记非合作博弈的条件:参与人具有足够智力且极端个人主义,即以自己的效用作为唯一的衡量标准。 要理解完全信息静态博弈,首先要了解以下2个概念: 完全信息…

Nabla算子

Nabla算子的定义: 梯度: 散度: 旋度:

Marr-Hildreth边缘检测器

用于边缘检测的算子应该有两个显著的特点: 1.它应该能够计算图中每一个点处的一阶导数或者二阶导数的数字近似的微分算子。 2.它能够被“调整”以便在任何期望的尺寸上其作用。因此,大的算子也可以用于检测模糊边缘,小的算子可以用来检测锐度…

5-3-BP神经网络

文章目录 引入名词BP神经网络NaN独热码Nabla算子 1神经网络1.1 神经元模型1.2 神经元激活函数1.2.1 为什么要使用激活函数?1.2.2为什么激活函数需要非线性函数?1.2.3常用的激活函数sigmoid 激活函数tanh激活函数Relu激活函数 1.3 神经网络结构 2.损失函数…

图像梯度——Sobel算子和Laplacian算子

一、Sobel算子 1、定义 Sobel算子是一种离散的微分算子,结合了高斯平滑和微分求导运算,利用局部拆分寻找边缘,计算所得的是一个梯度的近似值。 Sobel算子|左-右|/|下-上| Scharr算子|左-右|/|下-上| 2、原理 滤波器指由一幅图根据像素点&…

sobel算子 拉普拉斯算子以及散度与梯度的概念

在ECBSR论文的代码研究中,我发现关于ECBSR提出的多分支重参数化模型中,代码用到了sobel算子与laplace算子,很难判断这两个算子是为了论文的创新点还是真的有用,这块只能等待后续的对比实验。 1、拉普拉斯算子 首先是散度与梯度的…

Python OpenCV Sobel 算子、Scharr 算子、laplacian 算子 复盘学习

Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧。本篇博客是这个系列的第 46 篇。 该系列文章导航参考:https://blog.csdn.net/hihell/category_10688961.html Python OpenCV 基础知识铺垫Sobel 算子Scharr 算子laplacian 算子 橡皮擦的小节 …

矢量场分析

矢量分析 向量微分算子 ∇ [ ∂ ∂ x ∂ ∂ y ∂ ∂ z ] T \nabla\left[\frac{\partial}{\partial {x}} \frac{\partial}{\partial {y}} \frac{\partial}{\partial{z}}\right]^T ∇[∂x∂​∂y∂​∂z∂​]T算子是一个形式向量,它可以作用于标量 f f f与向量 F ⃗…

Laplace算子

背景简述 在图像处理,我们知道经常把Laplace算子作为边缘检测之一,也是工程数学中常用的一种积分变换。本节主要介绍Laplacian 算子相关的知识。 基本理论 首先,拉普拉斯算子是最简单的各向同性微分算子,它具有旋转不变性。一个二…

使用二阶微分锐化图像(拉普拉斯算子)基本原理及Python实现

1. 拉普拉斯算子 1.1 简介 一种典型的各向同性的微分算子,可用于检测图像中灰度图片的区域 $$ \nabla^{2} f\frac{\partial^{2} f}{\partial x^{2}}\frac{\partial^{2} f}{\partial y^{2}} $$ 根据上述的差分近似可以推导出 $$ \nabla^{2} f(x, y)f(x1, y)f(x-1, y)…

卷积神经网络 作业

文章目录 卷积神经网络 作业1. 高斯拉普拉斯算子(边缘检测)1.1 简介1.2 拉普拉斯算子1.3 高斯拉普拉斯算子1.3 LoG使用指南1.4 总结1.5 代码实现 2. 使用LeNet网络,输出特征图2.1 作业要求2.2 代码实现 卷积神经网络 作业 1. 高斯拉普拉斯算子(边缘检测) 作业要求…

深度学习传统CV算法——二阶微分边缘算子

二阶微分边缘算子 二阶微分边缘算子二阶微分边缘算子基本思想Laplace 算子拉普拉斯表达式图像中的Laplace 算子Laplace算法过程Laplace算子的旋转不变性证明Laplace算子优缺点 LOG算子LoG解决的问题LoG算子的计算过程LoG的卷积模板LoG算法过程DoG与LoGLoG算子优缺点 Canny算子C…

MATLAB - 拉普拉斯算子可视化

1、拉普拉斯算子 ∇ 2 \nabla^ 2 ∇2 拉普拉斯算子有很多用途,在物理中常用于波动方程、热传导方程和亥姆霍兹方程的数学模型;在静电学中,拉普拉斯方程和泊松方程的应用随处可见;在数学中,经拉普拉斯算子运算运算为零…

一文读懂Nabla算子

文章目录 ∇ \nabla ∇算子的介绍梯度、散度和旋度不同坐标系下 ∇ \nabla ∇算子的形式 ∇ \nabla ∇算子运算律 ∇ \nabla ∇算子常用公式补充内容 参考文献及视频 ∇ \nabla ∇算子的介绍 ∇ \nabla ∇称作Nabla算子或del算子(算子是一种映射,可以理解…

【CSS 表格属性(Table)】

CSS 表格属性 Table 1. border-collapse 属性: 单元格/表格 边框 合并2. border-spacing 属性: 设置 表格/单元格 边框间距 /间隔距离 (搭配 border-collapse 属性 )3. caption-side 属性: 设置 表格标题的位置4. empty-cells 属性: 设置 表格 空单元格的显示 (空单…

html里table属性值,html——table标签属性总结

table标签属性 table标签 border border标签属性:设定围绕表格的边框的宽度:table 111111111border标签属性不仅设置围绕表格边框的宽度,还为每个单元格添加宽度为1px的边框 实际开发中不建议使用border标签属性实现边框效果,建议通过为table、th和td设定border样式属性实现…

css table属性

表格边框 指定CSS表格边框,使用border属性。 下面的例子指定了一个表格的th和td元素的黑色边框: 在上面的例子中的表格有双边框。这是因为表和th/ td元素有独立的边界。 为了显示一个表的单个边框,使用 border-collapse属性 折叠边框 border-…

elementUI表格table的列内置样式修改方法/对比template,列属性class-name,table属性cell-class-name

1,table属性cell-class-name的使用可以作用到某一行,或者某一列等等。但是在style标签中要去掉scoped,不然无效。 (在elementUI中,row-class-name、row-style、cell-class-name等属性要想生效必须使用全局class才能生…

html中table标签及属性

table表格 HTML表格由table标签以及多个tr、th和td标签组成table表示表格&#xff0c;整个表格要包含在<table></table>标签中tr表示表格中的行&#xff0c;是单元格的容器&#xff0c;一行可以包括多个单元格th表示表格中的单元格&#xff0c;我理解为列,th放在t…