在这篇笔记中分享前段时间我对于LIME算法的调研。
一、算法简介
LIME算法是Marco Tulio Ribeiro2016年发表的论文《“Why Should I Trust You?” Explaining the Predictions of Any Classifier》中介绍的局部可解释性模型算法。该算法主要是用在文本类与图像类的模型中。
1.算法主要用途
在算法建模过程中,我们一般会用测试集的准确率与召回率衡量一个模型的好坏。但在和客户的实际沟通时,单单抛出一个数字就想要客户信任我们,那肯定是不够的,这就要求我们摆出规则,解释模型。但不是所有的模型都是规则模型,一些黑盒模型(比如神经网络)有着更高的准确率,但是无法给出具体的规则,无法让普通人理解和信任模型的预测结果,这种时候,就可以利用本文要介绍的LIME算法,全称Local Interpretable Model-agnostic Explanations,可以理解为模型的解释器。
可以从两个方面说明我们为什么需要模型解释器,一方面是用户需要信任预测结果,另一方面是建模者需要信任模型。
2、用户需要信任预测结果
在很多行业,比如医生、法律行业,都需要就模型的预测结果给出充分的理由,否则就无法取得用户的信任。举一个论文中提到的例子,一个医学模型判断病人患病,通过LIME算法同时给出病人的病史症状包括喷嚏、头痛等特征,医生利用自己的先验知识,就能更好地借助模型做出决定。
图1:模型会预测患者患有flu,LIME会突出显示导致该预测的患者病史中的症状。喷嚏和头痛被描述为flu预测的贡献者,而“无疲劳”则相反。有了这些,医生可以就是否信任模型的预测做出明智的决定。
3、建模者需要信任模型
每个算法都需要对模型整体信任度有一定的衡量,意思就是模型是否学到了我们所预期的东西。论文中举出一个文章分类的例子,判断该文章与“基督教“有关还是与”无神论教“有关,分类器本身达到了90%的准确率。但是利用LIME解释器,发现”无神论教“的重要特征,是”Posting“(邮件标头的一部分),这个词与无神论本身并没有太多的联系。这意味着尽管模型准确率很高,但所学习到的特征是错误的。
图2:试图确定该份文档是关于“基督教”还是“无神论”。 条形图表示给予最相关词的重要性,该词也在文本中突出显示。 颜色表示单词对哪个类别有所贡献(橘色表示“基督教”,蓝色表示“无神论”)。
通过以上两个方面的介绍,大致可以了解LIME算法的主要用途。
二、算法介绍
1.解释器的基本特征
我们需要建立一个解释器来解释黑盒模型,那么这个解释器必须满足以下特征:
-可解释性
要求解释器的模型与特征都必须是可解释的,像决策树、线性模型都是很适合拿来解释的模型;而可解释的模型必须搭配可解释的特征,才是真正的可解释性,让不了解机器学习的人也能通过解释器理解模型。
-局部保真度
既然我们已经使用了可解释的模型与特征,就不可能期望简单的可解释模型在效果上等同于复杂模型(比如原始CNN分类器)。所以解释器不需要在全局上达到复杂模型的效果,但至少在局部上效果要很接近,而此处的局部代表我们想观察的那个样本的周围。
-与模型无关
这里所指的是与复杂模型无关,换句话说无论多复杂的模型,像是SVM或神经网络,该解释器都可以工作。
2.算法原理
对于一个分类器(复杂模型),想用一个可解释的模型(简单模型如线性规划),搭配可解释的特征进行适配,并且这个可解释模型再局部的表现上很接近复杂模型的效果