【人工智能系列经典图书翻译】可解释机器学习(第二版) 第9章 局部模型无关方法

第9章 局部模型无关方法

局部解释方法解释个别预测。在本章中,你将了解以下局部解释方法:

  • 单个条件期望曲线部分依赖图的构建块,描述了改变特征如何改变预测。
  • 局部代理模型(LIME)通过将复杂模型替换为局部可解释的代理模型来解释预测。
  • 范围规则(锚点)是描述哪些特征值锚定预测的规则,从某种意义上说,它们将预测锁定到位。
  • 反事实解释通过检查需要更改哪些特征以实现所需的预测来解释预测。
  • Shapley 值是一种归因方法,可以将预测公平地分配给各个特征。
  • SHAP是 Shapley 值的另一种计算方法,但也提出了基于数据中 Shapley 值组合的全局解释方法。

LIME 和 Shapley 值是归因方法,因此单个实​​例的预测被描述为特征效应的总和。其他方法,例如反事实解释,是基于示例的。

9.1 个人条件期望

单个条件期望 (ICE) 图在每个实例中显示一条线,显示当特征发生变化时实例的预测如何变化。

特征平均效果的部分依赖图是一种全局方法,因为它不关注特定实例,而是关注整体平均值。对应于单个数据实例的 PDP 被称为单个条件期望 (ICE) 图 (Goldstein et al. 20171)。ICE 图可视化了预测对每个特征的依赖性单独实例,导致每个实例一条线,而部分依赖图中的一条线整体。PDP 是 ICE 图线的平均值。可以通过保持所有其他特征相同来计算一条线(和一个实例)的值,通过将特征的值替换为网格中的值并使用黑盒模型对这些新创建的实例进行预测来创建该实例的变体。结果是具有来自网格的特征值和相应预测的实例的一组点。

关注个人期望而不是部分依赖有什么意义?部分依赖图可以掩盖由交互作用产生的异质关系。PDP 可以向你展示特征与预测之间的平均关系是什么样的。这仅在计算 PDP 的特征与其他特征之间的相互作用较弱时才有效。在交互的情况下,ICE 图将提供更多的洞察力。

更正式的定义:在 ICE 图中,对于每个实例 { ( x S ( i ) , x C ( i ) ) } i = 1 N \{(x_{S}^{(i)},x_{C}^{(i)})\}_{i=1}^N {(xS(i),xC(i))}i=1N x S ( i ) x^{(i)}_{S} xS(i) 对应的曲线 f ^ S ( i ) \hat{f}_S^{(i)} f^S(i) 都会重绘, x C ( i ) x^{(i)}_{C} xC(i) 则固定不变.

9.1.1 示例

让我们回到宫颈癌数据集,看看每个实例的预测如何与特征“年龄”相关联。我们将分析一个随机森林,该森林预测给定风险因素的女性患癌症的概率。

部分依赖图中,我们看到癌症概率在 50 岁左右增加,但对于数据集中的每个女性来说都是如此吗?ICE 图显示,对于大多数女性而言,年龄效应遵循 50 岁时增加的平均模式,但也有一些例外:对于在年轻时预测概率较高的少数女性,预测的癌症概率不会改变随着年龄的增长。

img
图 9.1:按年龄划分的宫颈癌概率 ICE 图。每条线代表一个女人。对于大多数女性来说,随着年龄的增长,预测的癌症概率会增加。对于一些预测癌症概率高于 0.4 的女性,预测在较高年龄时变化不大。

下图显示了自行车租赁预测的 ICE 图。底层预测模型是随机森林。

The next figure shows ICE plots for the bike rental prediction.
The underlying prediction model is a random forest.

img

所有曲线似乎都遵循相同的路线,因此没有明显的相互作用。这意味着 PDP 已经很好地总结了显示的特征和预测的自行车数量之间的关系。

9.1.1.1 居中的 ICE 图

ICE 图有一个问题:有时很难判断个体之间的 ICE 曲线是否不同,因为它们开始于不同的预测。一个简单的解决方案是将曲线在特征中的某个点居中,并仅显示与该点的预测差异。生成的图称为居中 ICE 图 (c-ICE)。将曲线锚定在特征的下端是一个不错的选择。新曲线定义为:

f ^ c e n t ( i ) = f ^ ( i ) − 1 f ^ ( x a , x C ( i ) ) \hat{f}_{cent}^{(i)}=\hat{f}^{(i)}-\mathbf{1}\hat{f}(x^{a},x^{(i)}_{C}) f^cent(i)=f^(i)1f^(xa,xC(i))

在哪里 1 \mathbf{1} 1 是具有适当维数(通常为1或2)的 1 向量, f ^ \hat{f} f^ 是拟合模型, x a x^a xa 是锚点。

9.1.1.2 示例

例如,以宫颈癌 ICE 的年龄图为例,以观察到的最年轻的年龄为中心:

img
图 9.3:按年龄预测的癌症概率的中心 ICE 图。线在 14 岁时固定为 0。与 14 岁相比,大多数女性的预测保持不变,直到 45 岁时预测概率增加。

居中的 ICE 图便于比较各个实例的曲线。如果我们不想看到预测值的绝对变化,而是希望看到预测与特征范围的固定点相比的差异,这可能很有用。

让我们看一下自行车租赁预测的居中 ICE 图:

img
图 9.4:按天气条件预测的自行车数量的居中 ICE 图。这些线显示了预测与相应特征值处于观察到的最小值的预测相比的差异。

9.1.1.3 导数 ICE 图

另一种在视觉上更容易发现异质性的方法是查看预测函数相对于特征的各个导数。生成的图称为导数 ICE 图 (d-ICE)。函数(或曲线)的导数告诉你变化是否发生以及发生的方向。使用导数 ICE 图,很容易发现黑盒预测对于(至少某些)实例发生变化的特征值范围。如果分析的特征 x S x_S xS 和其他特征 x C x_C xC 之间没有交互,则预测函数可表示为:

f ^ ( x ) = f ^ ( x S , x C ) = g ( x S ) + h ( x C ) , with δ f ^ ( x ) δ x S = g ′ ( x S ) \hat{f}(x)=\hat{f}(x_S,x_C)=g(x_S)+h(x_C),\quad\text{with}\quad\frac{\delta\hat{f}(x)}{\delta{}x_S}=g'(x_S) f^(x)=f^(xS,xC)=g(xS)+h(xC),withδxSδf^(x)=g(xS)

在没有交互作用的情况下,所有实例的各个偏导数应该是相同的。如果它们不同,那是由于相互作用,它在 d-ICE 图中变得可见。除了显示预测函数相对于 S 中特征的导数的各个曲线外,显示导数的标准差有助于突出 S 中特征中估计导数存在异质性的区域。导数 ICE 图需要很长时间来计算并且相当不切实际。

9.1.2 优势

单个条件期望曲线比部分依赖图更易于理解。如果我们改变感兴趣的特征,一条线代表一个实例的预测。与部分依赖图不同,ICE 曲线可以揭示异质关系

9.1.3 缺点

ICE 曲线只能显示一个特征,因为两个特征需要绘制多个重叠表面,而你在图中看不到任何东西。

ICE 曲线面临与 PDP 相同的问题:如果感兴趣的特征与其他特征相关,那么根据联合特征分布,线条中的某些点可能是无效数据点

如果绘制了许多 ICE 曲线,绘图可能会变得过于拥挤,你将看不到任何东西。解决方案:要么为线条添加一些透明度,要么只绘制线条的样本。

在 ICE 图中,可能不容易看到平均值。这有一个简单的解决方案:将单个条件期望曲线与部分依赖图结合起来。

9.1.4 软件和替代品

ICE 图在 R 包iml(用于这些示例)、ICEbox2pdp. 另一个与 ICE 非常相似的 R 包是 condvis 。 在 Python 中,部分依赖图从 0.24.0 版本开始内置到 scikit-learn 中。

9.2 本地代理(LIME)

局部代理模型是可解释的模型,用于解释黑盒机器学习模型的个别预测。本地可解释模型不可知论解释 (LIME) 50是一篇论文,其中作者提出了本地代理模型的具体实现。代理模型被训练以近似底层黑盒模型的预测。LIME 没有训练全局代理模型,而是专注于训练局部代理模型来解释个体预测。

这个想法非常直观。首先,忘记训练数据,想象你只有一个黑盒模型,你可以在其中输入数据点并获得模型的预测。你可以随心所欲地探测盒子。你的目标是了解机器学习模型为何做出某种预测。LIME 测试当你将数据的变化提供给机器学习模型时预测会发生什么。LIME 生成一个由扰动样本和黑盒模型的相应预测组成的新数据集。然后在这个新数据集上,LIME 训练一个可解释的模型,该模型由采样实例与感兴趣实例的接近程度加权。可解释模型可以是可解释模型章节中的任何内容,例如Lasso决策树。学习模型应该是机器学习模型局部预测的良好近似,但不一定是良好的全局近似。这种精度也称为局部保真度。

在数学上,具有可解释性约束的局部代理模型可以表示如下:

explanation ( x ) = arg ⁡ min ⁡ g ∈ G L ( f , g , π x ) + Ω ( g ) \text{explanation}(x)=\arg\min_{g\in{}G}L(f,g,\pi_x)+\Omega(g) explanation(x)=arggGminL(f,g,πx)+Ω(g)

例如 x 的解释模型是最小化损失 L(例如均方误差)的模型 g(例如线性回归模型),它衡量解释与原始模型 f(例如 xgboost 模型)的预测的接近程度,而模型复杂度 Ω ( g ) \Omega(g) Ω(g) 保持低(例如,喜欢更少的功能)。G 是一系列可能的解释,例如所有可能的线性回归模型。接近度测量 π x \pi_x πx 定义了我们为解释考虑的实例 x x x 周围的邻域有多大。在实践中,LIME 只优化了损失部分。用户必须确定复杂性,例如通过选择线性回归模型可以使用的最大特征数。

训练本地代理模型的秘诀:

  • 选择你想要解释其黑盒预测的感兴趣的实例。
  • 扰动你的数据集并获得这些新点的黑盒预测。
  • 根据新样本与感兴趣实例的接近程度对新样本进行加权。
  • 在具有变化的数据集上训练一个加权的、可解释的模型。
  • 通过解释局部模型来解释预测。

例如,在 RPython 的当前实现中,可以选择线性回归作为可解释的代理模型。事先,你必须选择 K,即你希望在可解释模型中具有的特征数。K 越低,越容易解释模型。更高的 K 可能会产生具有更高保真度的模型。有几种方法可以训练具有恰好 K K K 个特征的模型。Lasso是一个不错的选择。具有高正则化参数 λ \lambda λ的 Lasso 模型 产生一个没有任何特征的模型。通过重新训练缓慢下降 λ \lambda λ 的 Lasso 模型,一个接一个地,特征得到的权重估计值不同于零。如果模型中有 K 个特征,则你已达到所需的特征数量。其他策略是向前或向后选择特征。这意味着你要么从完整模型(等同包含所有特征)开始,要么从仅包含截距的模型开始,然后测试添加或删除哪个特征会带来最大的改进,直到达到具有 K 个特征的模型。

你如何获得数据的变化?这取决于数据的类型,可以是文本、图像或表​​格数据。对于文本和图像,解决方案是打开或关闭单个单词或超像素。在表格数据的情况下,LIME 通过单独扰动每个特征来创建新样本,从特征中提取均值和标准差的正态分布进行绘制。

9.2.1 用于表格数据的 LIME

表格数据是表格中的数据,每一行代表一个实例,每一列代表一个特征。LIME 样本不是围绕感兴趣的实例进行的,而是取自训练数据的质心,这是有问题的。但它增加了某些样本点预测的结果与感兴趣的数据点不同的概率,并且 LIME 至少可以学习一些解释。

最好直观地解释一下采样和局部模型训练的工作原理:

img
图 9.5:表格数据的 LIME 算法。A) 给定特征 x1 和 x2 的随机森林预测。预测类别:1(暗)或 0(亮)。B) 感兴趣的实例(大点)和从正态分布中采样的数据(小点)。C) 为感兴趣的实例附近的点分配更高的权重。D)网格的符号显示了从加权样本中本地学习模型的分类。白线标记了决策边界(P(class=1) = 0.5)。

一如既往,魔鬼在细节中。围绕一个点定义一个有意义的邻域是很困难的。LIME 目前使用指数平滑核来定义邻域。平滑内核是一个函数,它接受两个数据实例并返回一个邻近度度量。内核宽度决定了邻域的大小:较小的内核宽度意味着实例必须非常接近才能影响局部模型,较大的内核宽度意味着距离较远的实例也会影响模型。如果你查看LIME 的 Python 实现(文件lime/lime_tabular.py)你会看到它使用指数平滑内核(在归一化数据上),内核宽度是训练数据列数平方根的 0.75 倍。它看起来像一行无辜​​的代码,但它就像一头大象坐在客厅里,旁边是你从祖父母那里得到的好瓷器。最大的问题是我们没有找到最佳内核或宽度的好方法。0.75 甚至从何而来?在某些场景下,你可以通过更改内核宽度轻松扭转你的解释,如下图所示:

img
图 9.6:实例 x = 1.6 的预测解释。取决于单个特征的黑盒模型的预测显示为粗线,数据的分布用地毯显​​示。计算了三个具有不同内核宽度的局部代理模型。生成的线性回归模型取决于内核宽度:对于 x = 1.6,该特征是否具有负、正或无影响?

该示例仅显示了一项功能。它在高维特征空间中变得更糟。距离测量是否应该平等地对待所有特征也很不清楚。特征 x 1 x1 x1 的距离单位是否与特征 x 2 x2 x2 的距离单位相同?距离度量是相当随意的,不同维度(又名特征)的距离可能根本无法比较。

9.2.1.1 示例

让我们看一个具体的例子。我们回到自行车租赁数据,将预测问题转化为一个分类:考虑到自行车租赁随着时间的推移变得越来越流行的趋势后,我们想知道某一天的自行车租赁数量是否会高于或低于趋势线。你也可以将“高于”解释为高于平均自行车数量,但会根据趋势进行调整。

首先,我们在分类任务上用 r ntree 训练一个有 100 棵树的随机森林。根据天气和日历信息,哪一天租用自行车的数量会高于无趋势平均值?

解释是用r n_features_lime个特征创建的。针对具有不同预测类别的两个实例训练的稀疏局部线性模型的结果:

img
图 9.7:自行车租赁数据集的两个实例的 LIME 解释。气温升高和天气状况良好对预测有积极影响。x 轴显示特征效果:权重乘以实际特征值。

从图中可以清楚地看出,解释分类特征比解释数字特征更容易。一种解决方案是将数值特征分类到 bin 中。

9.2.2 用于文本的 LIME

用于文本的 LIME 与用于表格数据的 LIME 不同。数据的变化产生不同:从原始文本开始,通过从原始文本中随机删除单词来创建新文本。数据集用每个单词的二进制特征表示。

如果包含相应的单词,则特征为 1,如果已删除,则为 0。

9.2.2.1 示例

在此示例中,我们将YouTube 评论归类为垃圾评论或正常评论。

黑盒模型是在文档词矩阵上训练的深度决策树。每个评论是一个文档(= 一行),每一列是给定单词的出现次数。短决策树很容易理解,但在这种情况下,决策树非常深。也可以用循环神经网络或支持向量机来代替这棵树,用词嵌入(抽象向量)训练。让我们看一下这个数据集的两条评论和对应的类(1代表垃圾评论,0代表普通评论):

内容班级
267PSY是个好人0
173想找圣诞歌曲请访问我的频道1

下一步是创建本地模型中使用的数据集的一些变体。例如,其中一条评论的一些变体:

ForChristmasSongvisitmychannel!😉probweight
10110010.170.57
01111010.170.71
10011110.990.71
10111110.990.86
01110010.170.57

每列对应句子中的一个单词。每行都是一个变体,1 表示该词是该变体的一部分,0 表示该词已被删除。其中一种变体的对应句子是“ Christmas Song visit my 😉”。“prob” 列显示每个句子变体的垃圾邮件预测概率。“权重”列显示变体与原始句子的接近度,计算为 1 减去被移除的单词的比例,例如,如果移除 7 个单词中的 1 个,则接近度为 1 - 1/7 = 0.86。

以下是 LIME 算法找到的两个句子(一个垃圾邮件,一个无垃圾邮件)及其估计的局部权重:

caselabel_probfeaturefeature_weight
10.1701170good0.000000
10.1701170a0.000000
10.1701170is0.000000
20.9939024channel!6.180747
20.9939024For0.000000
20.9939024😉0.000000

“channel” 一词表示垃圾邮件的可能性很高。对于非垃圾评论,没有估计非零权重,因为无论删除哪个词,预测的类别都保持不变。

9.2.3 图像的 LIME

本节由 Verena Haunschmid 撰写

用于图像的 LIME 与用于表格数据和文本的 LIME 的工作方式不同。直观地说,扰乱单个像素没有多大意义,因为不止一个像素对一类有贡献。随机改变单个像素可能不会对预测产生太大影响。因此,图像的变化是通过将图像分割成“超像素”并关闭或打开超像素来创建的。超像素是具有相似颜色的互连像素,可以通过将每个像素替换为用户定义的颜色(例如灰色)来关闭。用户还可以指定在每个排列中关闭超像素的概率。

9.2.3.1 示例

在此示例中,我们查看由 Inception V3 神经网络进行的分类。使用的图像显示了我烤的一些放在碗里的面包。由于每个图像可以有多个预测标签(按概率排序),我们可以解释顶部标签。预测最高的是“Bagel”,概率为 77%,其次是“Strawberry”,概率为 4%。下图显示了“Bagel”和“Strawberry”的 LIME 解释。解释可以直接显示在图像样本上。绿色表示这部分图像增加了标签的概率,红色表示减少。

img
图 9.8:左:一碗面包的图像。中间和右侧:由 Google 的 Inception V3 神经网络进行的图像分类前 2 类(百吉饼、草莓)的 LIME 解释。

“百吉饼”的预测和解释非常合理,即使预测是错误的——这些显然不是百吉饼,因为中间的洞不见了。

9.2.4 优点

即使你替换了底层的机器学习模型,你仍然可以使用相同的本地、可解释的模型进行解释。假设查看解释的人最了解决策树。因为你使用本地代理模型,所以你使用决策树作为解释,而实际上不必使用决策树来进行预测。例如,你可以使用 SVM。如果事实证明 xgboost 模型效果更好,你可以替换 SVM 并仍然使用决策树来解释预测。

本地代理模型受益于训练和解释可解释模型的文献和经验。

当使用 Lasso 或短树时,得到的解释很短(选择性)并且可能是对比性的。因此,他们做出人性化的解释。这就是为什么我在解释的接受者是外行或时间很少的人的应用程序中更多地看到 LIME。对于完整的归因来说,这还不够,所以我在合规场景中看不到 LIME,在这些场景中,法律可能要求你全面解释预测。同样对于调试机器学习模型,拥有所有原因而不是少数原因很有用。

LIME 是少数适用于表格数据、文本和图像的方法之一。

保真度度量(可解释模型与黑盒预测的近似程度)让我们很好地了解了可解释模型在解释感兴趣的数据实例附近的黑盒预测时的可靠性。

LIME 在 Python lime库 和 R(lime packageiml package)中实现,非常易于使用

使用本地代理模型创建的解释可以使用原始模型训练之外的其他(可解释的)特征。当然,这些可解释的特征必须来自数据实例。

文本分类器可以依赖抽象词嵌入作为特征,但解释可以基于句子中词的存在或不存在。回归模型可以依赖于某些属性的不可解释的转换,但可以使用原始属性创建解释。

例如,回归模型可以针对调查答案的主成分分析 (PCA) 的组成部分进行训练,但 LIME 可以针对原始调查问题进行训练。与其他方法相比,使用 LIME 的可解释特征可能是一个很大的优势,尤其是当模型使用不可解释的特征进行训练时。

9.2.5 缺点

将 LIME 与表格数据一起使用时,邻域的正确定义是一个非常大的未解决问题。在我看来,这是 LIME 的最大问题,也是我建议谨慎使用 LIME 的原因。对于每个应用程序,你必须尝试不同的内核设置,并亲自查看解释是否有意义。不幸的是,这是我能给出的找到好的内核宽度的最佳建议。

在当前的 LIME 实现中可以改进采样。数据点是从高斯分布中采样的,忽略了特征之间的相关性。这可能导致不太可能的数据点,然后可用于学习局部解释模型。

解释模型的复杂度必须提前定义。这只是一个小小的抱怨,因为最终用户总是必须定义保真度和稀疏度之间的折衷。

另一个真正的大问题是解释的不稳定性。在文章3中,作者表明,在模拟环境中,对两个非常接近的点的解释差异很大。另外,根据我的经验,如果你重复采样过程,那么出来的解释可能会有所不同。不稳定意味着很难相信解释,你应该非常挑剔。

LIME 解释可以被数据科学家操纵以隐藏偏见4。操纵的可能性使人们更难以相信 LIME 生成的解释。

结论:以 LIME 作为具体实现的本地代理模型非常有前景。但该方法仍处于开发阶段,需要解决许多问题才能安全应用。

9.3 反事实解释

作者:Susanne Dandl & Christoph Molnar

反事实解释以如下形式描述了一种因果情况:“如果 X 没有发生,Y 就不会发生”。例如:“如果我没有喝一口这种热咖啡,我就不会烫到我的舌头”。事件 Y 是我烧了我的舌头;因为 X 是我喝了热咖啡。反事实思考需要想象一个与观察到的事实相矛盾的假设现实(例如,一个我没有喝过热咖啡的世界),因此得名“反事实”。与其他动物相比,反事实思考的能力使我们人类如此聪明。

在可解释的机器学习中,反事实解释可用于解释单个实例的预测。“事件”是实例的预测结果,“原因”是该实例的特定特征值,它们输入到模型中并“导致”某个预测。显示为图表,输入和预测之间的关系非常简单:特征值导致预测。

img
图 9.9:当模型仅被视为黑匣子时,机器学习模型的输入与预测之间的因果关系。输入导致预测(不一定反映数据的真实因果关系)。

即使实际上输入与要预测的结果之间的关系可能不是因果关系,我们也可以将模型的输入视为预测的原因。

鉴于这个简单的图表,很容易看出我们如何模拟反事实来预测机器学习模型:我们只需在做出预测之前更改实例的特征值,然后分析预测如何变化。我们对预测以相关方式发生变化的场景感兴趣,例如预测类别的翻转(例如,信用申请被接受或拒绝),或者预测达到某个阈值(例如,癌症的概率达到 10 % 10\% 10% )。预测的反事实解释描述了将预测更改为预定义输出的特征值的最小变化

有模型无关和模型特定的反事实解释方法,但在本章中,我们关注仅适用于模型输入和输出(而不是特定模型的内部结构)的模型无关方法。这些方法在与模型无关的章节中也很熟悉,因为解释可以表示为特征值差异的总结(“改变特征 A A A B B B 以改变预测”)。但是反事实解释本身就是一个新实例,所以它存在于本章中(“从实例 X X X 开始,更改 A A A B B B 以获得反事实实例”)。与原型不同,反事实不一定是来自训练数据的实际实例,而是可以是特征值的新组合。

在讨论如何创建反事实之前,我想讨论一些反事实的用例以及一个好的反事实解释是什么样的。

在第一个示例中,彼得申请贷款并被(机器学习驱动的)银行软件拒绝。他想知道为什么他的申请被拒绝,以及如何提高获得贷款的机会。“为什么”的问题可以表述为反事实:将预测从拒绝变为批准的特征(收入、信用卡数量、年龄……)的最小变化是什么?一个可能的答案是:如果彼得每年多赚 10,000 美元,他就会得到贷款。或者,如果彼得拥有较少的信用卡并且五年前没有拖欠贷款,他就会得到贷款。彼得永远不会知道拒绝的原因,因为银行对透明度不感兴趣,但那是另一回事了。

在我们的第二个示例中,我们想要解释一个模型,该模型通过反事实解释来预测连续结果。Anna 想出租她的公寓,但她不确定要收取多少费用,因此她决定训练一个机器学习模型来预测租金。当然,由于 Anna 是一名数据科学家,这就是她解决问题的方式。在输入有关大小、位置、是否允许携带宠物等所有详细信息后,模特告诉她可以收取 900 欧元的费用。她预计 1000 欧元或更多,但她信任她的模型并决定使用公寓的特征值,看看如何提高公寓的价值。她发现如果公寓面积为 15 m 2 15 m^2 15m2 ,则可以以超过 1000 欧元的价格出租较大。有趣但不可操作的知识,因为她无法扩大她的公寓。最后,通过仅调整她控制下的特征值(内置厨房是/否、允许携带宠物是/否、地板类型等),她发现如果她允许携带宠物并安装隔热效果更好的窗户,她可以收取 1000 欧元。Anna 直觉地使用反事实来改变结果。

反事实是人性化的解释,因为它们与当前实例形成对比,并且因为它们是选择性的,这意味着它们通常专注于少量的特征变化。但反事实受到“罗生门效应”的影响。罗生门是一部日本电影,其中一个武士被谋杀是由不同的人讲述的。每个故事都同样很好地解释了结果,但故事相互矛盾。反事实也可能发生同样的情况,因为通常有多种不同的反事实解释。每个反事实都讲述了如何达到某个结果的不同“故事”。一个反事实可能会说改变特征 A,另一个反事实可能会说保持 A 不变但改变特征 B,这是矛盾的。

说到标准,我们如何定义一个好的反事实解释?

首先,反事实解释的用户定义了实例预测中的相关变化(=替代现实)。一个明显的第一个要求是反事实实例尽可能接近地产生预定义的预测。并不总是可以找到与预定义预测相反的事实。例如,在具有两个类(稀有类和频繁类)的分类设置中,模型可能总是将实例分类为频繁类。更改特征值以使预测标签从频繁类翻转到稀有类可能是不可能的。因此,我们希望放宽反事实的预测必须与预定义结果完全匹配的要求。在分类示例中,我们可以寻找一个反事实,其中稀有类的预测概率增加到 10 % 10\% 10%,而不是当前的 2 % 2\% 2%。那么问题是,使预测概率从 2 % 2\% 2% 变为 10 % 10\% 10%(或接近 10%)的特征的最小变化是多少?

另一个质量标准是反事实应该与关于特征值的实例尽可能相似。例如,如果我们同时具有离散特征和连续特征,则可以使用曼哈顿距离或高尔距离来测量两个实例之间的距离。反事实不仅应该接近原始实例,而且应该尽可能少地改变特征。为了衡量这个指标中反事实解释的好坏,我们可以简单地计算改变特征的数量,或者用花哨的数学术语来衡量反事实和实际实例之间的 L 0 L_0 L0 规范。

第三,通常需要生成多种不同的反事实解释,以便决策主体可以使用多种可行的方式来生成不同的结果。例如,继续我们的贷款示例,一种反事实解释可能建议仅将收入翻倍以获得贷款,而另一种反事实解释可能建议转移到附近的城市并增加少量收入以获得贷款。可以注意到,虽然第一个反事实可能对某些人来说是可能的,但后者可能对其他人来说更可行。因此,除了为决策主体提供获得预期结果的不同方式之外,多样性还使“多样化”的个体能够改变对他们来说方便的特征。

最后一个要求是反事实实例应该具有可能的特征值。如果公寓的面积为负数或房间数设置为 200,则为租金示例生成反事实解释是没有意义的。根据数据的联合分布,如果反事实可能是反事实,那就更好了,例如,10 个房间和 20 m 2 20m^2 20m2 的公寓不应被视为反事实解释。

理想情况下,如果增加平方米数量,也应该提出增加房间数量。

9.3.1 生成反事实解释

产生反事实解释的一种简单而幼稚的方法是通过反复试验进行搜索。这种方法涉及随机更改感兴趣实例的特征值,并在预测到所需输出时停止。就像安娜试图找到她可以收取更多租金的公寓版本的例子一样。但是有比试错更好的方法。首先,我们根据上述标准定义损失函数。这种损失将感兴趣的实例、反事实和期望的(反事实)结果作为输入。然后,我们可以找到使用优化算法最小化这种损失的反事实解释。许多方法都以这种方式进行,但在损失函数和优化方法的定义上有所不同。

在下文中,我们关注其中两个:首先,Wachter 等人的一个。(2017)5,他引入了反事实解释作为一种解释方法,其次是 Dandl 等人的方法。(2020)6考虑到上述所有四个标准。

9.3.1.1 Wachter 等人的方法

瓦赫特等人建议尽量减少以下损失:

