沙普利算法是一个解释算法工业和学术界所公认。然而,鉴于其指数运行时的复杂性和现有的实现采取很长时间为一个单独的实例生成特性的贡献,它发现有限的实际应用。为了解释模型预测在规模,我们实现了夏普利输入法算法在火花。据我们所知,这是第一个美妙的火花实现算法扩展到大型数据集,可以处理大多数毫升模型对象。
你好,欢迎来到火花AI峰会。今天我们将谈论关于我们的开源包Shparkley,这是扩展夏普利值与Apache火花。bob下载地址我汀的杜瓦和我和湘肯定我们要和你谈谈。嗨。所以我们今天的日程安排是我们要经历的介绍。我们将讨论什么是夏普利值。我们怎么实现它呢?如何,然后同时,算法执行如何?我是汀的杜瓦。我是一个机器学习应用科学家肯定的ML团队欺诈。 – And my name is Xiang and I’m also an applied machine learning scientist at Affirm, but I’m on the underwriting team. – So Affirm offers point of sale loans for our customers. Our applied machine learning team creates models for credit risk decisioning and for fraud decisioning, and also builds recommendation systems to personalize customers’ experiences. So for both fraud and credit, it is extremely important to be able to have a model that is both fair and interpretable. For credit, we need to be able to explain why they were rejected for fair lending reasons. For fraud we need to have our internal risk operations team understand why users are getting identity declined and what factors are enabling fraudulent users to slip through our fraud models. We want to understand how each feature is impacting each user, not just general feature importance. So we have millions of rows of data and hundreds of features. We need a solution that allows us to interpret how our models are impacting individual users at scale that serves up results quickly. Some might ask why we don’t just use an easily interpretable model, like logistic regression. Simply we have found that logistic regression does not perform as well as some of the black box models.
所以,我们需要一个解决方案,允许我们解释的有效特征对个人用户和及时。所以,让我们先关注第一个点。所以,在合作博弈理论中,有一个问题关于如何分配剩余资源合作产生的球员。这是种当整体大于各部分的总和。我们如何把盈余?所以我喜欢思考它就像一个小游戏。独特的数量问题一个团队一起玩耍时对更高比单独每个玩家玩,然后结合他们的答案。通过合作和合作的球员能够得到正确的问题,他们将无法得到正确的自己。我们不仅希望能够属性个体带来多少钱如果他们单独工作,但他们是多么宝贵的合作者。
所以,我们想通过这些属性后当边际贡献分配到每个球员。让我们进入每一个细节,对称,假,可加性和效率。
所以对称。很简单。两个球员的贡献同样将支付同样。所以如果你和你的朋友出去吃饭和你吃同样的数量,然后将法案时,你应该支付相同的金额。
所以,虚拟。一个球员不贡献值为零。所以,如果你和你的朋友出去吃饭就有水,你将不必支付任何东西。
所以,可加性。这有点复杂,每个游戏玩家的边际贡献,当平均评估一样,球员在整个赛季。随机森林模型有三棵树,如果你评价一个特性为每棵树的重要性,然后对这些值取平均,或者如果你只是应该等于时,如果你只是评估功能模型的重要性。
因此,效率。边际贡献为每个特性时总结的平均预测样本的预测。如果平均预测是5,我们有四个不同的特性,那么他们的边际贡献的每一个当添加到平均预测应该得到样本的预测。
所以,这些都是四个属性,我们认为是重要的在评估边际贡献,对称,假,可加性和效率。那么,解决方案,所有四个属性吗?
沙普利值。所以,沙普利值是什么?
所以夏普利值是一个方式来定义支付比例为所有玩家每位玩家的边际贡献。我们刚讨论过的那些属性,和这一概念于1953年由Lloyd Shapley引入。所以,让我们跳进一个例子,我们可以看到背后的数学算法是如何工作的。
所以,我们要看这四个特性模型的例子。早些时候我们使用术语玩家对游戏理论。在ML模型中,我们的球员是我们的特性和他们试图实现的目标是做出一个正确的预测。所以在这个例子中,我们有一个模型有四个特性。信用评分,他们拖欠的次数多少次他们付款晚了,不仅仅是肯定,但所有银行,他们要求借多少,然后也有他们偿还肯定特别。现在让我们来看看这个公式,看看我们会计算边际贡献。
所以我们要得到的边际贡献特征j所以我们要总和可能排列订单特性j。所以我们需要做的这是我们需要在排列顺序,特征的数量,然后整个学期的分数最终被排列的特性j在那个地方排列顺序。然后你的分数乘以分数的差异特性j和比分之前添加功能。
那么为什么排列顺序重要吗?为什么我们总结排列?所以我们不仅要看到好这个功能是如何工作的,我们试图与如何测量它与所有其他的特性集。为了做到这一点,我们需要制造的所有可能的场景功能如何与另一个特性或特性集。那么我们该怎么做呢?排列订单。
所以,我们这是我们感兴趣的特性FICO分数。它只能对这四种可能的位置特征。
第一,第二,第三,第四,对于这些,我们只关心的排列,是什么功能的设置在我们感兴趣的特征吗?
这看起来就像当我们在第一个位置或在过去的位置,我们感兴趣的特征,然后在第一个位置,没有特色。这是我们关心的唯一可能的事情。然后在最后的时候,之前的所有特性。这也是只有一个选择。然后第二名和第三名的,有三种可能的设置。对于每一个排列,我们需要比较模型如何执行和不感兴趣的特征。因此,让我们回到我们的方程。
所以,现在我们知道我们总结过去。我们正在经历的每一个这些小不同排列顺序和模型。我们知道我们的分数,因为我们知道我们在排列顺序和数量的特性。现在的问题是,我们如何得到分数特性j和分数没有?所以我们比较这些排列的性能感兴趣的特性,然后当它不。
和我们要做的是为每一个可能的排列顺序,我们比较这两个东西。
所以,现在我们得到这背后的数学。我们看到我们遍历。我们看到,我们比较这两个分数和和不感兴趣的特征,但实际上我们如何得分模型与其他一些功能,而不是在一个有效的方式吗?我们可以再培训模型每一次,但这是非常缓慢而错过一些互动。所以我们可以做我们能做的是近似。
所以我们要做的是我们要近似通过抑制贡献的交换功能使其噪声。所以我想这是比较喜欢,如果你创建一个PDP阴谋。所以你会保持一些值不变而改变别人看到的输出变化。所以,湘将进入更多细节关于这个在实现部分。
所以,听起来不错。我们有一个办法的边际贡献个人行,不仅仅是广义特征的重要性,但即使有近似,看起来超级计算昂贵。那么我们如何处理呢?为了回答这个我要说Apache火花和把它交给香来解释我们如何实现它。——好的。现在我们来看看这是如何实现的火花。所以我基本上在一个基于蒙特卡罗的近似算法,可以近似的夏普利值。然后我会基本上进入使用引发关于它是如何实现的细节。
首先我将讨论这个基于蒙特卡罗的近似算法。假设我们有一个申请人叫乔,和乔在确认申请500美元的贷款。乔,他FICO分数是660,他已经偿还公司之前,他有两个拖欠信用报告。在确认中,我们使用一个黑盒子模型承销乔。这模型将使用所有这些特性和输出每个付款方面。现在,假设我们想了解的夏普利值乔的FICO分数,也就是660。
所以我们要做的是我们要首先样本随机排列顺序以及随机数据集的实例。这里是采样顺序,首先是通过贷款金额,其次是FICO分数,然后拖欠的数量,最后,乔是否偿还公司之前。此订单将更换或近似你看到所有可能的排列在前面的公式。例如,我们叫他约翰,约翰的FICO分数为700,他已经申请了300美元的贷款之前,他已经偿还公司之前,他在信用报告违约率为零。
然后使用这个顺序和约翰的数据,我们将创建两个反事实的实例。对于第一个反事实的实例,我们将采取的所有功能,包括FICO分数之前之前,FICO分数从乔。因此,贷款金额是500美元和660 FICO分数。然后,我们要添加所有其余的特征值从乔,这是零拖欠和与前一个公司偿还。这就是我们得到了我们的第一个实例。然后我们得到我们的第二个实例,它非常类似于第一种情况下,除了我们要取代FICO分数与约翰的FICO分数,也就是700。这些两个实例代表什么?对于第一个实例,你可以把它作为实例,乔的FICO分数的影响。而第二个没有乔的FICO分数。然后我们基本上满足这两个实例到黑盒模型,观察不同。 That difference will be an approximation for the marginal contribution, or the Shapley value for the FICO score. We then run this procedure many, many times, and by the law of large numbers, we would expect that the average of these differences would be very close to the actual Shapley value for Joe’s FICO score.
现在,让我们看看它是如何实现的火花。Shparkley,事先我们事先选定大量样品,基本上,他们将被用作参考行或作为一个类似的功能,约翰,在我们之前的例子。我们这个巨大的数据集分割成不同的分区和播放我们的实例调查的每个分区。
为了说明这个想法,假设我们要计算的夏普利值贷款金额。然后我们有一些行一个分区,这看起来像左边的行,那么我们也有右边的实例,这是我们试图调查的实例。然后我们将样本随机排列顺序,恰好是许多犯罪首先,其次是FICO分数,贷款金额,然后与公司偿还。我们根据这个顺序重新排列这两个实例。这就是现在犯罪的首位,其次是FICO分数,然后贷款金额,最后,是否已偿还。
使用这两个安排的情况下,我们现在可以开始创建反事实的实例。例如,贷款金额的影响。我们将采取一系列的犯罪,FICO分数,和贷款金额从我们的实例调查,之前看到这些特点是贷款金额。从我们的贷款分区,我们将使用什么这是肯定的。的实例没有贷款额度的影响,我们将基本上只采取犯罪数量和FICO分数从我们的实例调查,取代贷款金额与我们参考行也就是1000美元。
然后我们养活这两个违反事实的情况下进入我们的黑盒模型,观察输出。这在我们的例子中,输出是0.8。例如,贷款金额的影响而0.7实例,没有贷款额度的效果。将0.1的区别,将边际贡献的贷款金额从我们参考行实例,我们试图调查。
我们通过这个过程的所有行,运行在所有的分区。然后我们可以得到一个数据帧在每一个分区。这将是一个两列数据帧的一列将从参考行,边际贡献,另一个是功能,这是导致。所有我们需要的是平均的特性,然后我们可以得到的所有特性的夏普利值。
在我进入运行时和蒙特卡罗误差收敛,我想我们列出的几个亮点Shparkley实现。首先,这是一个基于火花实现数据集的尺度。因为我们事先选定的背景或引用事先卷,现在运行时只依赖于背景样本的数量,水平伸缩。您可以简单地添加更多的机器或更多的工人。
第二件事是我们可以利用运行时实现优势从批处理预测推理模型。如果你喜欢,任何类型的优化,如分解,可以加快批量预测速度,我们的算法可以受益。第三件事是,我们的实现重用的预测,计算排列路线计算的夏普利值的所有特性。我们开源实现,你bob下载地址可以找到一个链接的幻灯片。如果你好奇我们如何做,你可以在那里找到细节。和最后但并非最不重要,我们还添加了一种支持夏普利值计算。所以如果有重要数据实例,我们的实现可以占。好吧。现在让我们看看如何蒙特卡罗误差收敛的数量样品,我们选择事先?这里我们展示,如何整体夏普利值差异和等级差异如何变化,当我们增加样本的数量在我们的后台数据集。 As we can see the number shrinks quickly, and it is almost minimum when we have over 100 thousand samples. So we’ll be using that for the next runtime comparisons.
所以使用10万参考样本和一个虚拟模型,我们运行我们的实现Shparkley对开放源码包世鹏科技电子是由原作者的美妙。bob下载地址所以集群上,我们的实现,
它运行18秒钟生成夏普利值解释,为实例而BruteForce讲解员的世鹏科技电子包花了大约20分钟。这是大约50到60次运行时改进。在我们使用的集群配置基本上10机器,一个主的工人,他们每个人都是一个有16个核心r5.4x亚马逊EC2实例。所以鉴于原夏普利包不是瘫痪,所以如果你正常化的核心,仍有改进的像一个五到六倍的运行时。那么我们如何实现对BruteForce解释的夏普利值相比,可视为地面真理?这里我们可以看到在右边,沙普利值的值,它们非常小,没有等级差别的夏普利值。
所以,总之,我们有一个实现相比,蛮前实现运行时改进了50到60倍。它几乎是相同的的夏普利值和零差异的等级差别。
这个实现是一个共同努力的人在确认后,可以肯定的GitHub。你可以选择和存储夏普利包,开始整合你的黑盒模型。这是所有,谢谢你参加我们的演讲。