Interpretable Machine Learning: Model Explanations, SHAP, and Counterfactual Methods
写在开始之间
全文介绍
机器学习对于改进产品、过程和研究有着很⼤的潜⼒。但是计算机通常无法解释他们的预测,这是采⽤机器学习的障碍。也是我们这里想要解决的问题。
我们先处理基本介绍,然后讨论可解释性 可解释模型,通用方法,最后介绍基于样本的解释
我们的重点是表格式数据 (也称为关系数据或结构化数据) 的机器学习模型,基本不涉及到计算机视觉和⾃然语⾔处理任务。同时只讨论监督学习任务
这里不涉及可解释机器学习的最新研究,而是注重于那些比较成熟的方法
最后,我们想要强调一点: 多模型集成目前已经成为了各大机器学习竞赛的必备武器,胜出的模型⼤多是模型的集成,或是⾮常复杂的模型,如提升树或深层神经⽹络,这种提升模型预测性能的做法实际上大大降低了模型的可解释性
术语
为了避免歧义,这里给出一些约定形成的术语
- 算法 (Algorithm) 是机器为达到特定⽬标⽽遵循的⼀组规则
- 机器学习 (Machine Learning) 是⼀套⽅法,能够允许计算机从数据中学习,以做出和改进预测
- 学习器 (Learner) 或机器学习算法 (Machine Learning Algorithm) 是⽤来从数据中学习机器学习模型的程序
- 机器学习模型 (Machine Learning Model) 是将输⼊映射到预测的学习程序,这可以是线性模型或神经⽹络的⼀组权重。“模型” (Model) 也可以称作 “预测器” (Predictor),基于任务可以再分为“分类器” (Classifier) 或者 “回归模型” (Regression Model)
- 黑盒模型 (Black Box Model) 是⼀个不揭⽰其内部机制的系统,⿊盒的对⽴⾯有时被称为白盒 (White Box),在本书中被称为可解释模型,模型⽆关的解释⽅法将机器学习模型视为⿊盒
- 可解释的机器学习 (Interpretable Machine Learning) 是指使机器学习系统的⾏为和预测对⼈类可理解的⽅法和模型
- 数据集 (Dataset) 是⼀个表格,其中包含机器要从中学习的数据
- 实例 (Instance) 表现为数据集中的⼀⾏
- 特征 (Features) 是⽤于对输⼊进⾏预测或分类的。特征表现为数据集中的列
- 目标 (Target) 是机器要去学会预测的信息
- 机器学习任务 (Machine Learning Task) 是⼀个具有特征和⽬标的数据集的组合
- 预测 (Prediction) 是机器学习模型根据给定的特征 “猜测” ⽬标值应该是什么
数据集
这里我们介绍在后面的各种举例中会出现的数据集,没有例子的可解释机器学习很难让人们理解,我们后面会用很多例子帮助我们理解方法
我们将为不同的任务使⽤不同的数据集:分类,回归和⽂本分类。
数据文件已经在Github上存在与原书的项目文件夹中
自行车租赁 (回归)
本数据集来自于UCI机器学习数据库,由 Capital-Bikeshare 公开提供⾃⾏车租赁的每⽇计数,Fanaee-T 和 Gama添加了天⽓数据和季节信息
我们不会使用全部的数据集特征,但是使用的特征基本覆盖了
- 自行车租赁数量
- 各种日期标志符,如季节,是否假期,年月日,工作日与否
- 各种天气标志符,如温度,湿度,天气(阴晴雨雾雪),风速
YouTube 垃圾评论 (文本分类)
以⽂字分类为例,我们使⽤了来⾃ 5 个不同 YouTube 视频的 1956 条评论,使用YouTube API获取
这些评论被⼿动标记为垃圾评论或正常评论。垃圾评论的编码为 “1”,正常评论的编码为 “ 0”。
宫颈癌的危险因素 (分类)
宫颈癌数据集包含预测⼥性是否会患宫颈癌的指标和危险因素。这些特征包括⼈⼜统计学数据 (如年龄)、⽣活⽅式和病史。
我们主要使用的特征有
- 基本人口学数据:年龄,首次性行为年龄,性伴侣数量,怀孕次数
- 药物与毒品数据:是否吸烟,烟龄,是否服⽤激素避孕药,服⽤激素避孕药的时间,是否有宫内节育器 (IUD),使⽤宫内节育器 (IUD) 的时间
- 疾病数据:是否患有性传播疾病 (STD),性病诊断次数,第⼀次性病诊断后到现在的时间,上次性病诊断到现在的时间
- 目标输出:活检结果为 “健康” 或 “癌症”。
可解释性
可解释性的定义
数学上从未对所谓的可解释性进行定义,我们这里给出一些考虑
Miller对可解释性的非正式定义为 : 可解释性是⼈们能够理解决策原因的程度
另一种解释是 :可解释性是指⼈们能够⼀致地预测模型结果的程度
机器学习模型的可解释性越⾼,⼈们就越容易理解为什么做出某些决策或预测。如果⼀个模型的决策⽐另⼀个模型的决策能让⼈更容易理解,那么它就⽐另⼀个模型有更⾼的解释性
可解释性同时可以用 Interpretable 和 Explainable 这两个术语来描述可解释性,但是会对他们加以区分。我们将使⽤ Explainable 来描述对单个实例预测的解释。Interpretable则是对整个模型的解释
可解释性的重要性
当涉及到预测模型时,我们需要作出权衡:我们是只想知道预测是什么?还是想知道为什么做出这样的预测?两者往往在天平的两端
人们想要让模型可以被解释的原因有下面几个
- 人类的好奇心和学习能力 我们仅仅是好奇这个问题的答案
- 机器的决策对人的生活影响越大,机器对它行为的解释就越重要
- 科学的目标是获取知识,模型本⾝应该成为知识的来源。可解释性使得可以提取模型捕获的这些额外知识。
- 机器学习模型只有在可以解释时才能进⾏调试和审核
在部分情况下,我们往往不怎么需要解释性,而是希望得到更好的预测效果
- 如果模型没有重大影响,则不需要解释性
- 当问题被研究得很深入时,就不需要解释性了,此时我们有着充足的模型实践经验
- 可解释性可能使⼈或程序能够操纵系统,人们可能根据解释的结果针对性的修改自己的特征,最常见的在于信用贷款审核
可解释方法的分类
可以根据各种标准对机器学习可解释性的⽅法进⾏分类。
本质的 (Intrinsic) 还是事后的 (Post-hoc)?
本质的可解释性是指由于结构简单⽽被认为是可解释的机器学习模型,如短的决策树或稀疏线性模型;
事后解释性是指模型训练后运⽤解释⽅法,例如,置换特征重要性是⼀种事后解释⽅法。
事后⽅法也可以应⽤于本质上是可解释的模型上。我们后面的介绍顺序就是从本质可解释模型到事后解释问题
本质可解释性一般都是特定于某些类别的模型 (Model-specific) 的,事后解释方法往往都是模型无关 (Model-agnostic)的
局部 (Local) 还是全局 (Global)?
解释⽅法是否解释单个实例预测或整个模型⾏为?还是范围介于两者之间?
可解释性范围
算法透明度
算法训练产⽣预测模型,每个步骤都可以根据透明(Transparency) 或可解释性进⾏评估
算法透明度是指算法如何从数据中学习模型,以及它可以学习到什么样的关系。算法的透明度只需要对算法的了解,⽽不需要对数据或学习模型的了解。他和可解释性有关但是是两个概念
全局、整体的模型可解释性
⼀旦能理解整个模型,就可以将模型描述为可解释的
这种级别的可解释性是基于对模型特征和每个学习部分 (如权重、其他参数和结构) 的整体认知来理解模型是如何做出决策的。
但在实践中很难实现全局模型可解释性,任何超过⼏个参数或权重的模型都不可能适合⼈的短期记忆。通常,当⼈们试图理解⼀个模型时,他们只考虑其中的⼀部分,例如线性模型中的权重。也就是 本文的“模块层面上的全局模型可解释性”部分
模块层面上的全局模型可解释性
虽然全局模型可解释性通常是⽆法达到的,但⾄少有机会在模块层⾯上理解某些模型。
并⾮所有模型都可以在参数级别上解释。对于线性模型,可解释部分是权重,对于树来说,是分裂节点和叶节点预测。
例如,线性模型看起来似乎可以在模块化层⾯上完美地解释,但单个权重的解释与所有其他权重是相互关联的。对单个权重的解释总是伴随着脚注,即“其他输⼊特征保持相同的值”,这在许多实际应⽤中并不现实。 不过虽然如此,这还是一个很好解释的模型了
模块层面的可解释是我们着重研究的,因为人的理解能力让我们无法理解一个含有大量(三四个)参数的模型
单个预测的局部可解释性
在无法实现全局模型可解释性之后,我们不妨考虑着眼于⼀个实例。
检查模型对某个输⼊的预测,并解释原因。如果你查看单个预测,那么这个原本复杂的模型的⾏为可能会更令⼈愉悦。
局部解释⽐全局解释更准确。在后⾯的介绍中,在 “模型⽆关⽅法” ⼀章可以使单个实例的预测更容易解释。
一组预测的局部可解释性
非常自然的,我们现在可以解释单个实例了,如果我们获取实例组,使⽤单独的局部解释⽅法,然后为整个组列出其结果或对结果进⾏聚合。就可以很大程度上解释这个模型
解释的性质
我们要解释机器学习模型的预测。为了实现这⼀点,我们依赖于某个解释⽅法,⼀种⽣成解释的算法。解释 (Explanation) 通常以一种人类可理解的方式将实例的特征值与其模型预测联系起来。
我们分别研究解释⽅法和解释的性质,这些性质用于辅助判断一个解释方法或者解释是否足够好,但是目前对于解释是否好的问题仍然缺乏定量的评估
解释方法的性质
- 表达能力 (Expressive Power):是该⽅法能够产⽣的解释的 “语⾔” 或结构
- 半透明度 (Translucency):描述了解释⽅法依赖于查看机器学习模型 (如其参数) 的程度。高半透明度解释方法以来与模型,低半透明度方法仅仅需要修改输入然后观察预测
- 可移植性 (Portability):描述了使⽤解释⽅法的机器学习模型的范围,自然越大越好
- 算法复杂度 (Algorithmic Complexity):描述了⽣成解释的⽅法的计算复杂性
单个解释的性质
- 准确性 (Accuracy):如果要用解释来预测,就需要高准确性的模型,仅仅需要解释的话则可以不太准确
- 保真度 (Fidelity):解释对⿊盒模型预测的近似程度如何
- 一致性 (Consistency):经过相同任务训练并产⽣相似预测的模型之间的解释有多少不同
- 稳定性 (Stability):类似实例之间的解释会有多相似
- 可理解性 (Comprehensibility):⼈类对解释的理解程度如何
- 确定性 (Certainty):解释是否反映了机器学习模型的确定性
- 重要程度 (Degree of Importance):解释在多⼤程度上反映了解释的特征或部分的重要性
- 新颖性 (Novelty):解释是否反映了待解释的数据实例来⾃远离训练数据分布的 “新” 区域
- 代表性 (Representativeness):⼀个解释能覆盖多少个实例
人性化的解释
解释是给人看的,这里传统的机器学习可能对此无能为力,我们这里着重解释那些关于人的内容,都是从人文社科领域整理的
作为事件的解释,⼈类更喜欢简短的解释 (只有 1 或 2 个原因),这些解释将当前的情况与事件不会发⽣的情况进⾏了对⽐,特别是异常原因提供了很好的解释。
当你考虑需要⼀个预测或⾏为的所有因素的解释时,你不需要⼈性化的解释,⽽是完整的因果归因。
我们在这里介绍那些关于人的内容,致力于让外行人也能快速的理解我们的模型在干什么
- 解释具有对比性 :⼈类通常不会问为什么会做出某种预测,但会问为什么会做出这种预测⽽不是另⼀种预测。因此,好的解释是强调感兴趣的对象和参照对象之间最⼤的差异。
- 选择性的解释:⼈们不希望对涵盖事件的实际原因和完整原因进⾏解释。我们习惯于从各种可能的原因中选择⼀个或两个原因作为解释。即使真实情况很复杂,但只给出 1 到 3 个原因
- 解释是社会性的 :针对特定的人群,我们需要给出不同的解释,让不同的人理解,注重自己的受众
- 解释的重点是异常:⼈们更关注异常原因来解释事件,这些原因发⽣的可能性很⼩,但还是发⽣了。消除这些异常原因将⼤⼤改变结果 (反事实解释)。异常特征是非常好的解释,哪怕模型不这么认为,但是人是这么想的
- 解释是真实的 :解释应该尽可能真实地预测事件
- 好的解释与被解释者的先验知识是一致的:⼈类往往忽视与他们先验知识不⼀致的信息,这种效应被称为确认偏差(Confirmation Bias) 哪怕你认为你的解释很真实,但是违背先验知识往往不会被人们认可
- 好的解释是普遍性的和很可能的:普遍性可以很容易地通过特征的 “⽀持” 来衡量,即解释应⽤到的实例数除以实例总数。我们尽可能给出普遍的解释
可解释的模型
实现可解释性的最简单⽅法是只使⽤创建可解释模型的算法⼦集。线性回归、逻辑回归和决策树是常⽤的可解释模型。
这一章的内容我们将专注于讨论这些可解释模型,我们只关注我们的解释性,而不关注原理,对于那些在基础讲解中就研究过可解释性的模型,我们简单复习再提供跳转
模型的特性: 如果特征和⽬标之间的关联是线性建模的,那么模型就是线性的。
具有单调性约束的模型可确保特征和⽬标结果之间的关系在整个特征范围内始终朝着相同的⽅向:特征值的增加要么总是导致⽬标结果的增加,要么总是导致⽬标结果的减少。单调性对于模型的解释是有⽤的,因为它使理解关系变得更容易。
⼀些模型可以⾃动地包含特征之间的交互,来预测⽬标结果。你可以通过⼿动创建交互特征,可以将交互包括在任何类型的模型中。交互可以提⾼预测性能,但太多或太复杂的交互都会损害可解释性。
有些模型只处理回归,有些只处理分类,还有⼀些模型两者都处理。
我们将介绍的常见模型如下表
| 算法 | 线性 | 单调性 | 交互 | 任务 |
|---|---|---|---|---|
| 线性回归 | Yes | Yes | No | regr |
| 逻辑回归 | No | Yes | No | class |
| 决策树 | No | No | Yes | class,regr |
| RuleFit | Yes | No | Yes | class,regr |
| 朴素贝叶斯 | No | Yes | No | class |
| k-最近邻 | No | No | No | class,regr |
可解释模型和不可解释模型之间并没有明显的划分线,需要理性的看待
线性回归
线性模型的接受这里就不解释了 我们在线性回归基础 广义线性回归都在研究线性回归模型的问题,里面涉及了非常多的不同类型的参数解释,他们都属于这里研究的范畴
解释特征
线性回归模型中权重的解释取决于相应特征的类型
- 数值特征:将数值特征增加⼀个单位会根据其权重改变估计结果
- ⼆分类特征:每个实例都采⽤两个可能值之⼀的特征,⽽另⼀个值被视为参照类别。将特征从参照类别更改为其他类别会根据特征的权重改变估计结果。
- 具有多个类别的分类特征:具有固定数量的可能值的特征。一般我们需要使用one-hot 编码来处理多分类特征。然后采用二分类特征的解释方法
- 截距项:截距是 “常量特征” 的特征权重,对于所有实例都是 1,解释为:对于所有数值特征为零和分类特征为参照类别下的实例预测结果
根据前面的解释我们可以给出一些解释的文本模板,可以使用模板自动生成模型系数的解释
数值特征的解释: 分类的特征:
在有交互的作用的情况下 系数的可解释性问题会明显变得复杂 我们引入有交互项的回归模型
情况分别有
- 两个二元变量交互
- 一个二元变量一个连续变量交互
- 两个连续变量交互
两个二元变量的交互:首先计算所有二元交互情况的期望预测值,比较这些期望值,所有的回归系数都可以用期望值的差来解释
连续变量和二元变量的交互:可以根据交互项的情况得到不同的回归直线,回归直线的差异可以解释回归系数的意义
两个连续项交互的问题:如果我们同时保留原本的两个量,那么任何一个自变量的单独变换都会从两个系数来影响因变量;联合项的系数体现了两个自变量同时变换的时候的影响大于单独变量两个自变量造成的影响的和的那一部分
可视化解释线性回归
线性回归模型有很多可以进行可视化解释的方法
权重图 (Weight Plot)
权重表的信息 (权重和⽅差估计) 可以在权重图中可视化
为了让他们在坐标轴上有可比性,我们需要先进行标准化再使用该可视化方法
如下图所示

