主要内容

沙普利值机器学习模型

你可以计算夏普利值通过使用机器学习模型沙普利对象。使用解释个人的贡献值特性的模型来预测查询点。有两种方法来计算夏普利值:

  • 创建一个沙普利对机器学习模型对象与指定查询使用沙普利函数。所有功能的函数计算夏普利值查询的模型。

  • 创建一个沙普利对象通过使用机器学习模型沙普利函数,然后计算的夏普利值指定的查询使用适合函数。

这一主题定义夏普利值,描述了两个可用的算法计算夏普利值,提供了为每一个例子,展示了如何降低成本计算Shapley值。

沙普利值是什么?

在博弈论中,一个球员的夏普利值是平均边际贡献的球员合作游戏。沙普利值公平分配,个别球员,总增益产生合作的游戏。上下文中的机器学习预测的夏普利值功能查询点解释特性预测的贡献(响应回归或得分的每个类分类)在指定的查询。沙普利值对应查询的预测点的偏差的平均预测,由于功能。对于每个查询点,沙普利值之和所有功能对应的总偏差预测的平均水平。

的夏普利值功能为查询点x定义的值函数v:

φ ( v x ) = 1 年代 \ { } v x ( 年代 { } ) v x ( 年代 ) ( 1 ) ! | 年代 | ! ( | 年代 | 1 ) ! (1)
  • 是所有的数量特征。

  • 是所有功能的集合。

  • |年代|是集的基数年代或设置元素的数目年代

  • vx(年代)价值函数的特性在一组年代查询点x。函数的值表示特性的预期贡献年代查询的预测点x

沙普利值计算算法

沙普利提供了两种算法:kernelSHAP[1]使用价值的介入分布函数,以及kernelSHAP扩展[2]使用价值的条件分布函数。您可以指定要使用的算法通过设置“方法”名称-值参数的沙普利函数或适合函数。

两种算法之间的差异价值函数的定义。两种算法定义的价值函数,这样查询点的夏普利值的总和除以所有功能对应的总偏差预测查询点的平均水平。

= 1 φ ( v x ) = f ( x ) E ( f ( x ) ]

因此,价值函数vx(年代)必须对应的预期贡献的特性年代预测(f)查询点x。两种算法计算预期的贡献通过使用人工样品从指定的数据(创建X)。你必须提供X通过机器学习模型输入或一个单独的数据输入参数当您创建一个沙普利对象。人工样品的特性的值年代来自查询点。其余的特性(特征年代c的补充年代使用介入),kernelSHAP算法生成样本分布,而扩展kernelSHAP算法生成样本使用条件分布。

KernelSHAP (“方法”、“interventional-kernel”)

沙普利使用默认kernelSHAP算法。

kernelSHAP算法定义了价值函数的特性年代查询的时候x正如预期的预测对介入分布D的联合分布的特性年代c:

v x ( 年代 ) = E D ( f ( x 年代 , X 年代 c ) ] ,

在哪里x年代查询功能的点值吗年代,X年代c的特征是年代c

评估的价值功能vx(年代)查询的时候x,假设特性高度相关,沙普利使用中的值数据X作为介入的样本分布D的特性年代c:

v x ( 年代 ) = E D ( f ( x 年代 , X 年代 c ) ] 1 N j = 1 N f ( x 年代 , ( X 年代 c ) j ) ,

在哪里N是观测的数量,和(X年代c)j包含特性的值年代cj观察。

例如,假设您有三个特性X和四个观察:(x11,x12,x13),(x21,x22,x23),(x31日,x32,x33)和(x41,x42,x43)。假设年代包括第一个特性,年代c包括休息。在这种情况下,第一个特性评估的价值函数查询点(x41,x42,x43)是

v x ( 年代 ) = 1 4 ( f ( x 41 , x 12 , x 13 ) + f ( x 41 , x 22 , x 23 ) + f ( x 41 , x 32 , x 33 ) + f ( x 41 , x 42 , x 43 ) ]

kernelSHAP算法在计算上更便宜比kernelSHAP算法的扩展,支持有序分类预测,可以处理缺失值万博1manbetxX。然而,该算法需要特征独立性假设和使用out-of-distribution样本[3]。查询的人工创建混合样本点和数据X可以包含不切实际的观察。例如,(x41,x12,x13)可能是一个样本不发生在完整的联合分布的三个特性。

