译文|LIME-分类器预测结果的解释
《Looking beyond accuracy to improve trust in machine learning》(2018-1-19)
https://blog.codecentric.de/en/2018/01/look-beyond-accuracy-improve-trust-machine-learning/?utm_content=65461834&utm_medium=social&utm_source=twitter
看到了一篇介绍LIME方法的,该方法来源于2016年的一篇论文,用于对任何分类器的预测进行解释,该论文入选2016年KDD(数据挖掘顶级会议),已经有了python和R版本的LIME方法的开源项目。
传统机器学习流程非常看重模型训练和优化,我们常用准确率或错误率作为模型表现的评价指标,只要一个模型在这些评价标准下超过了某一阈值,就认为模型可以拿去发布了。但是我们常常忽略为什么一个模型做出这样的预测。而对模型的理解和解释在提高模型质量、增加我们对模型的信任、增加模型透明度、减少偏差等方面都非常重要。由于复杂的机器学习模型都像黑箱一样,太过复杂而难以理解,我们需要用近似的思想来探究模型内部是如何运作的。一个方法是LIME(Local Interpretable Model-agnostic Explanations),这是用来理解复杂机器模型做出决策的方法的一个工具。
机器学习中的准确率和错误率
通常来说,一个机器学习流程包括下面几个步骤:收集数据、清洗数据、训练模型、基于验证或测试错误或其他评价指标选择最好的模型。一般看重数字的数据科学家或统计学家喜欢比较小的错误率和比较高的准确率,且常常止步于此,宣称我们获得了一个在测试集上有99%精度的模型。模型有很好的表现,我们就会高兴地把模型展示给同事、团队领导、决策者或者其他对我们伟大模型感兴趣的人。最终,我们把模型做成产品,因为它之前的良好表现,我们认为这个模型值得相信,但是我们不知道为什么它能表现这么好。
机器学习中,我们经常会面临准确率和模型复杂度之间的权衡,但一个模型越复杂就越难以解释。一个简单的线性回归非常好解释,因为它只考虑了自变量与因变量之间的线性相关关系,但是也正因为如此,它无法处理更复杂的关系,模型在测试集上的预测精度也更有可能比较低。而深度神经网络处于另一个极端,因为它们能够在多个层次进行抽象推断,所以他们可以处理因变量与自变量之间非常复杂的关系,并且达到非常高的精度。但是这种复杂性也使模型成为黑箱,我们无法获知所有产生模型预测结果的这些特征之间的关系,所以我们只能用准确率、错误率这样的评价标准来代替,来评估模型的可信性。
理解那些看起来很完美的模型如何做出决策不在常规的机器学习流程之中,那么如果不是技术上必须的,我们为什么要花费额外的时间和精力去理解模型呢?
一种提高对复杂机器学习模型理解的方法是用所谓的解释函数(explainer function)。我认为每个分类问题的机器学习流程中都应该包括模型理解和模型解释,下面是几个原因
模型改进
模型可信性与透明度
识别和防止偏差
模型改进
理解指标特征、分类、预测,进而理解为什么一个机器学习模型会做出这样的决定、什么特征在决定中起最重要作用,能让我们判断模型是否符合常理。
下面我们根据文献考虑一个令人震惊的例子:我们有一个深度的神经网络来学习区分狼和哈士奇的图像[1]。模型使用大量图像训练,并使用另外的一些图像进行测试。90%的图像被准确预测,这值得我们高兴。但是在没有计算解释函数(explainer function)时,我们不知道该模型主要基于背景:狼图像通常有一个下雪的背景,而哈士奇的图像很少有。所以我们不知不觉地做了一个雪地探测器,如果只看准确率这样的指标,我们就不会看到这一点。
知道了模型是如何使用特征进行预测的,我们就能直觉地判断我们的模型是否抓住了有意义的特征,模型是或否能泛化到其他样本的预测上。
模型可信度和透明度
理解机器学习模型在提高模型可信度和提供审视预测结果透明度上是非常必要的。即将于2018年3月生效的数据保护条例(General Data Protection Regulation (GDPR))也与此非常相关。即使对其中第22条是否包含算法得到决定[2]的解释权进行了激烈的讨论,但是长久来看,让黑箱模型来决定人们的生活是不现实的,比如贷款[3]和监狱刑法[4]。
另一个对机器学习结果可信度提出质疑的领域是药品,模型结果会直接决定病人的生与死。机器学习模型在区分恶性肿瘤和不同类型的良性肿瘤方面是非常准确的,但是我们依然需要专家对诊断结果进行解释,解释为什么一个机器学习模型将某个患者的肿瘤归类为良性或恶性将大大帮助医生信任和使用机器学习模型来支持他们工作。
即使在日常生活中,我们不需要面临那么可怕的后果,如果机器学习模型不能像预期一样表现,仍然会带来很严重的后果。长久来看,更好地理解机器学习模型可以节省大量时间、防止收入损失。如果一个模型没有做出合理的决定,在应用这个模型并造成破坏之前,我们就可以发现这一点。
识别和防止偏差
方差和偏差是机器学习中广泛讨论的话题[5,6]。有偏差的模型经常由有偏见的事实导致,如果数据包含微妙的偏差,模型就会学习下来并认为拟合很好。一个有名的例子是,用机器学习模型来为囚犯建议刑期长度,这显然反映了司法体系在种族不平等上的内在偏差。其他例子比如用于招聘的机器学习模型,揭示了在特定职位上的性别偏差,比如男性软件工程师和女性护士。
机器学习模型在我们生活的各个层面上都是强有力的工具,而且它也会变得越来越流行。所以作为数据科学家和决策制定者来说,理解我们训练和发布的模型如何做出决策,让我们可以事先预防偏差的增大以及消除他们,是我们的责任。
LIME
LIME(Local Interpretable Model-agnostic Explanations)表示对不可知模型的局部解释,它是一个帮助我们理解和解释复杂机器学习模型如何做出决策的一个工具。这是Marco Ribeiro, Sameer Singh 和Carlos Guestrin三个人在2016年研究出来的,可以用于解释任何分类模型,包括随机森林、梯度提升树、神经网络等等。而且它可以应用于多种输入数据之中,比如表格数据(data frame)、图像数据或者文本数据。
LIME的核心在于三个方面
1. 这里不对模型整体提供解释,而是局部对每一个样本单独进行解释
2. 即使机器学习模型训练过程会产生一些抽象的特征,但是解释基于当前输入数据的变量特征
3. 通过局部建立简单模型进行预测来对大多数重要特征进行解释
这会让我们大概了解哪些特征对单个样本分类贡献最大,哪些特征与之矛盾,以及它们如何影响预测结果。
下面的这个例子展示了如何使用LIME
建立一个关于慢性肾脏病[7]的随机森林模型,这个模型的目的是判断一个人是否患有慢性肾脏病。模型最后在验证数据集上达到了99%的准确率,在测试数据集上达到95%。从技术上讲,我们可以停下来宣告胜利。但是我们想要理解为什么那些病人会被诊断为患有慢性肾脏病,而其他病人没有。医学专家可以评估模型学到的内容是否符合常理,是否可以相信。为了实现这一目标,我们使用LIME。
正如上面所描述的,LIME作用在单个样本上。所以首先,我们取出一个样本,并(permute)重复这个数据同时增加一些微小扰动,这样就得到了一个新的数据集,数据集中包含相似的样本,都基于取出来的那个样本。对于这个新数据集中的每一个样本,我们可以计算它跟取出的样本之间的相似性,即在permutation中它被调整了多大,所有的统计距离、相似性矩阵都可以用在这里,比如用指定宽度的指数内核将欧式距离转化为相似度。
下一步,使用最初训练的复杂模型,在新数据上进行预测。正因为新数据样本间的细微差别,我们可以跟踪那些微小扰动对预测结果的影响。
最后,我们在新数据上训练出一个简单模型(通常是线性模型),并使用最重要的特征进行预测。最重要的特征有不同的决定方法,在指定加入模型解释中的特征数量(通常在5到10附近)的前提下,可以
1. 选择在使用复杂模型进行预测时回归拟合上具有最高权重的特征
2. 运用正向选择,选择可以提高复杂模型的预测的回归拟合的变量
3. 在复杂的机器学习模型预测的基础上,选择正则化的收缩率最小的lasso预测拟合的特征
使用不多于我们已经选择了的特征的节点数量来构建决策树
permute出来的样本和抽取出来的原始样本的相似性以权重形式加入简单模型中,让与原始样本更相似的样本占据更大比重。这让我们不能使用任何可以输入样本权重的简单模型作为解释器,比如岭回归。
现在我们可以解释抽取出来的原始数据的预测结果了。使用上面描述的模型,你可以看到LIME使用8个重要特征作用在6个样本的输出结果如下:
六张图中每一张都表示对该样本的预测结果的解释。图中题头显示样本的ID、预测的类别和以多大概率进行的预测。比如左上角的样本表示第四号样本,以98%的概率被预测为"ckd"。在题头下面是一个展示8个重要特征的柱状图,每根柱子的长度表示该特征的权重,正数表示该特征对预测结果产生积极作用,负数相反。再拿左上角的样本举例子,柱状图显示,血红蛋白值(hemoglobin)介于0.388和0.466之间,对分类结果产生了积极作用;pcv、sc等类似产生积极作用(查看全部特征缩写见[这里](Chronic_Kidney_Disease Data Set))。另一方面,该病人的年龄和白细胞计数(wbcc)与健康人不同,因此对分类结果产生消极影响。
译文链接:https://zhuanlan.zhihu.com/p/32891505
网友评论