效应图 (Effect Plot)
效应图是另一种可视化方式,我们不需要标准化,而是将线性回归模型的权重与实际特征值相乘;然后我们绘制各个特征效应的Boxplot,放到可比的同一个坐标轴中就是效应图了 
解释单个实例预测
前面介绍的都是解释模型总体,现在我们希望能够解释单个实例的预测,他的预测值为什么很小(很大),研究特征效应就好了。
我们计算这个实例的各个特征的效应,把他们综合的标准在效应图中,谁产生了最主要的效应就一目了然了,如下图, Hum是造成了这个实例偏小的主要原因。

线性回归讨论
从构成 “好的” 解释需要的性质 来看,线性模型并不能创建最佳解释。它们是对⽐性的,但是参照实例是构造的⼀个数据点,其中所有数值特征都为零,分类特征设置为它们的参照类别,这通常是⼀个⼈⼯的、毫⽆意义的实例,不太可能出现在你的真实数据或现实中。
线性回归将预测建模为⼀个加权和,使预测的⽣成变得透明,⽽且可以保证找到最佳权重,还可以得到置信区间,检验和可靠的统计理论
从预测性能角度来说,线性模型通常不是那么好,每一个非线性或交互都必须是人工构成的,并明确地作为输⼊特征提供给模型,这也非常的不方便。
现实世界中的特征纷杂,那些被遗漏的特征与交互作用会大大的影响模型的可解释性。
逻辑回归
基本知识可以参考 Logistic 回归 我们在研究逻辑回归回归的时候就配套的研究了其解释方法 如Logistic 回归中的 OR 系数解释
决策树
决策树是一个非常棒的机器学习算法,对非线性问题和特征交互都有很好的作用,不来谈一谈决策树的解释性那可太没意思了 机器学习导论与监督学习:决策树
解释决策树
可视化决策树
决策树想要被解释最核心的一点就是我们需要知道树本身的形状
各大软件都提供了将一颗普通的决策树写成树状的可视化功能,他是我们理解决策树的解释的基础
解释
解释决策树的模板为
特征重要性
在决策树中,⼀个特征的总体重要性可以⽤以下⽅法计算:遍历使⽤该特征的所有分割,并测量它相对于⽗节点减少了多少⽅差或基尼指数。所有重要性的总和被缩放为 100,这意味着每个重要性可以解释为总体模型重要性的⼀部分。
树分解与单个预测
通过将决策路径分解为每个特征的组成,可以解释决策树的单个预测。我们可以通过树跟踪决策,并通过在每个决策节点上添加的贡献来解释预测。
从根节点的预测均值,每一次划分都会修改预测结果,直到到达叶子结点,公式可以表示为
根据此公式中各个加和项,就可以判断哪一次划分造成了大的影响,同时将各个特征的多次划分加到一起,就可以判断出每个特征对预测贡献多少的解释
决策树讨论
树结构⾮常适合捕获数据中特征之间的交互。 有⼀个自然的可视化,并且有着很好的可解释性
树不能处理线性关系。输⼊特征和结果之间的任何线性关系都必须通过分割来近似,从⽽创建⼀个阶跃函数
树 缺乏平滑度 相当不稳定 过深的树不容易理解
RuleFit
线性回归模型不考虑特征之间的交互作⽤,那么我们希望寻找具有像线性模型⼀样简单且可解释但又集成了特征交互的模型,这就是RuleFit
RuleFit 学习具有原始特征以及许多新特征(决策规则) 的稀疏线性模型,这些新特征捕获了原始特征之间的交互,RuleFit 从决策树⾃动⽣成这些特征,并且可以计算特征重要性
决策规则本身单独也是一种分类算法,只是效果实在堪忧,我们这里仅仅提示一下就足够了
解释方法
由于 RuleFit 最终会估计⼀个线性模型,因此其解释与 “常规” 线性模型的解释相同。唯⼀的区别是该模型具有从决策规则派⽣的新特征。决策规则是⼆进制特征:值为 1 表⽰满⾜规则的所有条件,否则值为 0。
对于 RuleFit 中的线性项,其解释与线性回归模型中的解释相同:如果特征增加⼀个单位,预测结果会随着相应的特征权重⽽变化。(分类项同理) 对于决策特征则应该是 **如果⼀个决策规则 所有条件都适⽤,那么预测结果变化 **
RuleFit 讨论
RuleFit ⾃动将特征交互添加到线性模型。因此,它解决了必须⼿动添加交互作⽤项的线性模型问题,并且对建模⾮线性关系的问题有所帮助。
他是一种非常有效的自动交互的方法,但是只识别那些决策规则交互项,但是他会生成过多交互项,我们需要用LASSO之类的方法进行压缩后才可以使用
有论文声称 RuleFit 的性能很好——接近随机森林的预测性能,不过这点很难被大家承认,如果真的很好那么他就不会这么籍籍无名
RuleFit 过程的最终产物是⼀个具有额外的花哨特征 (决策规则) 的线性模型。而线性模型解释需要保持其他特征不变,决策规则确实很可能发生冲突的,这是非常大的问题
朴素贝叶斯分类器
朴素贝叶斯的解释只需要根据每个特征的分布就可以给出,我们只需要考察条件概率即可 参考机器学习导论与监督学习:贝叶斯分类器 非常容易理解
k-最近邻
我们介绍过k-最近邻方法 机器学习导论与监督学习:k-最近邻 解释k最临近需要参考 本文的“基于样本的解释”部分
模型无关的解释方法
写在开始之前
将解释与机器学习模型分离(= 与模型⽆关的解释⽅法)具有不小的优势,他非常的灵活,我们可是使用任何自己喜欢的模型。于此同时,比较各个模型之间的可解释性也变得容易,因为相同的⽅法可以⽤于任何类型的模型。
模型⽆关的解释⽅法的替代⽅法是仅使⽤可解释模型,他的缺点的非常明显,使用预测性能作为代价的。
可解释模型对机器学习给出了更多的愿景,在传统的机器学习方法中,我们从世界收集数据,用学习方法获得模型,最后用模型来预测。现在我们增加了一层,希望模型做的预测与模型本身可以被人类理解
这样的多层抽象结构可以让我们理解统计学家和机器学习专家在⽅法上的差异。统计⼈员处理数据层,他们跳过⿊盒模型层,然后转到可解释性⽅法层 机器学习专家处理数据层,训练了⿊盒机器学习模型。跳过了可解释性⽅法层,⼈类直接处理了⿊盒模型的预测
当然这样的结构也是一家之言,数据或许来自模拟产生,黑盒模型可能输出并不给人类使用的预测,不过这依旧是一个有趣的观点。
部分依赖图
定义
部分依赖图 (Partial Dependence Plot,简称 PDP 或 PD 图) 显⽰了⼀个或两个特征对机器学习模型的预测结果的边际效应
部分依赖图可以显⽰⽬标和特征之间的线性的、单调的或更复杂的关系,用于回归的部分依赖函数定义为:
是其部分依赖函数应被绘制的特征,是在机器学习模型中使用的其他特征。通常,集合 中只有一个或两个特征。中的特征是我们想要了解其对预测的影响的那些。特征向量和 合并组成总特征空间。
部分依赖性通过在集合中的特征分布上边缘化机器学习模型输出而起作用,因此该函数显示了我们感兴趣的集合中的特征与预测结果之间的关系。通过边缘化其他特征,我们得到了仅依赖于中的特征以及与其他特征的交互作用的函数。
在实际应用中,我们采用MC方法计算部分依赖函数(用MC方法计算积分)
我们大概能从直观的角度分析出这个方法的思想,它实际上就是一种期望
PDP 的⼀个假设是 C 中的特征与S 中的特征不相关。如果违反此假设,则为部分依赖图计算的平均值将包含极不可能或甚⾄不可能的数据点
对于机器学习模型输出概率的分类,部分依赖函数显⽰给定 S 中不同的特征值下特定类别的概率。处理多个类别的⼀种简单⽅法是为每个类别绘制⼀条线或图。
部分依赖图是⼀种全局⽅法:该⽅法考虑所有实例,并给出有关特征与预测结果的全局关系的说明。
对于分类特征,部分依赖很容易计算。我们在方差分析中就经常干这种事情,比较各个组的均值,这就是部分依赖的思想试验设计方法
示例
我们需要用例子来帮助我们理解我们究竟在干什么 采用的数据集为本文的“自行车租赁 (回归)”部分 毕竟这种方法对我们而言较为陌生,需要更多的解释
实际上,特征集 S 通常仅包含⼀个特征或最多包含两个特征,因为⼀个特征产⽣ 2D 图,⽽两个特征产⽣ 3D 图。除此之外的⼀切都⾮常棘⼿。
我们考虑⾃⾏车数量预测模型以及温度、湿度和风速各自的 PDP,如下图 其中横坐标是原始数据及其分布,纵坐标是自行车数量预测
从图中可以看出,对于温暖但不太热的天⽓,该模型预测平均会租⽤⼤量⾃⾏车,超过60的湿度降低了大家租用自行车的欲望,于此同时风速是基本完全负作用的,风速越大越没人骑行
我们再考虑一个分类变量的PDF问题 考虑季节特征对预测⾃⾏车租⽤的影响,如下图
我们发现, 所有季节都对模型预测产⽣相似的影响,仅在春季,模型预测的⾃⾏车租量会减少。这张图和方差分析的图形绘制有区别,本图只关注了均值,方差分析往往会用Boxplot研究大致分布
PDP里只考虑均值和合理的,因为对于回归问题,很多模型是不能输出方差的估计的
我们给出另一个同时可视化两个特征的部分依赖关系的例子,他使用颜色图作为值的区分方法,采用了某种离散方法辅助绘图
容易看出,在Age偏向30-40之间 Num越大的时候,预测的概率值越大
优点
- 部分依赖图的计算很直观,⾮专业⼈⼠通常会很快理解 PDP 的概念
- 部分依赖图非常容易解释,只需要简单的读图能力和一两个例子就能很快的学会
- 部分依赖图很容易实现
- 部分依赖图的计算具有因果关系
缺点
- 部分依赖函数中实际的最大特征数量为 2 这是因为二维的介质和我们的无法想象高维空间的问题
- ⼀些 PD 图未显⽰特征分布 强烈建议使用 RUG (x 轴上的数据点指⽰器)或者直方图来帮助我们理解特征分布。缺少特征分布指示的PD图很可能让我们错误的解读一些压根没有样本的无端预测
- 独立性的假设是 PD 图最⼤的问题,我们后面会考虑处理这个问题
- 异质效应可能被隐藏,因为 PD 曲线仅显⽰平均边际效应。
异质效应:假设对于⼀个特征,你的数据点中的⼀半与预测具有正相关关系——特征值越⼤,预测值越⼤——另⼀半有负相关性——特征值越⼩,预测值越⼤。PD 曲线可能是⼀条⽔平线,因为数据集的两半的效果可能会相互抵消。然后,你可以得出结论,该特征对预测没有影响。这是因为某个其他变量在交互导致的,绘制个体的曲线可以帮助我们发现这个问题
个体条件期望
定义
个体条件期望 (Individual Conditional Expectation,简称 ICE) 图为每个实例显⽰⼀条线,该线显⽰了特征更改时实例的预测如何改变。
特征平均效应的部分依赖图是⼀种全局⽅法,因为它不关注特定实例,⽽是关注整体平均。等价于单个数据实例的 PDP 称为个体条件期望 (ICE) 图。PDP 是 ICE 图的线的平均值
保持所有其他特征相同,通过⽤⽹格中的值替换特征的值创建该实例的变体并使⽤⿊盒模型对这些新创建的实例进⾏预测。结果是⼀组具有来⾃⽹格的特征值和相应预测的点。把它连成线就是我们想要的ICE图
ICE诞生的目的就是处理部分依赖图可能会掩盖由交互作⽤创建的异构关系的问题,当存在交互的时候,ICE图比PDP更加的合理。
ICE图的正式定义为:
示例
我们还是用例子来帮助我们理解ICE图的含义和用法 使用的数据集为本文的“宫颈癌的危险因素 (分类)”部分 使用的模型预测给出分类的概率而不是01指标 ICE图如下图所示
能看出,年龄效应遵循 50 岁时平均增加的趋势(大部分人的趋势),对于少数在年轻时具有较⾼预测概率的个体,预测的癌症概率不会随年龄变化太⼤。
基本上遵循着相同的规律,这意味着ICE图和PDP图基本反应了相同的趋势
优点
与部分依赖图相⽐,个体条件期望曲线更直观,⼀条线代表⼀个实例的预测
ICE 曲线可以揭示异质关系
缺点
ICE 曲线只能有意义地显示一个特征,这还是因为平面介质和人类想象能力的不足
如果绘制了许多 ICE 曲线,该图可能会过于拥挤,将看不到任何东西,一般建议增加一些透明度然后进行叠加。
在 ICE 绘图中,很难看到平均值,建议和PDP混合使用
ICE能够帮助我们识别存在交互作用,但是依旧无法对交互进行良好的解释,如果感兴趣的特征与其他特征相关联,那么线中的某些点可能是无效的数据点
累积局部效应图
思想
累积局部效应 (Accumulated Local Effects Plot) 描述了特征平均如何影响机器学习模型的预测。ALE 图是部分依赖图 (PDP) 的更快、更⽆偏的替代⽅法。两种⽅法都有相同的⽬标
我们知道,如果机器学习模型的特征相关,则部分依赖图将不可信,我们实际上在PDP中生成了一些完全不切实际的样本(让特征取目标值,其他特征取遍了已有的实例),他们在真实的应用中不可能存在,但是我们假装一切正常
我们如何做才能得到尊重特征相关性的特征效应估计?我们可以对特征的条件分布求平均值,即在 的⽹格值处,对 值类似的实例的预测求平均值。 这种方法被我们称为边际图 (Marginal Plot) 或 M 图
但是,M图也不是完美的,M 图避免了对不太可能出现的数据实例的平均预测,但是它们将特征的效应与所有相关特征的效应混合在⼀起。也就是哪怕某个特征对目标本身没有影响,但是他和一个有影响的特征的相关性会被体现为他产生的影响
因此,我们引出了ALE图,ALE 图通过基于特征的条件分布来计算预测差异⽽不是平均值,也就是说,ALE 图展⽰该窗口中数据实例的模型预测如何在围绕 的特征 的⼀个⼩的 “窗口”中的变化
我们利用小窗口作差来避免对相关特征的吸收,本质上是使用作差技术减除了那个相关特征产生的影响
一般不使用M图,不妨现在就把它忘掉,记住有ALE就可以了,ALE处理了交互问题
估计
我们现在只是知道了ALE图的想法,但是就具体的方法还需要具体的解释
单个特征的ALE
首先,我们可以计算非中心化的单个特征的ALE
我们知道,ALE的思想是计算预测差异,因此我们的 是真正感兴趣的特征,我们划分区间,最后计算了此间隔的预测平均差
将效应中⼼化,平均效应为零有
中心化以后,ALE 值可以解释为某⼀特定值下特征的主要效应
一般把特征分布的分位数⽤作定义间隔的⽹格。使⽤分位数可确保每个间隔中有相同数量的数据实例。分位数的缺点是间隔的长度可能⾮常不同。如果感兴趣的特征⾮常偏斜 (例如,许多低值⽽只有少数⾮常⾼的值),则这可能会导致某些 ALE 图出现异常。
两个特征交互作用的ALE
ALE 图还可以显⽰两个特征的交互作⽤。计算原理与单个特征相同,但是我们使⽤矩形单元⽽不是间隔。我们省略计算过于复杂的公式,用一张图来直观的体现,如下
我们本质上需要计算每个网格单元内部所有实例的⼆阶差
由于两个特征的 ALE 估计仅显⽰特征的⼆阶效应,因此需要特别注意解释。⼆阶效应是在考虑了特征的主要效应之后,特征的附加的交互效应。
假设两个特征不交互,但是每个特征对预测结果具有线性效应。在每个特征的⼀维 ALE 图中,我们将看到⼀条直线作为估计的 ALE 曲线。
但是,当我们绘制 2D ALE 估计时,它们应该接近于零,因为⼆阶效应只是附加的交互效应。ALE 图和 PD 图在这⽅⾯有所不同:PDP 始终显⽰总效应,ALE 图显⽰⼀阶或⼆阶效应。
分类特征的ALE图比较复杂,需要人为的规定一种距离,我们在遇到的时候简单介绍结果的分析方法,省略理论介绍
示例
我们还是用例子来帮助我们理解ALE图怎么使用,使用本文的“自行车租赁 (回归)”部分数据集来帮助我们解释
使用ALE一般都只使用中心化后的ALE,如果我们怀疑存在特征相关作用,就应该考虑使用ALE图
基于温度,湿度和风速的⾃⾏车预测模型的 ALE 图如下