扩展KernelSHAP (“方法”、“conditional-kernel”)

指定“方法”、“conditional-kernel”使用扩展kernelSHAP算法。

扩展kernelSHAP算法定义了价值函数的特性年代查询的时候x使用的条件分布X年代c,考虑到X年代查询点的值:

v x ( 年代 ) = E X 年代 c | X 年代 = x 年代 ( f ( x 年代 , X 年代 c ) ]

评估的价值功能vx(年代)查询的时候x,沙普利使用最近邻居查询的点,它对应于10%的观测数据X。这种方法使用更现实的样品比kernelSHAP算法和不需要特征独立性假设。然而,这种算法计算更加昂贵,不支持有序分类预测,并不能处理万博1manbetx在连续的特性。同时,算法可能分配一个非零的夏普利值一个虚拟的特性,并不能促进预测,如果虚拟特性是与一个重要特征[3]

指定夏普利值计算算法

这个例子火车一个线性分类模型和计算夏普利值使用kernelSHAP算法(“方法”、“interventional-kernel”)和扩展kernelSHAP算法(“方法”、“conditional-kernel”)。

火车线性分类模型

加载电离层数据集。这个数据集有34个预测因子和351二进制响应雷达回报,要么坏(“b”)或好(‘g’)。

负载电离层

