当前位置: 首页 > 科技观察

如何理解机器学习中的Shapley值?

时间:2023-03-15 17:02:12 科技观察

第一次听说Shapley值是在研究模型可解释性的时候。我了解了SHAP,这是一个框架,可以更好地理解机器学习模型的行为方式。事实证明,Shapley值已经存在了一段时间,它们最早起源于1953年的博弈论领域,用于解决一群具有不同技能的玩家相互合作以获得集体奖励的情况。那么,如何在群体之间公平地分配奖励呢?当一个“旧”的概念应用到另一个领域,比如机器学习,它如何获得新的应用是非常有趣的。在机器学习中,参与者是您的输入特征,集体支出是模型预测。在这种情况下,Shapley值用于计算每个单独特征对模型输出的贡献。Shapley值是如何计算的?大多数时候,您往往会在文献中看到这个等式:让我们分解一下。在一场联赛中(前面描述的场景),我们有一组N名球员。我们还有一个函数v,它给出了这些actor的任意一个子集的值,也就是说,S是N的一个子集,那么v(S)给出了那个子集的值。因此,对于联合博弈(N,v),我们可以使用此等式来计算玩家i的贡献,即Shapley值。现在我不了解你,但当我第一次看到这个等式时,我的第一反应是:我很难理解为什么它看起来像这样。花了一些时间研究这个之后,我终于开始有了一些理解。所以,我们开始吧!好吧,我们要做的第一件事就是重写初始方程式:乍一看,这个方程式似乎并没有变得更简单,但请放轻松。很快,我将分解等式的不同部分以便理解它们,但我们也可以定义一个具体的场景,我们可以使用它来使所有部分不那么抽象。假设我们经营一家生产砖块的工厂。我们的一个制作团队由四个人组成:Amanda、Ben、Claire和Don(以下我将以他们名字的首字母来称呼他们)。他们一起设法每周生产X块砖。由于我们工厂运转良好,我们有奖金可以发给团队成员。然而,为了让我们以公平的方式做到这一点,我们需要计算出每个人每周为生产X数量的砖块做出了多少贡献。最困难的部分是我们有几个因素会影响一个团队可以生产的砖块数量。其中之一是团队规模,因为团队越大,生产的砖块就越多。另一种可能性是团队成员之间的合作程度。问题是,我们无法以有意义的方式量化这些影响,但幸运的是,我们可以使用Shapley值来回避这个问题。我们现在已经定义了我们的玩家(A、B、C和D)和他们玩的游戏(生产积木)。让我们开始计算生产的X块砖中有多少可以归因于Don,即计算D的Shapley值。如果我们将其与Shapley值公式的参数相关联,我们得到:所以D是我们的玩家i,整个N组由A、B、C、D四位选手组成,我们先来看一下Shapley值公式这部分:即我们现在关注的人群中需要排除我们的队员。然后,我们需要考虑所有可能的子集。因此,如果我们将D从组中排除,我们将剩下{A,B,C}。从这个剩余的组中,我们可以形成以下子集:我们总共可以构建剩余团队成员的8个不同的子集。其中一个子集是空集,即它没有成员。现在让我们把注意力转到这部分:这是我们Shapley值的一个基本概念的应用:增加玩家i在游戏中的边际价值。因此,对于任何给定的子集,我们将其值与包含玩家i时的值进行比较。通过这样做,我们得到了将玩家i添加到子集中的边际值。我们将此与我们的示例相关联,并希望了解如果我们将D添加到8个子集中的每个子集中,每周生产的砖块数量有何不同。我们可以将这8个边缘值可视化为:您可以将每个边缘值视为我们需要查看的不同场景,以便公平地评估D对整体生产的贡献程度。这意味着,我们需要观察如果没有人工作(即空集)会生产多少块砖,并将其与只有D工作时发生的情况进行比较。我们还需要查看AB生产的砖块数量,并将其与所有8套中AB生产的砖块数量和D生产的砖块数量进行比较。好吧,我们现在知道我们需要计算8个不同的边值。Shapley值方程告诉我们需要将它们相加。然而,在我们这样做之前,我们还需要调整每个边际值,从等式的这一部分可以看出:它计算除了玩家i之外的所有剩余团队成员的子集可以有多少排列.或者换句话说:如果你有|N|-1个玩家,有多少组大小为|S|你能和他们一起形成吗?然后我们将这个数字除以玩家i对于所有大小为|S|的组的边距贡献。在我们的场景中,|N|-1=3,也就是说,这些是我们计算D的Shapley值时剩余的团队成员数量。在我们的例子中,我们将使用等式的那部分来计算有多少我们可以形成大小为0、1、2和3的组,因为这些只是我们可以用剩余成员构建的组大小。因此,例如,如果我们有|S|=2,那么我们可以构造3个大小为2的不同组:AB、BC和CA。这意味着我们应该对8个边缘值中的每一个应用以下比例因子:让我们想想为什么要这样做。我们想知道D对团队总产出的贡献有多大。为此,我们计算了他对我们可以组建的团队中每组的贡献。通过添加这个比例因子,我们平均了其他团队成员对每个子集大小的影响。这意味着当我们将D添加到规模为0、1、2和3的团队时,我们能够捕获这些团队的平均边际贡献。好吧,我们差不多完成了,我们只需要分解出Shapley值方程的最后一部分,这应该也很容易理解。我们需要应用到所有的边际值,才能求和。我们必须将它们与玩家总数分开。我们为什么要做这个?好吧,如果我们看一下砖厂的例子,我们已经平均了其他团队成员对每个子集大小的影响,这样我们就可以计算出D对大小0、1、2和3组贡献的影响。最后一块拼图是平均群体规模的影响,即D的贡献与群体规模无关。我们现在终于可以计算出D的Shapley值,我们观察他对团队所有不同子集的贡献有多大。我们还对团队组成和团队规模的影响进行了平均,这最终使我们能够计算:数学符号更像是一种图形陈述而不是数学符号(这是我在脑海中描绘的方式)这里我们得到的Shapley值D.为团队其他成员完成此操作后,我们将了解每个人对每周生产的X个积木的贡献,因此我们可以将奖金公平地分配给所有团队成员。至此,希望大家对沙普利的价值观有更深入的了解。很酷的是,我们不需要了解价值函数v的内部工作原理,只需观察它为不同子集提供的值,我们可以从参与游戏的玩家那里获得这些值。这就是Shapley价值观背后的真正力量和吸引力。然而,这是有代价的。对于参与游戏的一组n个玩家,您将需要分析2^n个子集来计算Shapley值。有一些方法可以使计算更实用,在介绍中我提到了SHAP框架,其主要优点是在将Shapley值应用于机器学习时可以更高效地计算Shapley值。本文转载自雷锋网。如需转载,请在雷锋网官网申请授权。