在修正了哪些不可能存在的异常样本与相关性后 ALE图是比PDP和ICE更值得参考的绘图方式,至于相关性,考虑相关系数是最好的选择了。
解读ALE非常的自然,和PDP是同一种解读方法
分类变量的ALE图如下
我们就当是PDP图也可以给出一样的解释,只是ALE自带中心化效果
我们考虑湿度和温度对所租⾃⾏车预测数量的⼆阶效应,注意,他不包括主要效应,只考虑交互效应的问题 ALE如下
能看出 炎热和潮湿的天⽓增加了预测。在寒冷和潮湿的天⽓中,还会对预测的⾃⾏车数量产⽣负效应
湿度和温度的主要效应都说明在⾮常炎热和潮湿的天⽓中,预测的⾃⾏车数量会减少。因此,在炎热和潮湿的天⽓中,温度和湿度的综合效应不是主要效应的总和,⽽是⼤于总和,此时我们不妨考虑二阶的PDP来体现综合效应

优点
ALE 图是无偏的,这意味着在特征相关时它们仍然有效。而PDP是失效的
ALE 绘图的计算速度比 PDP 更快
ALE 图的解释很清楚:在给定值的条件下,可以从 ALE 图中读取更改特征对预测的相对影响。
ALE 图以 0 为中心。这使它们的解释更好,因为 ALE 曲线每个点的值都是与平均预测之差。
2D ALE 绘图仅显示交互作用:如果两个特征不交互,则图不显⽰任何内容。
在⼤多数情况下,建议使用 ALE 图而不是 PDP 图,因为特征通常在某种程度上相关。
缺点
ALE 图可能会变得有些不稳定 (许多⼩起伏,尤其是二阶ALE),间隔很多,这一般是因为间隔设置的问题,如果数量太⼩,则 ALE 图可能不太准确。如果数量太⼤,曲线可能会变得不稳定,这个问题目前无法解决
ALE 图不附带 ICE 曲线,不能处理单个预测的问题,异质性让人头大
二阶效应图解释起来有点烦人,因为你始终必须牢记主要效应,像PDP一样将主要效应整合到图中更有意义。
即使 ALE 图在相关特征的情况下没有偏差,但当特征强相关时,解释仍然困难。 我们的作差已经无法消除那些效应了
特征交互
定义
特征交互 (Feature Interaction) :当特征在预测模型中交互时,预测不能表⽰为特征效应的总和,因为⼀个特征的效应取决于另⼀特征的值。亚⾥⼠多德的 “整体⼤于部分之和” 适⽤于存在交互作⽤的情况。
PDP完全无法处理交互效应下的问题,ICE能够让我们从直观的角度观察交互效应,但是很难仔细解释,ALE处理了相关特征问题,同时对二阶的交互作用进行了一些探讨,遗憾的是,他们都是不足的。
我们在研究PDP,ALE,ICE都饱受特征交互的折磨,现在我们开始着手研究这个问题
如果机器学习模型基于两个特征进⾏预测,则可以将预测分解为四项:常量项,第⼀个特征项,第⼆个特征项以及两个特征间的交互项。 两个特征间的交互项是在考虑单⼀特征效应后通过改变特征⽽发⽣的预测变化。 也就是各个特征对最终预测值的影响不再是独立的
估计交互强度的⼀种⽅法是衡量预测的变化在多⼤程度上取决于特征的交互作⽤。这项衡量称为 统计量
弗里德曼的 H 统计量
我们将处理两种情况:⾸先,采⽤双向交互度量,它告诉我们模型中的两个特征是否交互以及在何种程度上交互;其次,是⼀个总体交互度量,它告诉我们某个特征在模型中是否与所有其他特征发⽣交互以及在何种程度上的交互。
如果两个特征不交互,我们可以按如下⽅式分解部分依赖函数(Partial Dependence Function)假设PDF已经是中心化的
也就是两个特征的双向部分依赖函数直接是单个特征的部分依赖函数的和
如果⼀个特征与任何其他特征都没有交互,则可以将整个预测函数按照如下形式分解,分解为非交互特征和其他特征的部分依赖函数的和
据此我们提出了特征 和 之间的交互作⽤提出的 统计量为:
这同样适⽤于度量特征 是否与任何其他特征交互:
如果完全没有交互,则统计量为 0, 如果两个特征之间的交互统计为 1 表⽰每个 PD 函数都是常数,并且对预测的效应仅来⾃交互。
统计量的评估成本很⾼ 假设数据点个数为 则需要调用 次以上的预测函数,我们可以采用原始数据点采样的方式降低性能开销,但是会导致统计量的不稳定示例
让我们看看在实践中交互特征是什么样的 同时用 本文的“自行车租赁 (回归)”部分 本文的“宫颈癌的危险因素 (分类)”部分 来进行解释
我们测量SVM模型在回归问题中的特征的交互强度
预测⾃⾏车租赁的⽀持向量机的每个特征与所有其他特征的交互强度 (H 统计量)如上图所示。总体⽽⾔,特征之间的交互作⽤⾮常弱 (低于每个特征解释的⽅差的 10%)。
再考虑分类问题,使用RF模型来进行预测
有不少指标都有着不少的交互强度,比如HC和NUM。都达到了解释方差的超过百分之三十
在查看了每个特征与所有其他特征的特征交互之后,我们可以选择其中⼀个特征,然后更深⼊地研究所选特征与其他特征之间的所有双向交互。我们以分类问题的NUM为例
能看出NUM和Age有着非常强的交互,这就是我们给出的分析结果
优点
交互作⽤ 统计量通过部分依赖分解具有理论基础。
统计量具有**有意义的解释**:交互作⽤定义为由交互作⽤解释的⽅差份额。由于统计信息是无量纲的,并且总是在 0 和 1 之间,因此它在各个特征甚⾄模型之间都具有可⽐性。
统计信息会检测各种类型的交互,⽆论它们的特殊形式如何。
使⽤ H 统计量,还可以分析任意更高阶的交互作用,例如 3 个或更多特征之间的交互作⽤强度。
缺点
交互 H 统计量需要花费很长时间进⾏计算,因为它的计算量很大。
该计算涉及估计边际分布。如果我们不使⽤所有数据点,则这些估计值也存在一定差异。这意味着,当我们对点进⾏采样时,估算值也因运⾏⽽异,结果可能会不稳定。我建议重复⼏次 H 统计量计算,以查看是否有⾜够的数据来获得稳定的结果。
无法判断交互作⽤是否显着⼤于 0 与此同时尚无理论可以帮助我们 处理这个问题,同时很难说 H 统计量何时⾜够⼤以⾄于我们认为交互 “强”。也就是说是否认为是较强的交互全凭经验
只能判断交互的强度,对于更加细致的分析无能为力,需要回到使用二维PDP或者ICE分析
不适用于计算机视觉问题,因为无法处理任何图像(以像素形式输入)
太强的相关性会导致该方法失效 这点和本文的“累积局部效应图”部分是一样的
置换特征重要性
定义
置换特征重要性 (Permutation Feature Importance) 衡量了我们对特征值进⾏置换后模型预测误差的增加,这打破了特征与真实结果之间的关系。
其算法的思想如下
训练模型,特征矩阵 ,目标向量,误差度量估计原始模型误差 (例如均方误差) 特征 to 通过置换数据中的特征生成特征矩阵。
这破坏了特征与真实结果之间的关联基于置换数据的预测,估计误差计算置换特征重要性。或者,可以使用差异:按降序对特征进行排序,其中作比的置换特征重要性是最常用的
使用训练数据还是测试数据的重要性
目前还没有任何研究能够完全的回答这个问题;
对于选取训练数据的情况,过拟合会严重影响我们对模型误差的正确思考,导致最后的特征重要性判断是无效的;基于训练数据的特征重要性使我们错误地认为特征对于预测很重要,⽽实际上模型只是过拟合⽽特征根本不重要。
对于选取测试数据的情况:如果使用全部的数据来训练模型,则意味着没有可供使用的测试数据,因此我们提出了交叉验证来处理这个问题,但是这意味着特征重要性是在表现不同的数据子集上计算的
因此,如果我们选择训练数据计算特征重要性,则意味着我们希望知道模型在多⼤程度上依赖于每个特征来进⾏预测;对应的,测试数据意味着我们希望在研究该特征在多⼤程度上有助于模型在未知数据上的性能。
我们无法给出确切的结论,还需要更多的经验与相关的研究来帮助我们思考
示例
将模型误差增加为 1 倍 (= ⽆变化) 的特征表⽰对于宫颈癌的预测并不重要,我们选取 本文的“自行车租赁 (回归)”部分 本文的“宫颈癌的危险因素 (分类)”部分 两个数据集来讨论我们的问题
对于分类问题有
对于回归问题有
读图基本上没有什么值得被解释的了
优点
很好的解释性:特征重要性是当特征信息被破坏时模型误差的增加。
在不同问题之间,特征重要性度量是可比较的(前提是我们使用比值)
置换特征重要性会⾃动考虑与其他特征的所有交互
置换特征重要性不需要重新训练模型,大大减少了运算开销
缺点
我们不知道选取训练数据还是测试数据来确定特征重要性 本文的“使用训练数据还是测试数据的重要性”部分
我们需要真实的样本,那些真实的用于训练模型的有标记的样本
如果特征是相关的,则置换特征重要性可能会因不切实际的数据实例而有偏差 也就是这个方法仍然无法处理强相关性的问题,这到现在已经是第三个无法处理相关的模型来
全局代理模型
定义
现在我们终于到讨论代理模型的时候了,我们希望创建一个可解释的模型,让他训练后可以近似于黑箱的预测,然后通过解释代理模型来处理机器学习的可解释性
理解代理模型实际上并不需要太多理论。我们希望在 可解释的约束下,代理模型预测函数 尽可能接近地逼近我们的⿊盒预测函数 。对于函数 ,可以使⽤任何本文的“可解释的模型”部分
衡量代理复制⿊盒模型的能⼒的⼀种⽅法是 R方 公式为
在线性回归的时候,我们也研究过R方的问题 线性回归基础中的 R 方 在那里我们提到了R方没有对应的实际意义,但是对于代理模型的问题,R⽅可以解释为代理模型捕获的⽅差百分⽐,也就是代理模型解释黑箱的能力
我们这里不讨论黑箱的性能,事实上如果其性能不好,那么代理模型的解释就变得⽆关紧要了,没人想用一个性能不好的模型
全局代理问题只是训练了一个新的可解释模型,我们这里不浪费笔墨重新复习了
优点
代理模型⽅法非常灵活,我们可以换新的黑箱模型或者更换新的解释模型,完全可以交给多个团队并行进行
使⽤ R方,我们可以轻松地测量我们的代理模型在逼近⿊盒预测⽅⾯的表现
缺点
得出的是有关模型而不是数据的结论,因为代理模型永远看不到实际结果。
尚不清楚 R方的最佳截止点是什么,和线性回归中的这点一样
对于数据集的一个子集,可解释模型可能非常接近,而对于另一子集,则可能发生很大差异。在这种情况下,对于所有数据点,对简单模型的解释将不尽相同。因此应该考虑局部效应的问题
可解释的代理模型本身的所有优点和缺点
局部代理模型LIME
定义
局部代理模型 (Local interpretable model-agnostic explanations,LIME)本⾝是可解释的模型,⽤于解释⿊盒机器学习模型的单个实例预测
LIME(Local Interpretable Model-agnostic Explanations)的核心思想是:对于任何复杂的黑盒模型(Black-box Model),我们虽然很难从全局去理解它的决策边界,但可以在某个具体的输入样本局部(Local),用一个简单的、自带解释性的模型(如线性回归或决策树)来逼近和拟合黑盒模型的行为。
所学习的模型应该是机器学习模型局部预测的良好近似,但不⼀定是良好的全局近似,去近似一个局部自然要比近似全局更加的轻松。
数学上的解释
LIME 的目标是优化以下目标函数:
- :我们需要解释的具体输入样本。
- :待解释的黑盒模型(如随机森林、深度神经网络)。
- :解释模型(通常属于简单模型族 ,如线性模型)。
- :局部邻近度度量(Proximity Measure),定义了在样本 附近的其他样本的权重(距离 越近,权重越大)。
- :保真度损失(Fidelity Loss),衡量在 的局部邻域内, 拟合 预测结果的误差。
- :复杂度惩罚项(Complexity),为了保证解释性,我们需要限制 的复杂度(例如限制线性模型的非零特征数量)。
实验与实现机制:
- 扰动(Perturbation): 对输入 进行微小的扰动(例如,如果是文本,就随机丢弃一些单词;如果是图像,就遮挡一些超像素块),生成一批新的样本。
- 黑盒预测: 将这些新样本输入黑盒模型 ,获取预测概率。
- 加权训练: 根据扰动样本与原样本 的距离 计算权重,然后用这些数据训练一个带有正则化 的白盒模型 。
- 提取解释: 白盒模型 的权重或结构即为对 预测结果的局部解释。
数据的样本扰动
我们提到了,LIME 需要通过扰动在一个实例的基础上生成一个数据集,我们这里介绍扰动的方法
对于结构化数据 基本的扰动如下图所示
第一个是原始的预测图,第二张是在感兴趣的实例上生成了一些正态采样的点,第三个是根据距离为点分配了权重,第四个则是局部学习方法
在点周围定义有意义的邻域⾮常困难。当前 LIME 使⽤指数平滑核来定义邻域,但是核参数的调节也有着很多可能,都会影响结果但是没有确定的方法可以帮助我们确定
下面就是一个例子,我们使用了特征效应:权重乘以实际特征值,来评判这个特征的局部效果