火车一个线性分类模型。指定目标函数极小化技术(“规划求解”名称-值参数)作为内存有限Broyden-Fletcher-Goldfarb-Shanno拟牛顿算法(“lbfgs”为更好的线性系数的准确性。

Mdl = fitclinear (X, Y,“规划求解”,“lbfgs”)
Mdl = ClassificationLinear ResponseName:“Y”类名:{b ' g '} ScoreTransform:“没有一个”测试:[34 x1双]偏见:-3.7100λ:0.0028学习者:“支持向量机”属性,方法

沙普利值和介入分布

计算的夏普利值第一次观察到使用kernelSHAP算法,它使用介入分布函数的价值评估。你不需要指定“方法”价值的,因为“interventional-kernel”是默认的。

queryPoint = X (1);explainer1 =沙普利(Mdl X,“QueryPoint”,queryPoint);

对于一个分类模型,沙普利计算夏普利值使用预测类分数为每个类。情节的夏普利值预测类使用情节函数。

情节(explainer1)

图包含一个坐标轴对象。坐标轴对象标题夏普利解释包含一个对象类型的酒吧。

水平条形图显示了夏普利值10个最重要的变量,按他们的绝对值。每个夏普利值解释查询的得分点的偏差的平均分数预测类,由于相应的变量。

线性模型,假设特征是独立的,你可以计算出积极介入夏普利值类(或第二课Mdl.ClassNames,‘g’)的估计系数(Mdl.Beta)[1]

linearSHAPValues = (Mdl.Beta。”* (queryPoint-mean (X)));

创建一个表包含kernelSHAP的夏普利值计算算法和系数的值。

t =表(explainer1.ShapleyValues.Predictor explainer1.ShapleyValues.g linearSHAPValues,“VariableNames”,{“预测”,“KernelSHAP价值”,“LinearSHAP价值”})
t =34×3表预测KernelSHAP价值LinearSHAP价值_____ ___________ ___________ x1“0.28789 - 0.28789“x2”1.9017 e15汽油0 x3“0.20822 - 0.20822“x4”-0.01998 - -0.01998 0.20872 - 0.20872“x5 x6“-0.076991 - -0.076991“x7”0.19188 - 0.19188 -0.64386 - -0.64386“×8”“x9”0.42348 - 0.42348 x10“-0.030049 - -0.030049 x11“-0.23132 - -0.23132“x12”0.1422 0.1422 * 13“-0.045973 - -0.045973”x14”-0.29022 - -0.29022“x15”0.21051 - 0.21051 0.13382 - 0.13382⋮“乘16”

沙普利值和条件分布

计算的夏普利值第一次观察到使用扩展kernelSHAP算法,它使用价值的条件分布函数评估。

explainer2 =沙普利(Mdl X,“QueryPoint”queryPoint,“方法”,“conditional-kernel”);

情节夏普利值。

情节(explainer2)

图包含一个坐标轴对象。坐标轴对象标题夏普利解释包含一个对象类型的酒吧。

的两个算法识别不同10个最重要的变量。只有两个变量的混合体是常见的两组。

沙普利值计算的复杂性

沙普利值的计算成本增加如果观察或特征的数量很大。

大量的观察

计算函数值(v)可以计算昂贵的如果你有大量的观察,例如,超过1000人。更快的计算,使用一个更小的样本的观察当您创建一个沙普利对象,或通过指定并行计算夏普利值“UseParallel”作为真正的当你计算使用的值沙普利适合函数。并行计算需要并行计算工具箱™。

大量的功能

计算的被加数方程1对所有可用的子集年代可以计算昂贵的什么时候(特性)的数量很大。考虑子集的总数2。而不是计算所有子集的被加数,您可以指定的最大数量子集夏普利值计算通过使用“MaxNumSubsets”名称-值参数。沙普利使用基于他们的体重值选择子集。的重量成正比的一个子集1 /(分母的被加数),对应1 /二项式系数: 1 / ( 1 | 年代 | ) 。因此,高或低价值的一个子集基数大的重量值。沙普利包括体重最高的子集,然后包括其他子集在根据自己的体重值降序排列。

降低计算成本

这个例子展示了如何减少夏普利值的计算成本,当你有大量的观测和特性。

火车回归合奏

加载示例数据集NYCHousing2015

负载NYCHousing2015

数据集包括55246的观察变量的信息属性的销售在2015年在纽约。这个示例使用这些变量分析销售价格(SALEPRICE)。

预处理的数据集转换datetime阵列(SALEDATE)本月的数字。

NYCHousing2015。SALEDATE=month(NYCHousing2015.SALEDATE);

火车一个回归合奏。

Mdl = fitrensemble (NYCHousing2015,“SALEPRICE”);

计算夏普利值与默认选项

计算所有预测变量的夏普利值第一观察。测量计算所需的时间利用夏普利值抽搐toc

抽搐explainer1 =沙普利(Mdl,“QueryPoint”NYCHousing2015 (:));
警告:计算可能会很慢,因为预测数据有超过1000的观察。使用一个更小的样本训练集或指定“UseParallel”作为适用于更快的计算。
toc
运行时间是492.365307秒。

警告消息表明,计算可能会很慢,因为预测数据有超过1000的观察。

指定选项来降低计算成本

沙普利提供几个选项来降低计算成本当你有大量的观测或特性。

  • 大量的观察——使用一个更小的样本训练数据和计算夏普利值并行通过指定“UseParallel”作为真正的

  • 大量的特性——指定“MaxNumSubsets”名称-值参数限制包括在子集的数量计算。

计算夏普利值再次使用一个更小的样本训练数据和并行计算的选择。同时,指定的最大数量的子集2 ^ 5

NumSamples = 5 e2;台= datasample (NYCHousing2015 NumSamples,“替换”、假);抽搐explainer2 =沙普利(Mdl、台、“QueryPoint”NYCHousing2015 (1:)“UseParallel”,真的,“MaxNumSubsets”、2 ^ 5);
开始平行池(parpool)使用“本地”概要文件…连接到平行池(工人数量:6)。
toc
运行时间是52.183287秒。

指定附加选项减少计算夏普利值所需的时间。

引用

[1]Lundberg,斯科特·M。李,美国。“一个统一的方法来解释模型的预测”。先进的神经信息处理系统30 (2017):4765 - 774。

[2]Aas, Kjersti,马丁。Jullum,安德斯Løland。“解释个人预测当依赖特性:更精确的近似夏普利值。”arXiv: 1903.10464(2019)。

[3]库马尔,伊丽莎白,卡洛斯•Scheidegger Suresh文卡塔萨布拉曼尼亚和Sorelle fiedl的用于检查电子邮件地址。“问题与Shapley-Value-Based解释功能的重要措施。”arXiv: 2002.11097(2020)。

另请参阅

||