L ( x , x ′ , y ′ , λ ) = λ ⋅ ( f ^ ( x ′ ) − y ′ ) 2 + d ( x , x ′ ) L(x,x^\prime,y^\prime,\lambda)=\lambda\cdot(\hat{f}(x^\prime)-y^\prime)^2+d(x,x^\prime) L(x,x,y,λ)=λ(f^(x)y)2+d(x,x)

第一项是模型预测反事实 x ′ x' x 和期望结果 y ′ y' y 之间的二次距离,用户必须提前定义。第二项是要解释的实例 x x x 与反事实 x ′ x' x 之间的距离 d d d。损失衡量反事实的预测结果与预定义结果的距离以及反事实与感兴趣的实例的距离。距离函数 d d d 定义为使用每个特征的逆中值绝对偏差 (MAD) 加权的曼哈顿距离。

d ( x , x ′ ) = ∑ j = 1 p ∣ x j − x j ′ ∣ M A D j d(x,x^\prime)=\sum_{j=1}^p\frac{|x_j-x^\prime_j|}{MAD_j} d(x,x)=j=1pMADjxjxj

总距离是所有 p p p 个特征距离的总和,即实例 x x x 和反事实 x ′ x' x 之间的特征值的绝对差值。特征距离通过特征 j j j 在数据集上的绝对偏差中值的倒数来缩放,定义为:

M A D j = median i ∈ { 1 , … , n } ( ∣ x i , j − median l ∈ { 1 , … , n } ( x l , j ) ∣ ) MAD_j=\text{median}_{i\in{}\{1,\ldots,n\}}(|x_{i,j}-\text{median}_{l\in{}\{1,\ldots,n\}}(x_{l,j})|) MADj=mediani{1,,n}(xi,jmedianl{1,,n}(xl,j))

向量的中值是向量值的一半较大而另一半较小的值。MAD 等价于特征的方差,但我们不是使用均值作为中心并在平方距离上求和,而是使用中值作为中心并在绝对距离上求和。与欧几里得距离相比,所提出的距离函数具有 对异常值更稳健的优势。使用 MAD 进行缩放对于使所有功能都达到相同的比例是必要的——无论你以平方米还是平方英尺来衡量公寓的大小都无关紧要。

参数 λ \lambda λ 平衡预测中的距离(第一项)与特征值中的距离(第二项)。对于给定的损失已解决 λ \lambda λ 并返回一个反事实的 x ′ x' x。更高的价值λ意味着我们更喜欢预测接近期望结果 y ′ y' y 的反事实,较低的值意味着我们更喜欢在特征值中与 x x x 非常相似的反事实 x ′ x' x。如果 λ \lambda λ 非常大,将选择预测最接近 y ′ y' y 的实例,无论它离 x x x 多远。最终,用户必须决定如何平衡反事实的预测与期望结果相匹配的要求与反事实与 x x x 相似的要求。该方法的作者建议不要为 λ \lambda λ 选一个值,而是在反事实实例 y ′ y' y 的预测允许范围内,取一个公差 ϵ \epsilon ϵ 。这个约束可以写成:

∣ f ^ ( x ′ ) − y ′ ∣ ≤ ϵ |\hat{f}(x^\prime)-y^\prime|\leq\epsilon f^(x)yϵ

为了最小化这个损失函数,可以使用任何合适的优化算法,例如 Nelder-Mead。如果你可以访问机器学习模型的梯度,则可以使用 ADAM 等基于梯度的方法。要解释实例 x x x,所需的输出 y ′ y' y 和容差参数 ϵ \epsilon ϵ 必须提前设置。 x ′ x' x 的损失函数最小化,并且在增加 λ \lambda λ 的同时返回(局部)最优反事实 x ′ x' x 直到找到足够接近的解(= 在容差参数内):

arg ⁡ min ⁡ x ′ max ⁡ λ L ( x , x ′ , y ′ , λ ) . \arg\min_{x^\prime}\max_{\lambda}L(x,x^\prime,y^\prime,\lambda). argxminλmaxL(x,x,y,λ).

总的来说,产生反事实的方法很简单:

  1. 选择一个要解释的实例 x x x,期望的结果 y ′ y' y,​​一个容差 ε ε ε和一个(低)初始值 λ λ λ

  2. 抽样一个随机实例作为初始反事实。

  3. 以最初采样的反事实为起点优化损失。

  4. 尽管 ∣ f ^ ( x ′ ) − y ′ ∣ > ϵ |\hat{f}(x^\prime)-y^\prime|>\epsilon f^(x)y>ϵ

    • 增加 λ \lambda λ
    • 以当前反事实为起点优化损失。
    • 返回使损失最小化的反事实。
  5. 重复步骤 2-4 并返回反事实列表或最小化损失的列表。

所提出的方法有一些缺点。它只考虑第一个和第二个标准,而不是最后两个(“产生只有少数特征变化和可能特征值的反事实”)。d 不喜欢稀疏解决方案,因为将 10 个特征增加 1 将与 x 增加一个特征 10 的距离相同。不切实际的特征组合不会受到惩罚。

该方法不能很好地处理具有许多不同级别的分类特征。该方法的作者建议为分类特征的每个特征值组合分别运行该方法,但是如果你有多个具有许多值的分类特征,这将导致组合爆炸。例如,具有十个唯一级别的六个分类特征将意味着一百万次运行。

现在让我们看一下克服这些问题的另一种方法。

9.3.1.2 D a n d l Dandl Dandl 等人的方法

Dandl 等人建议同时最小化四目标损失:

L ( x , x ′ , y ′ , X o b s ) = ( o 1 ( f ^ ( x ′ ) , y ′ ) , o 2 ( x , x ′ ) , o 3 ( x , x ′ ) , o 4 ( x ′ , X o b s ) ) L(x,x',y',X^{obs})=\big(o_1(\hat{f}(x'),y'),o_2(x, x'),o_3(x,x'),o_4(x',X^{obs})\big) L(x,x,y,Xobs)=(o1(f^(x),y),o2(x,x),o3(x,x),o4(x,Xobs))

四个目标中的每一个 o 1 o_1 o1 o 4 o_4 o4 符合上述四个标准之一。第一个目标 o 1 o_1 o1 反映了我们的反事实 x ′ x' x 的预测应该尽可能接近我们期望的预测 y ′ y' y。因此,我们希望最小化之间的距离 f ^ ( x ′ ) \hat{f}(x') f^(x) y ′ y' y,这里由曼哈顿度量( L 1 L_1 L1规范):

o 1 ( f ^ ( x ′ ) , y ′ ) = { 0 if  f ^ ( x ′ ) ∈ y ′ inf ⁡ y ′ ∈ y ′ ∣ f ^ ( x ′ ) − y ′ ∣ else o_1(\hat{f}(x'),y')=\begin{cases}0&\text{if $\hat{f}(x')\in{}y'$}\\\inf\limits_{y'\in y'}|\hat{f}(x')-y'|&\text{else}\end{cases} o1(f^(x),y)={0yyinff^(x)yif f^(x)yelse

第二个目标 o 2 o_2 o2 反映我们的反事实应该与我们的实例 x x x 尽可能相似. 它将 x ′ x' x x x x 之间的距离量化为 Gower 距离:

o 2 ( x , x ′ ) = 1 p ∑ j = 1 p δ G ( x j , x j ′ ) o_2(x,x')=\frac{1}{p}\sum_{j=1}^{p}\delta_G(x_j, x'_j) o2(x,x)=p1j=1pδG(xj,xj)

其中 p p p 是特征的数量。 δ G \delta_G δG 的值取决于特征类型 x j x_j xj

δ G ( x j , x j ′ ) = { 1 R ^ j ∣ x j − x j ′ ∣ if  x j  numerical I x j ≠ x j ′ if  x j  categorical \delta_G(x_j,x'_j)=\begin{cases}\frac{1}{\widehat{R}_j}|x_j-x'_j|&\text{if $x_j$ numerical}\\\mathbb{I}_{x_j\neq{}x'_j}&\text{if $x_j$ categorical}\end{cases} δG(xj,xj)={R j1xjxjIxj=xjif xj numericalif xj categorical

将数字特征 j j j 的距离除以 R ^ j \widehat{R}_j R j, 观测值的范围, 缩放 δ G \delta_G δG 的值为 0 到 1 之间。

Gower 距离可以处理数字和分类特征,但不计算改变了多少特征。因此,我们计算第三个目标中的特征数量 o 3 o_3 o3 使用 L 0 L_0 L0 规范:

o 3 ( x , x ′ ) = ∣ ∣ x − x ′ ∣ ∣ 0 = ∑ j = 1 p I x j ′ ≠ x j . o_3(x,x')=||x-x'||_0=\sum_{j=1}^{p}\mathbb{I}_{x'_j\neq x_j}. o3(x,x)=∣∣xx0=j=1pIxj=xj.

通过最小化 o 3 o_3 o3 我们的目标是我们的第三个标准——稀疏的特征变化。

第四个目标 o 4 o_4 o4 反映了我们的反事实应该具有可能的特征值/组合。

我们可以推断出一个数据点使用训练数据或另一个数据集的“可能性”有多大。我们将此数据集表示为 X o b s X^{obs} Xobs 。 作为可能性的近似值, o 4 o_4 o4 测量 x ′ x' x 和最近的观测数据点之间的平均高尔距离 x [ 1 ] ∈ X o b s x^{[1]}\in{}X^{obs} x[1]Xobs

o 4 ( x ′ , X o b s ) = 1 p ∑ j = 1 p δ G ( x j ′ , x j [ 1 ] ) o_4(x',\textbf{X}^{obs})=\frac{1}{p}\sum_{j=1}^{p}\delta_G(x'_j,x^{[1]}_j) o4(x,Xobs)=p1j=1pδG(xj,xj[1])

与 Wachter 等人相比, L ( x , x ′ , y ′ , X o b s ) L(x,x',y',X^{obs}) L(x,x,y,Xobs) 没有像 λ \lambda λ 那个样平衡/加权,如 λ \lambda λ 我们不想破坏四个目标 o 1 o_1 o1 o 2 o_2 o2 o 3 o_3 o3 o 4 o_4 o4

通过将它们相加并加权来形成一个单一的目标,但我们希望同时优化所有四个术语。

我们怎么能做到这一点?

我们使用非支配排序遗传算法7或简称 NSGA-II。NSGA-II 是一种受自然启发的算法,它应用了达尔文的“适者生存”定律。

我们用目标值向量来表示反事实的适应度 ( o 1 , o 2 , o 3 , o 4 ) (o_1,o_2,o_3,o_4) (o1,o2,o3,o4)

反事实的目标值越低,它就越“适合”。

该算法由重复的四个步骤组成,直到满足停止标准,例如,最大迭代/代数。下图可视化了一代的四个步骤。

img
图 9.10:一代 NSGA-II 算法的可视化。

9.3.2 示例

以下示例基于 Dandl 等人的信用数据集示例(2020 年)。德国信用风险数据集可以在机器学习挑战平台 kaggle.com 上找到。

作者训练了一个支持向量机(具有径向基核)来预测客户具有良好信用风险的概率。相应的数据集有 522 个完整的观察结果和 9 个包含信用和客户信息的特征。

目标是为具有以下特征值的客户找到反事实解释:

agesexjobhousingsavingsamountdurationpurpose
58funskilledfreelittle614348car

SVM 预测该女性具有良好的信用风险,概率为 24.2 % 24.2\% 24.2% 。反事实应该回答如何更改输入特征以获得大于 50 % 50\% 50% 的预测概率?

下表显示了十个最佳反事实:

agesexjobamountduration o 2 o_2 o2 o 3 o_3 o3 o 4 o_4 o4 f ^ ( x ′ ) \hat{f}(x') f^(x)
skilled-200.10820.0360.501
skilled-240.11420.0290.525
skilled-220.11120.0330.513
-6skilled-240.12630.0180.505
-3skilled-240.12030.0240.515
-1skilled-240.11630.0270.522
-3m-240.19530.0120.501
-6m-250.20230.0110.501
-30mskilled-240.28540.0050.590
-4m-1254-240.20440.0020.506

前五列包含建议的特征更改(仅显示更改的特征),接下来的三列显示目标值( o 1 o_1 o1 在所有情况下都等于 0),最后一列显示预测概率。

所有反事实的预测概率都大于 50 % 50\% 50%,并且不会相互支配。非支配意味着没有一个反事实在所有目标中的值都小于其他反事实。我们可以将反事实视为一组权衡解决方案。

他们都建议将持续时间从 48 个月减少到至少 23 个月,其中一些建议女性应该变得熟练而不是不熟练。一些反事实甚至建议将性别从女性改为男性,这表明该模型存在性别偏见。这种变化总是伴随着年龄在 1 到 30 岁之间的减少。我们还可以看到,尽管一些反事实建议对四个特征进行更改,但这些反事实是最接近训练数据的那些。

9.3.3 优势

反事实解释的解释非常清楚。如果实例的特征值根据反事实发生变化,则预测变为预定义的预测。没有额外的假设,也没有背景魔法。这也意味着它不像 LIME 之类的方法那样危险,在这种方法中,我们还不清楚我们可以在多大程度上推断出本地模型来进行解释。

反事实方法创建了一个新实例,但我们也可以通过报告哪些特征值发生了变化来总结反事实。这里提供了针对报告结果的两种选择。你可以报告反事实实例或突出显示感兴趣的实例和反事实实例之间更改了哪些特征。

反事实方法不需要访问数据或模型。它只需要访问模型的预测功能,例如,它也可以通过 Web API 工作。这对于由第三方审计或在不披露模型或数据的情况下为用户提供解释的公司很有吸引力。由于商业秘密或数据保护原因,公司对保护模型和数据感兴趣。反事实解释在解释模型预测和保护模型所有者的利益之间提供了平衡。

该方法也适用于不使用机器学习的系统。我们可以为任何接收输入和返回输出的系统创建反事实。预测公寓租金的系统也可以由手写规则组成,反事实解释仍然有效。

反事实解释方法相对容易实现,因为它本质上是一个损失函数(具有单个或多个目标),可以使用标准优化器库进行优化。必须考虑一些额外的细节,例如将特征值限制在有意义的范围内(例如,只有正数的公寓大小)。

9.3.4 缺点

对于每个实例通常会发现多个反事实解释(罗生门效应)。这很不方便——大多数人更喜欢简单的解释,而不是现实世界的复杂性。这也是一个实际的挑战。假设我们为一个实例生成了 23 个反事实解释。我们是否都报告了他们?只有最好?如果它们都相对“好”,但又大不相同怎么办?必须为每个项目重新回答这些问题。拥有多个反事实解释也可能是有利的,因为人类可以选择与他们先前的知识相对应的解释。

9.3.5 软件和替代品

Dandl 等人的多目标反事实解释方法在 GitHub repository 中有实现。

在 Python 包 Alibi 中,作者实现了一种简单的反事实方法以及一种扩展方法,该方法使用类原型来提高算法输出的可解释性和收敛性s8

Karimi等人(2020)9还在 GitHub repository 中提供了他们的算法 MACE 的 Python 实现。他们将适当反事实的必要标准转化为逻辑公式,并使用可满足性求解器来找到满足它们的反事实。

Mothilal 等人(2020)10 开发了 DiCE(Diverse Counterfactual Explanation),以基于行列式点过程生成一组多样化的反事实解释。DiCE 实现了与模型无关的方法和基于梯度的方法。

另一种搜索反事实的方法是 Laugel 等人的“Growing Spheres”算法。(2017)11。他们在论文中没有使用反事实这个词,但方法非常相似。他们还定义了一个损失函数,该函数支持反事实,特征值的变化尽可能少。他们建议先在兴趣点周围绘制一个球体,在该球体内采样点,然后检查其中一个采样点是否产生所需的预测,而不是直接优化函数。然后他们相应地收缩或扩展球体,直到找到(稀疏的)反事实并最终返回。

Ribeiro 等人的锚点(2018)12 与反事实相反,请参阅有关 Scoped Rules (Anchors) 的章节。

9.4 范围规则(锚)

作者:Tobias Goerke & Magdalena Lang

锚定方法通过找到充分“锚定”预测的决策规则来解释任何黑盒分类模型的单个预测。如果其他特征值的变化不影响预测,则规则锚定预测。Anchors 利用强化学习技术与图搜索算法相结合,将模型调用的数量(以及所需的运行时间)减少到最低限度,同时仍然能够从局部最优中恢复。Ribeiro、Singh 和 Guestrin 在 201813 年提出了该算法——与引入LIME 算法的研究人员相同。

与其前身一样,anchors 方法部署了一种基于扰动的策略来为黑盒机器学习模型的预测生成局部解释。然而,代替 LIME 使用的代理模型,结果解释被表示为易于理解的IF-THEN规则,称为锚点。这些规则是可重用的,因为它们是有范围的:锚点包括覆盖的概念,准确地说明它们适用于哪些其他可能不可见的实例。寻找锚点涉及探索或多臂老虎机问题,它起源于强化学习学科。为此,为正在解释的每个实例创建和评估邻居或扰动。这样做允许该方法忽略黑匣子的结构及其内部参数,以便这些参数可以保持不被观察和不改变。因此,该算法与模型无关,这意味着它可以应用于任何类型的模型。

在他们的论文中,作者比较了他们的两种算法,并可视化了这些算法在咨询实例的邻域以得出结果的差异。为此,下图描绘了 LIME 和锚点,它们使用两个示例性实例在本地解释了一个复杂的二元分类器(预测-或+ )。LIME 的结果并不表明它们有多忠实,因为 LIME 仅学习了一个线性决策边界,该边界在给定扰动空间D
. 给定相同的扰动空间,anchors 方法构建了解释,其覆盖范围适应模型的行为,并且该方法清楚地表达了它们的边界。因此,它们在设计上是忠实的,并准确说明它们对哪些情况有效。此属性使锚点特别直观且易于理解。

img
图 9.11:LIME 与 Anchors – 玩具可视化。图来自 Ribeiro、Singh 和 Guestrin (2018)。

如前所述,算法的结果或解释以规则的形式出现,称为锚点。下面的简单示例说明了这样的锚点。例如,假设我们有一个双变量黑盒模型,可以预测乘客是否在泰坦尼克号灾难中幸存下来。现在我们想知道为什么该模型预测一个特定的个体会存活下来。锚算法提供了如下所示的结果解释。

FeatureValue
Age20
Sexfemale
Classfirst
Ticket price300$
More attributes
Survivedtrue

而对应的锚点解释是:

IF SEX = female AND Class = first THEN PREDICT Survived = true WITH PRECISION 97% AND COVERAGE 15%

该示例展示了锚点如何为模型的预测及其潜在推理提供基本见解。结果显示模型考虑了哪些属性,在本例中是女性和头等舱。人类对于正确性至关重要,可以使用此规则来验证模型的行为。锚点还告诉我们它适用于 15 % 15\% 15% 的扰动空间实例。在这些情况下,解释的准确率为 97 % 97\% 97%,这意味着显示的谓词几乎完全对预测结果负责。

锚点的正式定义如下:

E D x ( z ∣ A ) [ 1 f ^ ( x ) = f ^ ( z ) ] ≥ τ , A ( x ) = 1 \mathbb{E}_{\mathcal{D}_x(z|A)}[1_{\hat{f}(x)=\hat{f}(z)}]\geq\tau,A(x)=1 EDx(zA)[1f^(x)=f^(z)]τ,A(x)=1

其中:

  • X X X 表示正在解释的实例(例如,表格数据集中的一行)。
  • A A A 是一组谓词,即生成的规则或锚点,使得 A A A定义的所有特征谓词都对应于 x x x 的特征值。
  • f f f 表示要解释的分类模型(例如人工神经网络模型)。可以查询它来预测 x x x 的标签及其扰动。
  • D x ( ⋅ ∣ A ) D_x (\cdot|A) Dx(A) 表示的邻居分布,匹配。X一个
  • 0 ≤ τ ≤ 1 0 \leq \tau \leq 1 0τ1 指定一个精度阈值。只有达到至少 τ \tau τ 的局部保真度的规则才被视为有效结果。

正式的描述可能令人生畏,可以用以下语言表达:

给定要解释的实例 x x x ,要找到规则或锚点 A A A ,使其适用于 x x x ,相同的 x x x 类得到预测至少 τ \tau τ x x x邻居,其中相同的是适用的。使用提供的机器学习模型(用指示函数 1 f ^ ( x ) = f ^ ( z ) 1_{\hat{f}(x) = \hat{f}(z)} 1f^(x)=f^(z) 表示)

9.4.1 寻找锚点

尽管锚点的数学描述看起来清晰明了,但构建特定规则是不可行的。这将需要对所有的 z ∈ D x ( ⋅ ∣ A ) z \in \mathcal{D}_x(\cdot|A) zDx(A) 来评估 1 f ^ ( x ) = f ^ ( z ) 1_{\hat{f}(x) = \hat{f}(z)} 1f^(x)=f^(z) ,这在连续或大型输入空间中是不可能的。因此,作者提出引入参数 0 ≤ δ ≤ 1 0 \leq \delta \leq 1 0δ1 来创建一个概率定义。通过这种方式,样本被抽取出来,直到对它们的精度有统计上的置信度。概率定义如下:

P ( p r e c ( A ) ≥ τ ) ≥ 1 − δ with p r e c ( A ) = E D x ( z ∣ A ) [ 1 f ^ ( x ) = f ^ ( z ) ] P(prec(A)\geq\tau)\geq{}1-\delta\quad\textrm{with}\quad{}prec(A)=\mathbb{E}_{\mathcal{D}_x(z|A)}[1_{\hat{f}(x)=\hat{f}(z)}] P(prec(A)τ)1δwithprec(A)=EDx(zA)[1f^(x)=f^(z)]

前两个定义通过覆盖的概念结合和扩展。它的基本原理是找到适用于模型输入空间的大部分的规则。覆盖率正式定义为锚点应用于其邻居的概率,即其扰动空间:

c o v ( A ) = E D ( z ) [ A ( z ) ] cov(A)=\mathbb{E}_{\mathcal{D}_{(z)}}[A(z)] cov(A)=ED(z)[A(z)]

包括这个元素会导致锚点最终定义覆盖范围的最大化:

max A   s.t.    P ( p r e c ( A ) ≥ τ ) ≥ 1 − δ c o v ( A ) \underset{A\:\textrm{s.t.}\;P(prec(A)\geq\tau)\geq{}1-\delta}{\textrm{max}}cov(A) As.t.P(prec(A)τ)1δmaxcov(A)

因此,程序力求在所有符合条件的规则(所有满足给定概率定义的精度阈值的规则)中具有最高覆盖率的规则。这些规则被认为更重要,因为它们描述了模型的大部分。请注意,具有更多谓词的规则往往比具有较少谓词的规则具有更高的精度。特别是,一个固定每个特征的规则X将评估的邻域减少到相同的实例。因此,模型对所有邻居进行了平等的分类,规则的精度为 1 1 1 。同时,修复许多功能的规则过于具体,仅适用于少数情况。因此,精度和覆盖率之间存在权衡。

锚点方法使用四个主要组件来寻找解释。

候选生成:生成新的解释候选。在第一轮中,每个特征一个候选人 x x x 被创建并修复可能的扰动的相应值。在每隔一轮中,前一轮的最佳候选被一个尚未包含在其中的特征谓词扩展。

最佳候选识别:候选规则将根据哪个规则解释进行比较 x x x 最好的。为此,通过调用模型来创建和评估与当前观察到的规则匹配的扰动。然而,这些调用需要被最小化以限制计算开销。这就是为什么在这个组件的核心,有一个纯探索型多臂强盗(准确地说是 MABKL-LUCB14,)。MAB 用于使用顺序选择有效地探索和利用不同的策略(在类似于老虎机的情况下称为手柄)。在给定的设置中,每个候选规则都被视为可以拉动的手柄。每次拉取时,都会对各个邻居进行评估,从而获得有关候选规则收益的更多信息(锚点情况下的精度)。因此,精度说明了规则描述要解释的实例的程度

候选精度验证:在没有统计置信度的情况下抽取更多样本,以防候选超过 τ \tau τ 临界点。

最佳候选识别:上述所有组件都组装在一个波束搜索中,这是一种图搜索算法,也是广度优先算法的一种变体。它承载着乙
每一轮的最佳候选人进入下一轮(其中 B B B 称为光束宽度)。这些 B B B 最佳规则被用来来创建新规则。波束搜索最多进行 f e a t u r e C o u n t ( x ) featureCount(x) featureCount(x) 轮,因为每个特征最多只能包含在规则中一次。因此,在第 i i i 轮它生成的候选者正好对应 i i i 并将 B B B 作为最佳选择。因此,通过置位 B B B ,算法更有可能避免局部最优。反过来,这需要大量的模型调用,从而增加了计算负荷。

这四个组件如下图所示。

img
图 9.12:锚算法的组成部分及其相互关系(简化)

该方法似乎是一个完美的方法,可以有效地获得关于为什么任何系统按其方式对实例进行分类的统计可靠信息。它系统地对模型的输入进行实验,并通过观察各自的输出得出结论。它依赖于成熟和研究过的机器学习方法 (MAB) 来减少对模型的调用次数。这反过来又大大减少了算法的运行时间。

9.4.2 复杂性和运行时间

了解锚点方法的渐近运行时行为有助于评估它在特定问题上的预期执行情况。让 B B B 表示光束宽度和 p p p 表示所有特征的数量。那么锚点算法符合:

O ( B ⋅ p 2 + p 2 ⋅ O MAB [ B ⋅ p , B ] ) \mathcal{O}(B\cdot{}p^2+p^2\cdot\mathcal{O}_{\textrm{MAB}\lbrack{}B\cdot{}p,B\rbrack}) O(Bp2+p2OMAB[Bp,B])

该边界从与问题无关的超参数中抽象出来,例如统计置信度 δ \delta δ 。忽略超参数有助于降低边界的复杂性(有关更多信息,请参阅原始论文)。由于 MAB 在每一轮候选中从 B ⋅ p B \cdot p Bp 提取了最好的 B B B ,大多数 MAB 及其运行时乘以 p 2 p^2 p2 因子而不是其他参数。

因此很明显:当存在许多特征时,算法的效率会降低。

9.4.3 表格数据示例

表格数据是由表格表示的结构化数据,其中列体现特征和行实例。例如,我们使用自行车租赁数据来展示锚方法在解释选定实例的 ML 预测方面的潜力。为此,我们将回归转化为分类问题,并训练随机森林作为我们的黑盒模型。它是对租用自行车的数量是在趋势线之上还是之下进行分类。

在创建锚解释之前,需要定义一个扰动函数。一个简单的方法是使用直观的默认扰动空间来进行表格解释案例,这些案例可以通过从例如训练数据中采样来构建。当扰动一个实例时,这种默认方法会维护受锚定谓词约束的特征值,同时用从另一个具有指定概率的随机采样实例中获取的值替换非固定特征。这个过程产生了与解释的相似的新实例,但采用了其他随机实例的一些值。因此,它们类似于解释实例的邻居。

img

结果本能地可以解释并显示每个解释实例,哪些特征对模型的预测最重要。由于锚点只有几个谓词,它们还具有高覆盖率,因此适用于其他情况。上面显示的规则是用 τ = 0.9 \tau = 0.9 τ=0.9 。因此,我们要求对锚点的评估扰动忠实地支持标签,准确度至少为 90 % 90\% 90% 。此外,离散化被用来增加数值特征的表现力和适用性。

之前的所有规则都是针对模型根据一些特征自信地做出决定的情况生成的。然而,其他实例并没有被模型明确分类,因为更多的特征很重要。在这种情况下,锚点变得更具体,包含更多特征,并适用于更少的实例。

img

虽然选择默认的扰动空间是一个舒服的选择,但它可能会对算法产生很大的影响,从而导致结果有偏差。例如,如果训练集不平衡(每个类的实例数量不相等),则扰动空间也是如此。这种情况进一​​步影响规则查找和结果的精度。

宫颈癌数据集就是这种情况的一个很好的例子。应用锚点算法会导致以下情况之一:

  • 解释标记为健康的实例会产生空规则,因为所有生成的邻居都评估为健康
  • 标记为癌症的实例的解释过于具体,即包含许多特征谓词,因为扰动空间主要涵盖来自健康实例的值。

img
图 9.15:在不平衡的扰动空间内构建锚点会导致无法表达的结果。

这种结果可能是不受欢迎的,可以通过多种方式进行处理。例如,可以定义自定义扰动空间。这种自定义扰动可以不同地采样,例如从不平衡的数据集或正态分布中采样。然而,这有一个副作用:采样的邻居不具有代表性,并且会改变覆盖范围。或者,我们可以修改 MAB 的置信度 δ \delta δ 和错误参数值 ϵ \epsilon ϵ 。这将导致 MAB 抽取更多样本,最终导致少数群体在绝对值上被更频繁地抽样。

对于此示例,我们使用宫颈癌集的一个子集,其中大多数病例被标记为癌症。然后我们有一个框架来从中创建一个相应的扰动空间。扰动现在更有可能导致不同的预测,并且锚算法可以识别重要特征。但是,需要考虑覆盖范围的定义:它仅在扰动空间内定义。在前面的例子中,我们使用了训练集作为扰动空间的基础。由于我们在这里只使用了一个子集,因此高覆盖率并不一定表示全局高规则重要性。

img
图 9.16:在构建锚之前平衡数据集显示了模型在少数情况下做出决策的推理。

9.4.4 优点

与 LIME 相比,锚点方法具有多种优势。首先,算法的输出更容易理解,因为规则很容易解释(即使对于外行)。

此外,锚点是可子集的,甚至通过包含覆盖的概念来说明重要性的度量。

其次,当模型预测在实例的邻域中是非线性或复杂的时候锚点方法就会起作用。由于该方法部署了强化学习技术而不是拟合代理模型,因此不太可能欠拟合模型。

除此之外,该算法与模型无关,因此适用于任何模型。

此外,它非常高效,因为它可以通过使用支持批量采样的 MAB(例如 BatchSAR)来并行化

9.4.5 缺点

就像大多数基于扰动的解释器一样,该算法受到高度可配置和有影响的设置的影响。不仅需要调整光束宽度或精度阈值等超参数以产生有意义的结果,而且还需要为一个域/用例明确设计扰动函数。想想表格数据是如何受到干扰的,想想如何将相同的概念应用于图像数据(提示:这些不能应用)。幸运的是,在某些领域(例如表格)中可以使用默认方法,便于初始解释设置。

此外,许多场景需要离散化,否则结果过于具体、覆盖率低且无助于理解模型。虽然离散化可以提供帮助,但如果使用不慎,它也可能会模糊决策边界,从而产生完全相反的效果。由于没有最佳的离散化技术,用户在决定如何离散化数据之前需要了解数据,以免获得糟糕的结果。

构建锚点需要多次调用 ML 模型,就像所有基于扰动的解释器一样。虽然该算法部署 MAB 以最大限度地减少调用次数,但其运行时间仍然很大程度上取决于模型的性能,因此变化很大。

最后,覆盖的概念在某些领域是未定义的。例如,对于一幅图像中的超像素如何与其他图像中的超像素进行比较,没有明显或通用的定义。

9.4.6 软件和替代品

目前,有两种可用的实现:anchor, a Python package(也由 Alibi 集成)和一个Java 实现。前者是anchors算法的作者参考,后者是带有R接口的高性能实现,称为anchors,用于本章的示例。

到目前为止,锚点实现仅支持表格数据。然而,理论上可以为任何领域或类型的数据构建锚点。

9.5 Shapley 值

可以通过假设实例的每个特征值是游戏中的“玩家”来解释预测,其中预测是支出。Shapley 值——一种来自联合博弈论的方法——告诉我们如何在特征之间公平分配“支出”。

对 SHAP 和 Shapley 价值观的深入实践课程感兴趣吗?前往 Shapley 课程页面,课程可用后会收到通知。

9.5.1 总体思路

假设以下场景:

你已经训练了一个机器学习模型来预测公寓价格。对于某个公寓,它预测为 300,000 欧元,你需要解释这个预测。公寓面积为 50 m 2 50m^2 50m2,位于二楼,附近有公园,禁止养猫:

img
图 9.17:50 的预测价格米2二楼公寓附近有公园和禁猫令,售价 300,000 欧元。我们的目标是解释这些特征值中的每一个是如何对预测做出贡献的。

所有公寓的平均预测为 310,000 欧元。与平均预测相比,每个特征值对预测的贡献有多大?

对于线性回归模型,答案很简单。每个特征的效果是特征的权重乘以特征值。这仅因为模型的线性而有效。对于更复杂的模型,我们需要不同的解决方案。例如,LIME 建议使用局部模型来估计效果。另一种解决方案来自合作博弈论:由 Shapley (1953)15创造的 Shapley 值是一种根据玩家对总支出的贡献分配支出的方法。玩家在集合中合作,并从这种合作中获得一定的利润。

玩家?游戏?支付?与机器学习预测和可解释性有什么联系?“游戏”是数据集单个实例的预测任务。“收益”是这个实例的实际预测减去所有实例的平均预测。“玩家”是协作接收增益的实例的特征值(=预测某个值)。

在我们的公寓示例中,特征值park-nearbycat-bannedarea-50floor-2nd 一起实现了 300,000 欧元的预测。我们的目标是解释实际预测(300,000 欧元)和平均预测(310,000 欧元)之间的差异:相差 -10,000 欧元。

答案可能是:park-nearby 捐款 30,000 欧元;area-50 捐款 10,000 欧元;floor-2nd 贡献 0 欧元;cat-banned 捐款 -50,000 欧元。捐款加起来为 -10,000 欧元,即最终预测减去平均预测公寓价格。

我们如何计算一个特征的 Shapley 值?

Shapley 值是特征值在所有可能的集合中的平均边际贡献。

现在都清楚了吗?

在下图中,我们评估了将 cat-banned 特征值添加到 park-nearbyarea-50 集合。

我们模拟只有 park-nearby, cat-bannedarea-50 处于集合中,通过从数据中随机抽取另一套公寓并将其值用于楼层特征。
随机抽取floor-1st的值来替换 floor-2nd 的值,然后我们预测这个组合的公寓价格(310,000 欧元)。
在第二步中,我们通过抽取的公寓中的猫允许/禁止特征的随机值替换 cat-banned 来将它从集合中移除。在示例中它是 cat-allowed,但它可能又是 cat-banned

我们预测联合政府的公寓价格 park-nearbyarea-50(320,000 欧元)。

cat-banned 的贡献为 310,000 欧元 - 320,000 欧元 = -10,000 欧元。这个估计取决于作为猫和地板特征值的“捐赠者”的随机抽取的公寓的值。如果我们重复这个采样步骤并对贡献进行平均,我们将得到更好的估计。

img
图 9.18:当添加到 和 的集合时,一个样本重复用于估计 对预测park-nearby的贡献area-50

我们对所有可能的集合重复这个计算。Shapley 值是对所有可能集合的所有边际贡献的平均值。计算时间随着特征的数量呈指数增长。保持计算时间可控的一种解决方案是仅计算可能集合的少数样本的贡献。

下图显示了确定 的 Shapley 值所需的所有特征值集合cat-banned。第一行显示没有任何特征值的集合。第二,第三和第四行显示了随着集合规模的增加而不同的集合,用“|”分隔。总而言之,以下集合是可能的:

  • No feature values
  • park-nearby
  • area-50
  • floor-2nd
  • park-nearby+area-50
  • park-nearby+floor-2nd
  • area-50+floor-2nd
  • park-nearby+area-50+floor-2nd.

对于这些集合中的每一个,我们计算具有和不具有特征值的预测公寓价格,cat-banned 并取差值以获得边际贡献。Shapley 值是边际贡献的(加权)平均值。我们用公寓数据集中的随机特征值替换不在集合中的特征的特征值,以从机器学习模型中获得预测。

img
图 9.19:计算特征值的确切 Shapley 值所需的所有 8 个联合cat-banned

如果我们估计所有特征值的 Shapley 值,我们会得到预测值在特征值之间的完整分布(减去平均值)。

9.5.2 例子和解释

对特征值 j j j 的 Shapley 值的解释是:第 j j j 个特征贡献的值 ϕ j \phi_j ϕj 将这个特定实例的预测与数据集的平均预测进行比较。

Shapley 值适用于分类(如果我们正在处理概率)和回归。

我们使用 Shapley 值来分析预测宫颈癌的随机森林模型的预测:

img
图 9.20:宫颈癌数据集中女性的 Shapley 值。预测值为 0.57 时,该女性患癌症的概率比平均预测值 0.03 高 0.54。诊断出的 STD 的数量增加的概率最大。贡献的总和产生实际预测和平均预测之间的差异 (0.54)。

对于自行车租赁数据集,我们还训练了一个随机森林来预测一天租用自行车的数量,给定天气和日历信息。为特定日期的随机森林预测创建的解释:

img
图 9.21:第 285 天的 Shapley 值。根据预测的 2409 辆出租自行车,这一天比平均预测的 4518 天低 -2108。天气状况和湿度的负面影响最大。这一天的温度有积极的贡献。Shapley 值的总和产生实际和平均预测的差异 (-2108)。

注意正确解释 Shapley 值:Shapley 值是一个特征值对不同集合中预测的平均贡献。当我们从模型中删除特征时,Shapley 值不是预测的差异。

9.5.3 Shapley 值详解

本节为好奇的读者更深入地介绍了 Shapley 值的定义和计算。如果你对技术细节不感兴趣,请跳过本节并直接进入“优缺点”。

我们感兴趣的是每个特征如何影响数据点的预测。在线性模型中,很容易计算单个效应。以下是一个数据实例的线性模型预测:

f ^ ( x ) = β 0 + β 1 x 1 + … + β p x p \hat{f}(x)=\beta_0+\beta_{1}x_{1}+\ldots+\beta_{p}x_{p} f^(x)=β0+β1x1++βpxp

其中 x x x 是我们要为其计算贡献的实例。每个 x j x_j xj 是一个特征值,其中 j = 1,…,p。 β j \beta_j βj 是特征 j j j 对应的权重。

贡献 ϕ j \phi_j ϕj 预测中的第 j 个特征 f ^ ( x ) \hat{f}(x) f^(x) 是:

ϕ j ( f ^ ) = β j x j − E ( β j X j ) = β j x j − β j E ( X j ) \phi_j(\hat{f})=\beta_{j}x_j-E(\beta_{j}X_{j})=\beta_{j}x_j-\beta_{j}E(X_{j}) ϕj(f^)=βjxjE(βjXj)=βjxjβjE(Xj)

E ( β j X j ) E(\beta_jX_{j}) E(βjXj) 是特征 j j j 的平均效应估计。贡献是特征效应减去平均效应的差值。

太好了!

现在我们知道每个特征对预测的贡献有多大。如果我们将一个实例的所有特征贡献相加,结果如下:
∑ j = 1 p ϕ j ( f ^ ) = ∑ j = 1 p ( β j x j − E ( β j X j ) ) = ( β 0 + ∑ j = 1 p β j x j ) − ( β 0 + ∑ j = 1 p E ( β j X j ) ) = f ^ ( x ) − E ( f ^ ( X ) ) \begin{align*}\sum_{j=1}^{p}\phi_j(\hat{f})=&\sum_{j=1}^p(\beta_{j}x_j-E(\beta_{j}X_{j}))\\=&(\beta_0+\sum_{j=1}^p\beta_{j}x_j)-(\beta_0+\sum_{j=1}^{p}E(\beta_{j}X_{j}))\\=&\hat{f}(x)-E(\hat{f}(X))\end{align*} j=1pϕj(f^)===j=1p(βjxjE(βjXj))(β0+j=1pβjxj)(β0+j=1pE(βjXj))f^(x)E(f^(X))
这是数据点 x x x 的预测值减去平均预测值。特征贡献可以是负的。

我们可以对任何类型的模型做同样的事情吗?将其作为与模型无关的工具会很棒。由于我们通常在其他模型类型中没有相似的权重,因此我们需要不同的解决方案。

帮助来自意想不到的地方:合作博弈论。Shapley 值是计算任何机器学习模型的单个预测的特征贡献的解决方案。

9.5.3.1 Shapley 值

Shapley 值通过特征值值函数 v a l val val 定义 S S S 中的玩家。

特征值的 Shapley 值是其对支出的贡献,对所有可能的特征值组合进行加权和求和:

ϕ j ( v a l ) = ∑ S ⊆ { 1 , … , p } ∖ { j } ∣ S ∣ ! ( p − ∣ S ∣ − 1 ) ! p ! ( v a l ( S ∪ { j } ) − v a l ( S ) ) \phi_j(val)=\sum_{S\subseteq\{1,\ldots,p\}\setminus\{j\}}\frac{|S|!\left(p-|S|-1\right)!}{p!}\left(val\left(S\cup\{j\}\right)-val(S)\right) ϕj(val)=S{1,,p}{j}p!S!(pS1)!(val(S{j})val(S))

其中 S S S 是模型中使用的特征的子集, x x x 是要解释的实例的特征值的向量, p p p 是特征的数量。 v a l x ( S ) val_x(S) valx(S) 是对集合 S S S 中的特征值的预测,这些特征值被不包含在集合 S S S 中的特征边缘化:

v a l x ( S ) = ∫ f ^ ( x 1 , … , x p ) d P x ∉ S − E X ( f ^ ( X ) ) val_{x}(S)=\int\hat{f}(x_{1},\ldots,x_{p})d\mathbb{P}_{x\notin{}S}-E_X(\hat{f}(X)) valx(S)=f^(x1,,xp)dPx/SEX(f^(X))

你实际上对不包含 S S S 的每个特征执行多次集成。一个具体示例:机器学习模型使用 4 个特征 x 1 x1 x1 x 2 x2 x2 x 3 x3 x3 x 4 x4 x4,我们评估由特征值 x 1 x1 x1 x 3 x3 x3 组成的集合 S S S 的预测:

v a l x ( S ) = v a l x ( { 1 , 3 } ) = ∫ R ∫ R f ^ ( x 1 , X 2 , x 3 , X 4 ) d P X 2 X 4 − E X ( f ^ ( X ) ) val_{x}(S)=val_{x}(\{1,3\})=\int_{\mathbb{R}}\int_{\mathbb{R}}\hat{f}(x_{1},X_{2},x_{3},X_{4})d\mathbb{P}_{X_2X_4}-E_X(\hat{f}(X)) valx(S)=valx({1,3})=RRf^(x1,X2,x3,X4)dPX2X4EX(f^(X))

这看起来类似于线性模型中的特征贡献!

不要被“值”这个词的多种用法所迷惑:特征值是特征和实例的数值或分类值;Shapley 值是对预测的特征贡献;价值函数是玩家集合(特征值)的支付函数。

Shapley 值是唯一满足属性EfficiencySymmetryDummyAdditivity的归因方法,它们一起可以被认为是公平支付的定义。

效率

特征贡献必须加起来就是 x x x 的预测值和平均值的差值。

∑ j = 1 p ϕ j = f ^ ( x ) − E X ( f ^ ( X ) ) \sum\nolimits_{j=1}^p\phi_j=\hat{f}(x)-E_X(\hat{f}(X)) j=1pϕj=f^(x)EX(f^(X))

对称

如果两个特征值 j j j k k k 对所有可能的联盟的贡献相等,则它们的贡献应该相同。如果

v a l ( S ∪ { j } ) = v a l ( S ∪ { k } ) val(S \cup \{j\})=val(S\cup\{k\}) val(S{j})=val(S{k})

对所有的

S ⊆ { 1 , … , p } ∖ { j , k } S\subseteq\{1,\ldots, p\}\setminus\{j,k\} S{1,,p}{j,k}

然后

ϕ j = ϕ k \phi_j=\phi_{k} ϕj=ϕk

虚拟

一个不改变预测值的特征 j j j ——不管它被添加到哪个特征值联盟——应该有一个 Shapley 值 0。如果

v a l ( S ∪ { j } ) = v a l ( S ) val(S\cup\{j\})=val(S) val(S{j})=val(S)

对所有的

S ⊆ { 1 , … , p } S\subseteq\{1,\ldots,p\} S{1,,p}

然后

ϕ j = 0 \phi_j=0 ϕj=0

可加性

对于组合支付 val+val+ 各自的 Shapley 值的游戏,如下所示:

ϕ j + ϕ j + \phi_j+\phi_j^{+} ϕj+ϕj+

假设你训练了一个随机森林,这意味着预测是许多决策树的平均值。可加性属性保证对应一个特征值,你可以单独计算每棵树的 Shapley 值,将它们平均,并获得随机森林的特征值的 Shapley 值。

9.5.3.2 直觉

下图是理解 Shapley 值的直观方式:特征值以随机顺序进入房间。房间中的所有特征值都参与游戏(= 有助于预测)。一个特征值的 Shapley 值是当该特征值加入它们时,已经在房间中的集合收到的预测的平均变化。

9.5.3.3 估计 Shapley 值

所有可能的特征值联合(组)都必须在有和没有第 j j j 个特征的情况下进行评估,以计算准确的 Shapley 值。对于不止几个特征,这个问题的确切解决方案变得有问题,因为随着更多特征的添加,可能的集合数量呈指数增长。Strumbelj 等人(2014)16提出了蒙特卡洛采样的近似值:

ϕ ^ j = 1 M ∑ m = 1 M ( f ^ ( x + j m ) − f ^ ( x − j m ) ) \hat{\phi}_{j}=\frac{1}{M}\sum_{m=1}^M\left(\hat{f}(x^{m}_{+j})-\hat{f}(x^{m}_{-j})\right) ϕ^j=M1m=1M(f^(x+jm)f^(xjm))

f ^ ( x + j m ) \hat{f}(x^{m}_{+j}) f^(x+jm) 是对 x x x 的预测,但随机数量的特征值被来自随机数据点 z z z 的特征值替换,除了特征 j j j 的相应值。 x x x 向量 x − j m x^{m}_{-j} xjm 几乎与 x + j m x^{m}_{+j} x+jm 相同, 但 x j m x_j^{m} xjm 值也取自采样的 z z z。这 M M M 个新实例中的每一个都是由两个实例组装而成的一种“弗兰肯斯坦的怪物”。请注意,在下面的算法中,特征的顺序实际上并没有改变——每个特征在传递给预测函数时保持在相同的向量位置。该顺序在这里仅用作“技巧”:通过为特征赋予新顺序,我们得到了一种随机机制,可以帮助我们组合“弗兰肯斯坦的怪物”。对于出现在特征左侧的特征 x j x_j xj ,我们从原始观察中获取值,对于右侧的特征,我们从随机实例中获取值。

单个特征值的近似 Shapley 估计

  • 输出:第 j j j 个特征值的 Shapley 值
  • 要求:迭代次数 M M M、感兴趣的实例 x x x、特征索引 j j j、数据矩阵 X X X、机器学习模型 f f f
    • 对于所有 m = 1 , . . . , M m = 1,...,M m=1,...,M:
      • 从数据矩阵 X X X 中绘制随机实例 $$
      • 选择特征值的随机排列
      • 订单实例 x x x: x o = ( x ( 1 ) , … , x ( j ) , … , x ( p ) ) x_o=(x_{(1)},\ldots,x_{(j)},\ldots,x_{(p)}) xo=(x(1),,x(j),,x(p))
      • 订单实例 z z z: z o = ( z ( 1 ) , … , z ( j ) , … , z ( p ) ) z_o=(z_{(1)},\ldots,z_{(j)},\ldots,z_{(p)}) zo=(z(1),,z(j),,z(p))
      • 构造两个新实例
        • j j j 的情况: x + j = ( x ( 1 ) , … , x ( j − 1 ) , x ( j ) , z ( j + 1 ) , … , z ( p ) ) x_{+j}=(x_{(1)},\ldots,x_{(j-1)},x_{(j)},z_{(j+1)},\ldots,z_{(p)}) x+j=(x(1),,x(j1),x(j),z(j+1),,z(p))
        • 没有 j j j的情况: x − j = ( x ( 1 ) , … , x ( j − 1 ) , z ( j ) , z ( j + 1 ) , … , z ( p ) ) x_{-j}=(x_{(1)},\ldots,x_{(j-1)},z_{(j)},z_{(j+1)},\ldots,z_{(p)}) xj=(x(1),,x(j1),z(j),z(j+1),,z(p))
      • 计算边际贡献: ϕ j m = f ^ ( x + j ) − f ^ ( x − j ) \phi_j^{m}=\hat{f}(x_{+j})-\hat{f}(x_{-j}) ϕjm=f^(x+j)f^(xj)
  • 计算 Shapley 值作为平均值: ϕ j ( x ) = 1 M ∑ m = 1 M ϕ j m \phi_j(x)=\frac{1}{M}\sum_{m=1}^M\phi_j^{m} ϕj(x)=M1m=1Mϕjm

首先,选择一个感兴趣的实例 x x x、一个特征 j j j 和迭代次数 M M M。对于每次迭代,从数据中选择一个随机实例 z z z,并生成特征的随机顺序。通过组合来自感兴趣实例 x x x 和样本 z z z 的值来创建两个新实例。实例 x + j x_{+j} x+j 是感兴趣的实例,但特征 j j j 之后的所有值都被样本 z z z 中的特征值替换。实例 x − j x_{-j} xj 是相同的 x + j x_{+j} x+j,但另外将特征 j j j 替换为来自样本 z z z 的特征 j j j 的值。计算来自黑盒的预测差异:

ϕ j m = f ^ ( x + j m ) − f ^ ( x − j m ) \phi_j^{m}=\hat{f}(x^m_{+j})-\hat{f}(x^m_{-j}) ϕjm=f^(x+jm)f^(xjm)

所有这些差异被平均并导致:

ϕ j ( x ) = 1 M ∑ m = 1 M ϕ j m \phi_j(x)=\frac{1}{M}\sum_{m=1}^M\phi_j^{m} ϕj(x)=M1m=1Mϕjm

平均通过 X 的概率分布隐式加权样本。

必须对每个特征重复该过程以获得所有 Shapley 值。

9.5.4 优点

预测和平均预测之间的差异公平地分布在实例的特征值中——Shapley 值的效率属性。此属性将 Shapley 值与其他方法(例如LIME)区分开来。LIME 不保证预测在特征之间公平分布。Shapley 值可能是提供完整解释的唯一方法。在法律要求可解释性的情况下——如欧盟的“解释权”——Shapley 值可能是唯一合法的方法,因为它基于可靠的理论并公平地分配效果。我不是律师,所以这仅反映了我对要求的直觉。

Shapley 值允许对比解释。你可以将其与子集甚至单个数据点进行比较,而不是将预测与整个数据集的平均预测进行比较。这种对比性也是 LIME 等本地模型所不具备的。

Shapley 值是唯一具有坚实理论的解释方法。公理——效率、对称、虚拟、可加性——为解释提供了合理的基础。像 LIME 这样的方法在本地假设机器学习模型的线性行为,但没有理论说明为什么这应该起作用。

将预测解释为由特征值进行的游戏是令人兴奋的。

9.5.5 缺点

Shapley 值需要大量的计算时间。在 99.9 % 99.9\% 99.9% 的现实问题中,只有近似解是可行的。Shapley 值的精确计算在计算上是昂贵的,因为有 2 k 2^k 2k 必须通过绘制随机实例来模拟特征值的可能联合和特征的“缺失”,这增加了 Shapley 值估计的估计方差。集合的指数数通过抽样集合和限制迭代次数 M M M 来处理。减少 M M M 减少了计算时间,但增加了 Shapley 值的方差。对于迭代次数 M M M 没有好的经验法则。 M M M 应该足够大以准确估计 Shapley 值,但又要足够小以在合理的时间内完成计算。应该可以根据 Chernoff 界限选择 M M M,但我还没有看到任何关于为机器学习预测的 Shapley 值执行此操作的论文。

Shapley 值可能会被误解。一个特征值的 Shapley 值并不是模型训练中去除该特征后的预测值之差。Shapley 值的解释是:给定当前的一组特征值,一个特征值对实际预测和平均预测之间的差异的贡献是估计的 Shapley 值。

如果你寻求稀疏解释(包含很少特征的解释),则 Shapley 值是错误的解释方法。使用 Shapley 值法创建的解释总是使用所有特征。人类更喜欢选择性解释,例如 LIME 产生的解释。对于非专业人士必须处理的解释,LIME 可能是更好的选择。

另一种解决方案是Lundberg 和 Lee (2016)17引入的SHAP,它基于 Shapley 值,但也可以提供很少特征的解释。

Shapley 值返回每个特征的简单值,但没有像 LIME 这样的预测模型。这意味着它不能用于对输入变化的预测变化做出陈述,例如:“如果我每年多赚 300 欧元,我的信用评分将增加 5 分。”

另一个缺点是,如果要计算新数据实例的 Shapley 值,则需要访问数据。访问预测函数是不够的,因为你需要数据将感兴趣的实例的部分替换为随机绘制的数据实例中的值。只有当你可以创建看起来像真实数据实例但不是来自训练数据的实际实例的数据实例时,才能避免这种情况。

与许多其他基于排列的解释方法一样,Shapley 值方法存在以下问题:存在包含不切实际的数据实例的问题当特征相关时。

为了模拟集合中缺少特征值,我们将特征边缘化。这是通过从特征的边缘分布中采样值来实现的。只要功能是独立的,这很好。当特征依赖时,我们可能会采样对这个实例没有意义的特征值。但是我们会使用这些来计算特征的 Shapley 值。一种解决方案可能是将相关特征排列在一起并为它们获得一个相互的 Shapley 值。另一种适应是条件采样:功能是根据团队中已有的功能进行采样的。虽然条件采样解决了不切实际数据点的问题,但引入了一个新问题:结果值不再是我们游戏的 Shapley 值,因为它们违反了对称公理,正如 Sundararajan 等人发现的那样(2019)18并由 Janzing 等人进一步讨论。(2020)17

9.5.6 软件和替代品

iml Shapley 值在 R 的 the和 fastshap 包中都实现了。在 Julia 中,你可以使用 Shapley.jl

SHAP 是 Shapley 值的另一种估计方法,将在下一章中介绍。

另一种方法称为 breakDown ,它在breakDown R 包19中实现。BreakDown 还显示了每个特征对预测的贡献,但会逐步计算它们。让我们重用游戏类比:我们从一个空团队开始,添加对预测贡献最大的特征值并迭代直到添加所有特征值。每个特征值贡献多少取决于“团队”中已经存在的各个特征值,这是breakDown方法的一大缺点。它比 Shapley 值方法更快,并且对于没有交互的模型,结果是相同的。

9.6 SHAP(SHapley Additive 解释)

Lundberg 和 Lee (2017)17的 SHAP(SHapley Additive exPlanations)是一种解释个体预测的方法。SHAP 是基于游戏理论上最优的 Shapley 值

SHAP 有自己的章节而不是 Shapley 值的子章节有两个原因。

首先,SHAP 作者提出了 KernelSHAP,这是一种受局部代理模型启发的基于内核的 Shapley 值估计方法。他们提出了 TreeSHAP,一种基于树的模型的有效估计方法。

其次,SHAP 带有许多基于 Shapley 值聚合的全局解释方法。本章解释了新的估计方法和全局解释方法。

对 SHAP 和 Shapley 值的深入实践课程感兴趣吗?前往 Shapley 课程页面,课程可用后会收到通知。

我建议先阅读有关 Shapley 值局部模型(LIME)的章节

9.6.1 定义

SHAP 的目标是通过计算每个特征对预测的贡献来解释实例 x x x 的预测。SHAP 解释方法根据联合博弈论计算 Shapley 值。数据实例的特征值充当集合中的参与者。Shapley 值告诉我们如何在特征之间公平地分配“支出”(= 预测)。玩家可以是单独的特征值,例如表格数据。一个玩家也可以是一组特征值。例如,为了解释图像,可以将像素分组为超像素,并将预测分布在它们之间。SHAP 带来的一项创新是将 Shapley 值解释表示为一种加性特征归因方法,一种线性模型。该视图连接了 LIME 和 Shapley 的价值观。SHAP 将解释指定为:

g ( z ′ ) = ϕ 0 + ∑ j = 1 M ϕ j z j ′ g(z')=\phi_0+\sum_{j=1}^M\phi_jz_j' g(z)=ϕ0+j=1Mϕjzj

其中 g g g 是解释模型, z ′ ∈ { 0 , 1 } M z'\in\{0,1\}^M z{0,1}M 是联合向量, M M M 是最大联合大小, ϕ j ∈ R \phi_j\in\mathbb{R} ϕjR 是特征 j j j 的特征属性,即 Shapley 值。我所说的“联合向量”在 SHAP 论文中被称为“简化特征”。我认为选择了这个名称,因为例如图像数据,图像不是在像素级别上表示的,而是聚合为超像素。我认为将 z 视为描述集合是有帮助的:在集合向量中,条目 1 表示相应的特征值“存在”,而 0 表示“不存在”。如果你了解 Shapley 值,这听起来应该很熟悉。为了计算 Shapley 值,我们模拟只有一些特征值在播放(“存在”),而一些没有(“不存在”)。作为集合的线性模型的表示是计算φ的。对于感兴趣的实例 x,联合向量 x’ 是全 1 的向量,即所有特征值都是“存在的”。该公式简化为:

g ( x ′ ) = ϕ 0 + ∑ j = 1 M ϕ j g(x')=\phi_0+\sum_{j=1}^M\phi_j g(x)=ϕ0+j=1Mϕj

你可以在 Shapley 值一章中以类似的符号找到此公式。更多关于实际估计的信息稍后会介绍。在我们涉及估计细节之前要先谈一下属性 ϕ \phi ϕ

Shapley 值是唯一满足效率、对称性、虚拟和可加性属性的解决方案。SHAP 也满足这些要求,因为它计算 Shapley 值。在 SHAP 论文中,你会发现 SHAP 属性和 Shapley 属性之间存在差异。SHAP 描述了以下三个理想的属性:

1) 局部精度

f ^ ( x ) = g ( x ′ ) = ϕ 0 + ∑ j = 1 M ϕ j x j ′ \hat{f}(x)=g(x')=\phi_0+\sum_{j=1}^M\phi_jx_j' f^(x)=g(x)=ϕ0+j=1Mϕjxj

如果你定义 ϕ 0 = E X ( f ^ ( x ) ) \phi_0=E_X(\hat{f}(x)) ϕ0=EX(f^(x)) 并将 x j ′ x_j' xj 设置为1,这是 Shapley 效率属性。仅使用不同的名称并使用联合向量。

f ^ ( x ) = ϕ 0 + ∑ j = 1 M ϕ j x j ′ = E X ( f ^ ( X ) ) + ∑ j = 1 M ϕ j \hat{f}(x)=\phi_0+\sum_{j=1}^M\phi_jx_j'=E_X(\hat{f}(X))+\sum_{j=1}^M\phi_j f^(x)=ϕ0+j=1Mϕjxj=EX(f^(X))+j=1Mϕj

2) 缺失

x j ′ = 0 ⇒ ϕ j = 0 x_j'=0\Rightarrow\phi_j=0 xj=0ϕj=0

Missingness 表示缺失特征的属性为零。注意 x j ′ x_j' xj 指的是集合,其中 0 的值表示没有特征值。

在联合表示法中,所有特征值 x j ′ x_j' xj 要解释的实例应该是’1’。0 的存在意味着感兴趣的实例缺少特征值。

此属性不属于“正常”沙普利值的属性。那么为什么我们需要它来进行 SHAP 呢?

Lundberg 称其为“小型簿记财产”

理论上,缺失的特征可以具有任意的 Shapley 值,而不会损害局部精度属性,因为它乘以 x j ′ = 0 x_j'=0 xj=0 。Missingness 属性强制缺失特征的 Shapley 值为 0。实际上,这仅与常量特征相关。

3) 一致性

f ^ x ( z ′ ) = f ^ ( h x ( z ′ ) ) \hat{f}_x(z')=\hat{f}(h_x(z')) f^x(z)=f^(hx(z)) z ∖ j ′ z_{\setminus{}j}' zj 表明 z j ′ = 0 z_j'=0 zj=0 。对于满足以下条件的任意两个模型 f f f f ′ f' f

f ^ x ′ ( z ′ ) − f ^ x ′ ( z ∖ j ′ ) ≥ f ^ x ( z ′ ) − f ^ x ( z ∖ j ′ ) \hat{f}_x'(z')-\hat{f}_x'(z_{\setminus{}j}')\geq{}\hat{f}_x(z')-\hat{f}_x(z_{\setminus{}j}') f^x(z)f^x(zj)f^x(z)f^x(zj)

对于所有输入 z ′ ∈ { 0 , 1 } M z'\in\{0,1\}^M z{0,1}M, 然后:

ϕ j ( f ^ ′ , x ) ≥ ϕ j ( f ^ , x ) \phi_j(\hat{f}',x)\geq\phi_j(\hat{f},x) ϕj(f^,x)ϕj(f^,x)

一致性属性表示,如果模型发生变化,使得特征值的边际贡献增加或保持不变(不管其他特征如何),Shapley 值也会增加或保持不变。正如 Lundberg 和 Lee 的附录中所描述的,从 Consistency 可以得出 Shapley 属性 Linearity、Dummy 和 Symmetry。

9.6.2 SHAP 内核

KernelSHAP 估计实例 x x x 每个特征值对预测的贡献。KernelSHAP 包括五个步骤:

  • 样本集合 z k ′ ∈ { 0 , 1 } M , k ∈ { 1 , … , K } z_k'\in\{0,1\}^M,\quad{}k\in\{1,\ldots,K\} zk{0,1}M,k{1,,K} (1 = 集合中存在的特征, 0 = 特征不存在).
  • 首先通过将 z k ′ z_k' zk 转化为原始特征空间,然后应用模型 f ^ : f ^ ( h x ( z k ′ ) ) \hat{f}: \hat{f}(h_x(z_k')) f^:f^(hx(zk)) 来实现对每个 z k ′ z_k' zk 的预测。
  • 使用 SHAP 内核计算每个的权重 z k ′ z_k' zk
  • 拟合加权线性模型。
  • 返回 Shapley 值 ϕ k \phi_k ϕk ,来自线性模型的系数。

我们可以通过反复掷硬币来创建一个随机集合,直到我们有一个 0 和 1 的链。例如,(1,0,1,0) 的向量意味着我们有第一个和第三个特征的联合。 K K K 个抽样集合成为回归模型的数据集。回归模型的目标是对集合的预测。(“等等!”你说。“该模型尚未针对这些二元联合数据进行训练,因此无法对它们进行预测。”)为了从特征值联合到有效数据实例,在 h x : { 0 , 1 } M → R p h_x:\{0,1\}^M\rightarrow\mathbb{R}^p hx:{0,1}MRp 里我们需要一个函数 h x ( z ′ ) = z h_x(z')=z hx(z)=z 。函数 h x h_x hx 将 1 映射到我们要解释的实例 x x x 中的相应值。对于表格数据,它将 0 映射到我们从数据中采样的另一个实例的值。

这意味着我们将“特征值不存在”等同于“特征值被数据中的随机特征值替换”。对于表格数据,下图可视化了从集合到特征值的映射:

img
图 9.22:功能HX将集合映射到有效实例。对于目前的特征 (1),HX映射到 x 的特征值。对于缺失的特征 (0),HX映射到随机采样的数据实例的值。

h x h_x hx 对于表格数据处理 X C X_C XC X S X_S XS 作为独立并在边际分布上积分:

f ^ ( h x ( z ′ ) ) = E X C [ f ^ ( x ) ] \hat{f}(h_x(z'))=E_{X_C}[\hat{f}(x)] f^(hx(z))=EXC[f^(x)]

从边缘分布采样意味着忽略存在和不存在特征之间的依赖结构。因此,KernelSHAP 面临与所有基于排列的解释方法相同的问题。这种估计过于重视不太可能发生的情况。结果可能变得不可靠。但有必要从边际分布中抽样。解决方案是从条件分布中采样,这会改变价值函数,因此 Shapley 值是解决方案的游戏。因此,Shapley 值具有不同的解释:例如,模型可能根本未使用的特征在使用条件采样时可能具有非零 Shapley 值。对于边际博弈,这个特征值的 Shapley 值总是 0,

对于图像,下图描述了一个可能的映射函数:

img
图 9.23:函数 h x h_x hx 将超像素 (sp) 的集合映射到图像。超像素是像素组。对于目前的特征 (1), h x h_x hx 返回原始图像的对应区域。对于缺失的特征 (0), h x h_x hx 相应区域变灰。分配周围像素或类似像素的平均颜色也是一种选择。

与 LIME 的最大区别在于回归模型中实例的权重。LIME 根据实例与原始实例的接近程度对实例进行加权。联合向量中的 0 越多,LIME 中的权重越小。SHAP 根据集合在 Shapley 值估计中获得的权重对采样实例进行加权。小集合(少数 1)和大型集合(即许多 1)获得最大权重。其背后的直觉是:如果我们能够孤立地研究它们的影响,我们就会对单个特征了解最多。如果集合由单个特征组成,我们可以了解该特征对预测的孤立主效应。如果一个集合由一个特征以外的所有特征组成,我们可以了解该特征的总效应(主要效应加上特征交互)。如果一个集合由一半的特征组成,我们对单个特征的贡献了解甚少,因为有许多可能的集合与一半的特征。为了实现符合 Shapley 的加权,Lundberg 等人提出SHAP内核:

π x ( z ′ ) = ( M − 1 ) ( M ∣ z ′ ∣ ) ∣ z ′ ∣ ( M − ∣ z ′ ∣ ) \pi_{x}(z')=\frac{(M-1)}{\binom{M}{|z'|}|z'|(M-|z'|)} πx(z)=(zM)z(Mz)(M1)

这里,M 是最大集合规模,并且 ∣ z ′ ∣ |z'| z 是实例 ∣ z ′ ∣ |z'| z 中当前特征的数量。Lundberg 和 Lee 表明使用此核权重的线性回归会产生 Shapley 值。如果你在集合数据上使用带有 LIME 的 SHAP 内核,LIME 也会估计 Shapley 值!

对于集合的抽样,我们可以更聪明一点:最小和最大的集合占据了大部分权重。我们通过使用一些抽样预算 K 来包含这些高权重集合而不是盲目抽样,从而获得更好的 Shapley 值估计。我们从具有 1 1 1 M − 1 M-1 M1 个特征的所有可能的集合开始,总共有 2 2 2 M M M 集合。当我们有足够的预算(当前预算为 K − 2 M K - 2M K2M)时,我们可以包括具有 2 2 2 个特征和 M − 2 M-2 M2 个特征的集合等等。从剩余的集合规模中,我们使用重新调整的权重进行抽样。

我们有数据、目标和权重;构建加权线性回归模型所需的一切:

g ( z ′ ) = ϕ 0 + ∑ j = 1 M ϕ j z j ′ g(z')=\phi_0+\sum_{j=1}^M\phi_jz_j' g(z)=ϕ0+j=1Mϕjzj

我们通过优化以下损失函数 L L L来训练线性模型 g g g

L ( f ^ , g , π x ) = ∑ z ′ ∈ Z [ f ^ ( h x ( z ′ ) ) − g ( z ′ ) ] 2 π x ( z ′ ) L(\hat{f},g,\pi_{x})=\sum_{z'\in{}Z}[\hat{f}(h_x(z'))-g(z')]^2\pi_{x}(z') L(f^,g,πx)=zZ[f^(hx(z))g(z)]2πx(z)

其中 Z 是训练数据。这是我们通常为线性模型优化的古老无聊的平方误差总和。模型的估计系数 ϕ j \phi_j ϕj 是 Shapley 的值。

由于我们处于线性回归设置中,我们还可以使用标准工具进行回归。例如,我们可以添加正则化项来使模型稀疏。如果我们在损失 L 上添加 L1 惩罚,我们可以创建稀疏解释。(我不太确定结果系数是否仍然是有效的 Shapley 值。)

SHAP 树

伦德伯格等人。(2018)[^tree-shap] 提出了 TreeSHAP,它是 SHAP 的一种变体,用于基于树的机器学习模型,例如决策树、随机森林和梯度提升树。TreeSHAP 是作为 KernelSHAP 的快速、特定于模型的替代方案引入的,但事实证明它会产生不直观的特征属性。

TreeSHAP 使用条件期望定义值函数 E X S ∣ X C ( f ^ ( x ) ∣ x S ) E_{X_S|X_C}(\hat{f}(x)|x_S) EXSXC(f^(x)xS) 而不是边际期望。条件期望的问题在于,对预测函数 f f f 没有影响的特征可以获得不同于零的 TreeSHAP 估计,如 Sundararajan 等人所示(2019)18 和 Janzing 等人(2019)20。当特征与另一个实际上对预测有影响的特征相关时,可能会发生非零估计。

TreeSHAP 的速度有多快?与精确的 KernelSHAP 相比,它降低了 O ( T L 2 M ) O(TL2^M) O(TL2M) O ( T L D 2 ) O(TLD^2) O(TLD2) 的计算复杂度,其中 T T T 是树的数量, L L L 是任何树中的最大叶子数, D D D 是任何树的最大深度。

TreeSHAP 使用条件期望 O ( T L 2 M ) O(TL2^M) O(TL2M) O ( T L D 2 ) O(TLD^2) O(TLD2) 来估计效果。

我会给你一些关于我们如何计算单个树、实例 x x x 和特征子集 S S S 的预期预测的直觉。如果我们以所有特征为条件——如果 S S S 是所有特征的集合——那么来自节点的预测实例 x 下降的位置将是预期的预测。如果我们不对任何特征进行预测——如果 S S S 为空——我们将使用所有终端节点预测的加权平均值。如果 S S S 包含一些(但不是全部)特征,我们将忽略不可达节点的预测。不可达意味着通向该节点的决策路径与 x S x_S xS 的值相矛盾 。

从剩余的终端节点中,我们对按节点大小(即该节点中的训练样本数)加权的预测进行平均。剩余终端节点的平均值,由每个节点的实例数加权,是给定 S S S x x x 的预期预测。问题是我们必须对每个可能的特征值子集 S S S 应用这个过程。 TreeSHAP 以多项式时间而不是指数时间计算。基本思想是同时将所有可能的子集 S S S 下推到树中。对于每个决策节点,我们必须跟踪子集的数量。这取决于父节点中的子集和拆分特征。例如,当树中的第一个分裂在特征 x 3 x3 x3 上时,那么包含特征 x 3 x3 x3 的所有子集都将转到一个节点( x x x 所在的那个)。不包含特征 x 3 x3 x3 的子集以减少的权重到达两个节点​​。不幸的是,不同大小的子集具有不同的权重。该算法必须跟踪每个节点中子集的整体权重。这使算法复杂化。有关 TreeSHAP 的详细信息,请参阅原始论文。计算可以扩展到更多的树:由于 Shapley 值的 Additivity 属性,

接下来,我们将看看 SHAP 的实际解释。

9.6.4 示例

我用 100 棵树训练了一个随机森林分类器来预测患宫颈癌的风险。我们将使用 SHAP 来解释个人预测。我们可以使用快速 TreeSHAP 估计方法而不是较慢的 KernelSHAP 方法,因为随机森林是树的集合。但是这个例子不是依赖条件分布,而是使用边际分布。这在包装中有所描述,但未在原始文件中。Python TreeSHAP 函数在边际分布上较慢,但仍比 KernelSHAP 快,因为它随数据中的行线性缩放。

因为我们这里使用了边际分布,所以解释和Shapley 值章节中的解释是一样的。但是 Python shap 包带来了不同的可视化效果:你可以将诸如 Shapley 值之类的特征属性可视化为“力”。每个特征值都是增加或减少预测的力量。预测从基线开始。Shapley 值的基线是所有预测的平均值。在图中,每个 Shapley 值都是推动增加(正值)或减少(负值)预测的箭头。这些力量在数据实例的实际预测中相互平衡。

下图显示了宫颈癌数据集中两名女性的 SHAP 解释力图:

img
图 9.24:解释两个人预测癌症概率的 SHAP 值。基线(平均预测概率)为 0.066。第一位女性的预测风险较低,为 0.06。性病等风险增加的影响被年龄等减少的影响所抵消。第二位女性的预测风险很高,为 0.71。51 岁和 34 岁吸烟会增加她预测的癌症风险。

这些是对个人预测的解释。

Shapley 值可以组合成全局解释。如果我们为每个实例运行 SHAP,我们会得到一个 Shapley 值矩阵。该矩阵每个数据实例一行,每个特征一列。我们可以通过分析这个矩阵中的 Shapley 值来解释整个模型。

我们从 SHAP 特征重要性开始。

9.6.5 SHAP 特征重要性

SHAP 特征重要性背后的想法很简单:具有大绝对 Shapley 值的特征很重要。由于我们想要全局重要性,我们对数据中每个特征的绝对Shapley 值进行平均:

I j = 1 n ∑ i = 1 n ∣ ϕ j ( i ) ∣ I_j=\frac{1}{n}\sum_{i=1}^n{}|\phi_j^{(i)}| Ij=n1i=1nϕj(i)

接下来,我们通过降低重要性对特征进行排序并绘制它们。下图显示了之前训练的随机森林预测宫颈癌的 SHAP 特征重要性。

img
图 9.25:SHAP 特征重要性测量为平均绝对 Shapley 值。使用激素避孕药的年数是最重要的特征,将预测的绝对癌症概率平均改变了 2.4 个百分点(x 轴为 0.024)。

SHAP 特征重要性是[置换特征重要性]](#feature-importance)的替代方案。两种重要性度量之间存在很大差异:排列特征重要性基于模型性能的下降。SHAP 基于特征属性的大小。

特征重要性图很有用,但除了重要性之外不包含任何信息。为了获得更多信息图,我们接下来将查看摘要图。

9.6.6 SHAP 总结图

摘要图将特征重要性与特征效果相结合。摘要图上的每个点都是特征和实例的 Shapley 值。 y y y 轴上的位置由特征确定, x x x 轴上的位置由 Shapley 值确定。颜色代表特征值从低到高。重叠点在 y y y 轴方向抖动,因此我们可以了解每个特征的 Shapley 值的分布。这些特征是根据它们的重要性排序的。

img
图 9.26:SHAP 总结图。使用激素避孕药的年限低会降低预测的癌症风险,而使用年限长会增加风险。你的定期提醒:所有影响都描述了模型的行为,在现实世界中不一定是因果关系。

在摘要图中,我们首先看到了特征值与对预测的影响之间关系的迹象。但是要查看关系的确切形式,我们必须查看 SHAP 依赖图。

9.6.7 SHAP 依赖图

SHAP 特征依赖可能是最简单的全局解释图:

  1. 选择一个特征。
  2. 对于每个数据实例,在 x x x 轴上绘制一个特征值并在 y y y 轴上绘制相应的 Shapley 值的点。
  3. 完成。

从数学上讲,该图包含以下几点: { ( x j ( i ) , ϕ j ( i ) ) } i = 1 n \{(x_j^{(i)},\phi_j^{(i)})\}_{i=1}^n {(xj(i),ϕj(i))}i=1n

下图显示了多年来对激素避孕药的 SHAP 特征依赖:

img

图 9.27:多年来 SHAP 对激素避孕药的依赖性图。与 0 年相比,几年会降低预测概率,而年数会增加预测癌症概率。

SHAP 依赖图是部分依赖图累积局部效应的替代方案。虽然 PDP 和 ALE 图显示平均效应,但 SHAP 依赖性还在 y y y 轴上显示方差。特别是在交互的情况下,SHAP 依赖图将在 y y y 轴上更加分散。可以通过突出这些特征交互来改进依赖图。

9.6.8 SHAP 交互值

交互效应是在考虑了单个特征效应之后的附加组合特征效应。博弈论中的 Shapley 交互指数定义为:

ϕ i , j = ∑ S ⊆ ∖ { i , j } ∣ S ∣ ! ( M − ∣ S ∣ − 2 ) ! 2 ( M − 1 ) ! δ i j ( S ) \phi_{i,j}=\sum_{S\subseteq\setminus\{i,j\}}\frac{|S|!(M-|S|-2)!}{2(M-1)!}\delta_{ij}(S) ϕi,j=S{i,j}2(M1)!S!(MS2)!δij(S)

i ≠ j i\neq{}j i=j 并且:

δ i j ( S ) = f ^ x ( S ∪ { i , j } ) − f ^ x ( S ∪ { i } ) − f ^ x ( S ∪ { j } ) + f ^ x ( S ) \delta_{ij}(S)=\hat{f}_x(S\cup\{i,j\})-\hat{f}_x(S\cup\{i\})-\hat{f}_x(S\cup\{j\})+\hat{f}_x(S) δij(S)=f^x(S{i,j})f^x(S{i})f^x(S{j})+f^x(S)

这个公式减去了特征的主效应,这样我们在考虑了个体效应后得到了纯交互效应。我们对所有可能的特征集合 S 的值进行平均,就像在 Shapley 值计算中一样。当我们计算所有特征的 SHAP 交互值时,每个实例得到一个矩阵,尺寸为 M ∗ M M * M MM,其中 M M M 是特征的数量。

我们如何使用交互索引?例如,要自动为交互作用最强的 SHAP 特征依赖图着色:

img

图 9.28:带有交互可视化的 SHAP 特征依赖图。激素避孕药的使用年限与性病相互作用。在接近 0 年的情况下,STD 的发生会增加预测的癌症风险。对于避孕药具的更多年,性病的发生会降低预测的风险。同样,这不是因果模型。影响可能是由于混淆(例如,性病和较低的癌症风险可能与更多的医生就诊相关)。

9.6.9聚类 Shapley 值

你可以借助 Shapley 值对数据进行聚类。聚类的目标是找到相似实例的组。通常,聚类是基于特征的。特征通常在不同的尺度上。例如,高度可能以米为单位测量,颜色强度从 0 到 100 以及一些传感器输出在 -1 和 1 之间。困难在于计算具有这些不同、不可比较特征的实例之间的距离。

SHAP 聚类通过聚类每个实例的 Shapley 值来工作。这意味着你通过解释相似性对实例进行聚类。所有 SHAP 值都具有相同的单位——预测空间的单位。你可以使用任何聚类方法。以下示例使用分层凝聚集群对实例进行排序。

该图由许多力图组成,每个力图都解释了一个实例的预测。我们垂直旋转力图,并根据它们的聚类相似性将它们并排放置。

img
图 9.29:按解释相似性聚类的堆叠 SHAP 解释。x 轴上的每个位置都是数据的一个实例。红色 SHAP 值增加预测,蓝色值减少预测。一个集群脱颖而出:右侧是预测癌症风险高的一组。

9.6.10 优点

由于 SHAP 计算 Shapley 值,因此 Shapley 值的所有优点都适用: SHAP在博弈论中有坚实的理论基础。预测在特征值之间是公平分布的。我们得到对比性解释,将预测与平均预测进行比较。

SHAP 连接 LIME 和 Shapley 值。这对于更好地理解这两种方法非常有用。它还有助于统一可解释机器学习领域。

SHAP对 基于树的模型有一个快速的实现。我相信这是 SHAP 普及的关键,因为采用 Shapley 值的最大障碍是计算速度慢。

快速计算使得计算全局模型解释所需的许多 Shapley 值成为可能。全局解释方法包括特征重要性、特征依赖、交互、聚类和汇总图。使用 SHAP,全局解释与局部解释一致,因为 Shapley 值是全局解释的“原子单位”。

如果你使用 LIME 进行局部解释,使用部分依赖图加上置换特征重要性来进行全局解释,那么你缺乏共同的基础。

9.6.11 缺点

KernelSHAP 很慢。当你想要为许多实例计算 Shapley 值时,这使得使用 KernelSHAP 变得不切实际。此外,所有全局 SHAP 方法(例如 SHAP 特征重要性)都需要计算大量实例的 Shapley 值。

KernelSHAP 忽略特征依赖。大多数其他基于排列的解释方法都有这个问题。通过用随机实例的值替换特征值,通常更容易从边缘分布中随机抽样。然而,如果特征是相关的,例如相关的,这会导致对不太可能的数据点施加过多的权重。TreeSHAP 通过显式建模条件预期预测来解决这个问题。

TreeSHAP 会产生不直观的特征属性。虽然 TreeSHAP 解决了外推到不太可能的数据点的问题,但它通过改变价值函数来解决这个问题,因此稍微改变了游戏规则。TreeSHAP 通过依赖条件预期预测来改变价值函数。随着值函数的变化,对预测没有影响的特征可以得到一个不为零的TreeSHAP值。

Shapley 值的缺点也适用于 SHAP:Shapley 值可能会被误解,并且需要访问数据来计算新数据(TreeSHAP 除外)。

使用SHAP可能会故意产生误导性解释,从而隐藏偏见4。如果你是创建解释的数据科学家,这不是一个实际问题(如果你是想要创建误导性解释的邪恶数据科学家,这甚至会是一个优势)。对于 SHAP 解释的接收者来说,这是一个劣势:他们无法确定解释的真实性。

9.6.12 软件

作者在 shap Python 包中实现了shap。此实现适用于 Python 的 scikit-learn 机器学习库中基于树的模型。shap 包也用于本章中的示例。SHAP 被集成到树增强框架 xgboostLightGBM 中。在 R 中,有 shapperfastshap 包。SHAP 也包含在 R xgboost 包中。


  1. Goldstein, Alex, Adam Kapelner, Justin Bleich, and Emil Pitkin. “Peeking inside the black box: Visualizing statistical learning with plots of individual conditional expectation.” journal of Computational and Graphical Statistics 24, no. 1 (2015): 44-65. ↩︎

  2. Goldstein, Alex, Adam Kapelner, Justin Bleich, and Maintainer Adam Kapelner. “Package ‘ICEbox’.” (2017). ↩︎

  3. Alvarez-Melis, David, and Tommi S. Jaakkola. “On the robustness of interpretability methods.” arXiv preprint arXiv:1806.08049 (2018). ↩︎

  4. Slack, Dylan, Sophie Hilgard, Emily Jia, Sameer Singh, and Himabindu Lakkaraju. “Fooling lime and shap: Adversarial attacks on post hoc explanation methods.” In Proceedings of the AAAI/ACM Conference on AI, Ethics, and Society, pp. 180-186 (2020). ↩︎ ↩︎

  5. Wachter, Sandra, Brent Mittelstadt, and Chris Russell. “Counterfactual explanations without opening the black box: Automated decisions and the GDPR.” (2017). ↩︎

  6. Dandl, Susanne, Christoph Molnar, Martin Binder, Bernd Bischl. “Multi-objective counterfactual explanations”. In: Bäck T. et al. (eds) Parallel Problem Solving from Nature – PPSN XVI. PPSN 2020. Lecture Notes in Computer Science, vol 12269. Springer, Cham (2020). ↩︎

  7. Deb, Kalyanmoy, Amrit Pratap, Sameer Agarwal and T. Meyarivan, “A fast and elitist multiobjective genetic algorithm: NSGA-II,” in IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, (2002). ↩︎

  8. Van Looveren, Arnaud, and Janis Klaise. “Interpretable counterfactual explanations guided by prototypes.” arXiv preprint arXiv:1907.02584 (2019). ↩︎

  9. Karimi, Amir-Hossein, Gilles Barthe, Borja Balle and Isabel Valera. “Model-agnostic counterfactual explanations for consequential decisions.” AISTATS (2020). ↩︎

  10. Mothilal, Ramaravind K., Amit Sharma, and Chenhao Tan. “Explaining machine learning classifiers through diverse counterfactual explanations.” Proceedings of the 2020 Conference on Fairness, Accountability, and Transparency. (2020). ↩︎

  11. Laugel, Thibault, Marie-Jeanne Lesot, Christophe Marsala, Xavier Renard, and Marcin Detyniecki. “Inverse classification for comparison-based interpretability in machine learning.” arXiv preprint arXiv:1712.08443 (2017). ↩︎

  12. Ribeiro, Marco Tulio, Sameer Singh, and Carlos Guestrin. “Anchors: High-precision model-agnostic explanations.” AAAI Conference on Artificial Intelligence (2018). ↩︎

  13. Marco Tulio Ribeiro, Sameer Singh and Carlos Guestrin. “Anchors: high-precision model-agnostic explanations”. AAAI Conference on Artificial Intelligence (AAAI), 2018 ↩︎

  14. Emilie Kaufmann and Shivaram Kalyanakrishnan. “Information complexity in bandit subset selection”. Proceedings of Machine Learning Research (2013). ↩︎

  15. Shapley, Lloyd S. “A value for n-person games.” Contributions to the Theory of Games 2.28 (1953): 307-317. ↩︎

  16. Štrumbelj, Erik, and Igor Kononenko. “Explaining prediction models and individual predictions with feature contributions.” Knowledge and information systems 41.3 (2014): 647-665. ↩︎

  17. Lundberg, Scott M., and Su-In Lee. “A unified approach to interpreting model predictions.” Advances in Neural Information Processing Systems (2017). ↩︎ ↩︎ ↩︎

  18. Sundararajan, Mukund, and Amir Najmi. “The many Shapley values for model explanation.” arXiv preprint arXiv:1908.08474 (2019). ↩︎ ↩︎

  19. Staniak, Mateusz, and Przemyslaw Biecek. “Explanations of model predictions with live and breakDown packages.” arXiv preprint arXiv:1804.01955 (2018). ↩︎

  20. Janzing, Dominik, Lenon Minorics, and Patrick Blöbaum. “Feature relevance quantification in explainable AI: A causal problem.” International Conference on Artificial Intelligence and Statistics. PMLR (2020). ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值