优点
其优点和全局代理模型基本一致;
当使用LASSO或者短的决策树的时候,解释将会是简单有效的
缺点
当对表格式数据使⽤ LIME 时,正确定义邻域是⼀个很⼤的未解决的问题
SHAP:从方法地图进入专题文章
SHAP(SHapley Additive exPlanations)使用 Shapley 值解释某个预测相对于基准值的特征贡献。它可以提供局部归因,也能把多个样本的归因汇总成全局重要性、概要图和依赖图。TreeSHAP 针对树模型提供高效算法,KernelSHAP 则以模型无关的方式近似计算。
它适合回答“模型为什么给出这个预测”,但不能把相关性解释成现实世界的因果关系。背景数据、特征相关性和“特征缺失”的定义都会改变结果;同一模型换一组基准样本,解释也可能不同。
完整的 Shapley 推导、KernelSHAP、TreeSHAP、DeepSHAP、GradientSHAP、背景数据选择和工程误区已经整理到《Shapley 与 SHAP——模型解释性的 SOTA 工具》。这里不再重复,只把 SHAP 保留在可解释方法地图中。
基于样本的解释
什么是基于样本的解释
基于样本的解释⽅法 (Example-based Explanations) 选择数据集的特定实例来解释机器学习模型的⾏为或解释底层数据分布,他不是解释某个实例
基于样本的解释⼤多与模型⽆关,与模型⽆关的⽅法的不同之处在于,基于样本的⽅法通过选择数据集的实例⽽不是通过创建特征概要 (例如特征重要性或部分依赖性) 来解释模型。
只有当我们可以以⼈类可以理解的⽅式表⽰数据实例时,基于样本的解释才有意义。这对于图像⾮常有效。
我们随便举一个基于样本解释的例子
⼀只⼩猫坐在⼀个失⽕的⽆⼈居住的房⼦的窗台上。消防部门已经到达,其中⼀名消防队员正在考虑他是否可以冒险进⼊⼤楼救⼩猫。他还记得⾃⼰当消防员时遇到的类似情况:缓慢燃烧了⼀段时间的⽼⽊屋往往不稳定,最终倒塌。由于这种情况的相似性,他决定不进⼊,因为房屋倒塌的风险太⼤。
也就是我们希望模型像人类一样思考(起码在解释层面是这样的):事物 B 与事物 A 类似,事物 A 导致 Y,因此我预测事物 B 也将引起 Y
反事实解释
定义
反事实解释 (Counterfactual Explanations) 按以下形式描述了⼀种因果关系:“如果没有发⽣X,那么 Y 就不会发⽣”,思考反事实需要想象⼀个与所观察到的事实相⽭盾的假设现实 ,反事实是人类思考经常使用的方法
模型的反事实解释描述了将预测更改为预定义输出(反事实)时特征值的最小变化,比如我想希望改变贷款被拒的事实需要每年多赚1w元,或者我们想提高自己房屋的租金则需要扩大房屋的面积
反事实是对⼈类友好的解释,因为它们与当前实例形成对⽐,并且它们是选择性的,这意味着它们通常专注于少量特征更改。
但是反事实却遭受 “罗⽣门效应” 的困扰。反事实解释的不唯一性值得我们单独考虑,可以通过报告所有反事实解释或通过制定标准评估反事实并选择最佳的反事实来解决这个多重反事实问题。
我们一般要求反事实满足
- 反事实实例应尽可能紧密地产生预定义的预测,也就是不要一次改变太大的目标值,比如分类概率和回归预测值
- 反事实应该与特征值实例尽可能相似,这样可以尽可能少的改变特征值
- 反事实实例应具有可能的特征值,那些完全违背现实的反事实解释没什么意义
生成反事实解释
⼀种简单的产⽣反事实解释的⽅法是通过反复试验进⾏搜索,但是这也太蠢了,因此我们一般会使用一些损失优化的方法实现反事实解释的生成
Wachter 等⼈建议尽量减少以下损失
第一项是预测与期望结果的平方举例,第二项是实例与反事实之间的距离, 是用于混合两个效应的系数,越大意味着我们希望有更加接近预测的反事实,越小意味着我们希望尽可能少的改变特征值
在习惯性上,我们使用MAD的变形作为后面的一个距离
至于反事实的示例,非常易于人类理解 这里就不介绍了
优点
反事实解释的解释很清楚,非常易于人类理解
反事实方法不需要访问数据或模型。它只需要访问模型的预测函数
该⽅法还适用于不使用机器学习的系统。我们可以为接收输⼊并返回输出的任何系统创建反事实。
反事实解释⽅法相对容易实现,因为它本质上是⼀种损失函数,可以使⽤标准优化程序库进⾏优化。
缺点
反事实解释⽅法相对容易实现,因为它本质上是⼀种损失函数,可以使⽤标准优化程序库进⾏优化。
不能很好地处理具有许多不同级别的分类特征。该⽅法的作者建议针对分类特征的特征值的每种组合分别运⾏该⽅法,但是如果你拥有多个具有多个值的分类特征,这将导致组合爆炸。
对抗样本
定义
对抗样本 (Adversarial Examples) 是指当对⼀个样本的某⼀个特征值作出⼀个微⼩的变化⽽使得整个模型作出⼀个错误的预测。这和反事实解释非常的相似,对抗样本是反事实实例,旨在欺骗模型⽽不是解释模型。
比如:机器学习的扫描仪在机场扫描⾏李箱。为了避免被发现,⼈们发明了⼀种⼑具,让系统认为它是⼀把⾬伞。
方法和示例
本节中的⽅法重点在于具有深度神经⽹络的图像分类器,因为在该领域已进⾏了⼤量研究,⽽对抗图像的可视化具有很强的教育意义。
图像的对抗样本是带有故意扰动像素的图像,⽬的是在应⽤期间欺骗模型。这些样本令⼈印象深刻地表明,⼈眼来看⽆害的图像可以多么容易地欺骗⽤于⽬标识别的深度神经⽹络,对于⼈类观察者来说,预测的变化是⽆法理解的。对抗样本对机器⽽⾔就像光学幻像。
由于对抗样本主要集中在CV领域,这里不再进行过多的介绍
有影响力的实例
机器学习模型最终是训练数据的产物,删除其中⼀个训练实例可能会影响⽣成的模型。当训练实例从训练数据中删除后,会⼤⼤改变模型的参数或预测,因此我们将这个实例称为 “有影响⼒的”。通过识别有影响⼒的训练实例,我们可以 “调试” 机器学习模型,并更好地解释它们的⾏为和预测。
在这一小节中,我们不会将模型视为固定模型,⽽是将其视为训练数据的函数。有影响⼒的实例可以帮助我们回答有关全局模型⾏为和单个预测的问题
异常值与有影响力的实例
⼀个异常值 (Outlier,也称离群值) 是远离数据集中其他实例的⼀个实例,当异常值影响模型时,它也是有影响⼒的实例。
有影响⼒的实例是数据实例,其删除对训练模型有很⼤影响。在从训练数据中删除特定实例后对模型进⾏重新训练时,模型参数或预测变化越⼤,该实例的影响⼒就越⼤。
删除诊断
那些删除以后对模型很大影响的的实例一般被认为是有影响的
DFBETA评估了删除某个实例以后模型的系数变换 数学公式为 Cook 距离可以评估他对模型整体预测性能的影响,但是只被用于LM和GLM模型 广义线性回归中的 Cook 距离
可以将对模型预测影响的最简单的影响⼒度量写为:
这是可以非常普遍使用的格式
影响函数
有时候我们不想训练那么多模型,尤其是模型很复杂的时候,训练模型是一件非常耗时的事情
因此,如果具有⼀个损失函数的模型,该模型的参数具有⼆阶导数,我们可以考虑使⽤影响函数 (Influence Functions) 来估计实例对模型参数和预测的影响⼒
影响函数的⽅法需要获得与模型参数相关的损失梯度,这仅适⽤于机器学习模型的⼦集,所有基于树的模型都不可用,不过神经网络是可用的,这是一个好消息
优点
对有影响⼒的实例的研究强调了训练数据在学习过程中的作⽤。这使影响函数和删除诊断成为机器学习模型的最佳调试工具之一
删除诊断是模型无关的
缺点
删除诊断的计算非常昂贵,因为它们需要重新训练。但是算力的发展速度远超大家想象,不妨给他一点时间
影响函数是删除诊断的⼀种很好的替代⽅法,但仅适用于参数可微的模型
影响函数仅仅是近似的,因为该⽅法在参数周围⼆次展开。近似值可能是错误的
有影响⼒或没有影响⼒的影响⼒度量没有明确的截止点
影响⼒度量仅考虑单个实例的删除,⽽不是⼀次删除多个实例。数据实例的组可能具有⼀些交互,但是,处理交互,我们的算力需求是指数增加的
未来
预测的前提
“预测” 基于三个前提
- 数字化:任何 (有趣的) 信息都将被数字化
- 自动化:当一个任务可以被自动化,并且自动化的成本低于一段时间内执行该任务的成本时,该任务将被自动化。
- 不完善的⽬标规范:我们不可能完美地指定一个有所限制的目标。
数字化是一定会进行的,自动化将会和不完善的⽬标规范之间发生矛盾,因此我们很难训练得到一个完全自动的完美实现我们的目标的模型。
这种冲突部分是由解释⽅法来调解的
一个小故事
2030 年:瑞士的医学实验室
“这绝对不是最糟糕的死亡⽅式!” Tom 总结说,试图在这场悲剧中找到积极的东西。他从静脉输液架上拆下了泵。
Lena 补充说:“他只是因为错误的原因死了。”
“当然还有错⽤的吗啡泵!为我们增⼤了⼯作量!” Tom ⼀边拧下泵的后板⼀边抱怨。卸下所有螺钉后,他把盘⼦举起放在⼀边。他将电缆插⼊诊断端口。
“你不只是抱怨⼯作,是吗?” Lena 笑了笑。
“当然不是。从未!” 他⽤讽刺的语⽓惊呼。
他启动了泵的计算机。
Lena 将电缆的另⼀端插⼊平板电脑。“好的,诊断程序正在运⾏。” 她说,“我真的很好奇出了什么问题。”
“它确实为我们的 John Doe 注射了 Nirvana。那吗啡浓度很⾼。伙计,我是说…这是第⼀次,对吧?通常情况下,⼀个坏泵只会散发出很少的甜味或者没有味道。但是永远不会,像那疯狂的注射。”Tom 解释道。
“我知道。你不必说服我……嘿,看那个。” Lena 举起她的平板电脑。“你看到这个峰值了吗?这就是⽌痛药的功效。看!这条线显⽰参照⽔平。这个可怜的家伙在他的⾎液系统中混合了多种⽌痛药,可以杀死他 17 次以上。在这⾥由我们的泵注⼊。然后在这⾥……” 她轻扫,“在这⾥你可以看到病⼈死亡的那⼀刻。
“那么,你知道发⽣什么了吗,⽼板?” Tom 问他的上司。
“嗯……传感器似乎很好。⼼率,氧⽓⽔平,葡萄糖等……数据已按预期收集。⾎液氧数据中有些缺失值,但这并不罕见。看这⾥,传感器还检测出了吗啡衍⽣物和其他⽌痛药引起的病⼈⼼律减慢和⽪质醇⽔平降低。” 她继续浏览诊断报告。
Tom 着迷地盯着屏幕。这是他对真实设备故障的⾸次调查。
“好,这是我们的第⼀个难题。系统未能向医院的通信信道发送警告。警告已触发,但应急⽅案未响应。这可能是我们的错,但也可能是医院的错。请将⽇志发送给 IT 团队。”Lena 对 Tom 说。
Tom 点了点头,眼睛仍然盯着屏幕。
Lena 继续说:“这很奇怪。该警告也应该导致泵关闭。但是它显然没有这样做,那⼀定是个错误。质量团队错过了⼀些东西。真的很糟糕。也许与应急⽅案有关。”
“因此,泵的应急系统不知何故发⽣了故障,但是为什么泵如此疯狂并向 John Doe 注⼊了很多⽌痛药?” Tom 想知道。
“好问题。你是对的。除了应急紧急故障之外,泵根本不应该使⽤那么多的药物。鉴于⽪质醇和其他警告信号的低⽔平,该算法应该早点停⽌。”Lena 解释说。
“也许有些不幸,⽐如百万分之⼀,就像被闪电击中⼀样?” Tom 问她。
“不,Tom。如果你阅读了我发给你的⽂档,你就会知道这个泵⾸先是在动物实验中测试的,然后是在⼈类⾝上测试的,以学习根据感觉输⼊来注射完美数量的⽌痛药。泵的算法可能是不透明且复杂的,但不是随机的。 这意味着在相同情况下,泵将再次以完全相同的⽅式运⾏,我们的病⼈会再次死亡。感觉输⼊的组合或不希望有的交互作⽤必定已经触发了泵的错误⾏为。这就是为什么我们必须深⼊挖掘,找出这⾥发⽣的事情。”Lena 解释说。
“我明⽩了……”Tom 迷惑地回答,“病⼈不是很快就会死吗?因为癌症什么的。”
Lena 在阅读分析报告时点了点头。
Tom 起⾝去窗前。他向外看,⽬光注视着远处的某个点。“也许,这台机器使他摆脱了痛苦,帮了他⼀个忙,不再受苦。也许它只是做了正确的事,就像闪电,但是,你知道,⼀个好闪电。我的意思是就像彩票,但不是随机的。但出于某种原因。如果我是泵,我也会做同样的事情。”
她终于抬起头看着他。
他⼀直在看外⾯的东西。
他们都沉默了⽚刻。
Lena 再次低下头,继续分析。“不,Tom。这是⼀个错误……只是该死的错误。”
模型可解释性的意义
根据前面的故事我们知道可解释性的一个重要意义 ,当模型的结果对现实世界产生重大影响,也就是AI的重大安全问题,此时可解释性非常重要,我们不希望一个黑箱模型来对整个社会造成巨大的损害.
除此以外,当人需要和模型交互的时候 ,解释性也存在价值,比较相关的研究可能更多的侧重于生成式模型而非本章节主要讨论的预测式模型,知道为什么生成出这样的结果将会指导我们根据解释性去调整下一阶段的生成.
机器学习的未来
讨论可解释机器学习的未来,先要讨论机器学习的未来
- 机器学习将缓慢而稳定地增长
- 机器学习将推动很多事情
- 可解释性工具促进了机器学习的采用和研究
可解释性的未来
- 重点将放在与模型无关的可解释性工具上
- 机器学习将是自动化的,并具有可解释性
- 数据科学家将使自己自动化,程序会自我解释(和前者一样)
- Title: Interpretable Machine Learning: Model Explanations, SHAP, and Counterfactual Methods
- Author: Hyacehila
- Created at : 2024-05-23 15:00:06
- Link: https://hyacehila.github.io//blog/2024/05/23/interpretable-machine-learning-notes/
- License: This work is licensed under CC BY-NC-SA 4.0.