分类模型的可解释性
分类模型的可解释性
#机器学习
论文题目:《Why Should I Trust You? Explaining the Predictions of Any Classifier》 论文地址:[https://chu-data-lab.github.io/CS8803Fall2018/CS8803-Fall2018-DML-
Papers/lime.pdf](https://links.jianshu.com/go?to=https%3A%2F%2Fchu-data-
lab.github.io%2FCS8803Fall2018%2FCS8803-Fall2018-DML-Papers%2Flime.pdf)
模型可解释性论文列表:[
https://github.com/oneTaken/awesome_deep_learning_interpretability
](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FoneTaken%2Fawesome_deep_learning_interpretability)
《Why Should I Trust You? Explaining the Predictions of Any
Classifier》是 2016 年发表在 KDD 上的论文,至今被引用 2984 次。文中介绍了可以应用于任何分类模型的模型解释方法。
很多复杂的机器学习模型和深度学习模型,都被外界视为黑盒,如何对用户解释它的结果、评价其效果,让用户放心地使用,尤其是在医疗这种性命攸关的领域,对于模型推广至关重要。文中提出了用于解释分类模型的 LIME 方法。
在机器学习领域,一般在训练集上训练模型,用测试集(或验证集)评价模型,然后统计整体模型的准确性。但是测试集与实际场景中使用的数据往往存在一定差异。
对于单条实例,它的表现又如何?是否可以信任模型该次预测?例如对于准确率是 80% 的模型,如何确定本次的预测到底属于正确的 80%,还是错误的 20%。文中提出了解释和评价单次预测的方法 LIME,并通过对多个典型的实例的评价,将该方法延伸到评价整个模型 SP-
LIME,并讨论了在什么情况下应该信任模型(模型的适用范围)。
人做决策时往往依赖其先验知识,以及知识背后的原因。评价模型有效性的重要方法是找到影响决策的关键特征,比如一段话中的重点单词,图片中的某些小块,如下图所示,LIME 方法找出了影响某一次决策的重要特征,其中绿色为相关特征,红色为重要特征。
[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWZjOWFhYjYyZjFkZWIxOGYucG5n?x-oss-
process=image/format,png)
评价单个实例 LIME
如果在建模的过程中出现一些泄露,比如 X(假设是 x1)里掺入了 y 的部分内容,或者数据集引起的偏差(如:男女不平等)。在实际应用中,这些 x1 又无法得到,那么在测试集中计算得出的模型准确度并不能说明模型的好坏。使用 LIME 方法寻找关键因素,如果发现 x1 是决定性因素,就很容易发现泄露问题。
另外,精确度并不是模型的唯一量度,有时需要从多个模型中选择出最佳模型,一般会选择整体正确率最高的模型,或者根据各个模型的准确率加权,最终方法对于单个实例未必是最优选择。对于单个实例,计算出决策的依据,并与人的先验知识印证,有利于选择对该实例效果最好的模型。在这样的交互过程中,开发者也能了解究竟哪些因素更能影响人的决策,从而优化模型。
开发者都希望在输入数据和输出数据间建立可解释的联系。但是复杂的机器学习模型或者深度学习建模中,相对比较困难,模型预测过程是成千上万参数共同作用的结果。希望最终呈现出来的是人能理解的,而非特征实际上怎么计算的细节,也不一定是输入的具体特征(如图片输入各像素点的颜色)。
实现 LIME 的具体方法是:在实例 x 附近加干扰,得到一些与它近似的实例 z,用训练出的模型 f 对这些 z 进行预测 f(z),作为解释模型 g 的 label。代入模型,优化下面公式中定义的目标函数。对于邻近 x 的 z 给予较高的权重π,对于较远的 z 给予较低的权重π。
[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWEyZThlOGU5NjA5YWJkNjQucG5n?x-oss-
process=image/format,png)
在分类问题中,f 可看作是实例 x 属于某分类的概率,即 f 是预测模型;g 是用于解释的模型;πx(z) 通过衡量实例 z 与 x 的近似度赋予实例权重;L 用于度量在局部范围π条件下,g 用于解释 f 的不可信度(越小越好);Ω(g) 是模型 g 的复杂度。简单地讲:LIME 的目标是从众多的解释模型 G 中选择最合适的模型 g,该模型对于人类的理解足够简单(Ω(g) 小),且不可信度 L 也比较小(复杂模型 f 和简单模型 g 在 x 附近效果差不多)。
在直觉上看,下图示例是一个比较复杂的二分类,整体并不是线性可分的,通过训练得出了复杂的二分类模型 f,不同分类分别使用蓝色和肉色表示;对局部实例 x(粗红十字),通过在它附近模拟一些实例 z(十字和圆点),并且根据它们与 x 的距离赋予不同权重,用 z 和 x 训练简单的线性模型 g,用于在局部范围内拟合 x。再从简单模型 g 中提取可描述的特征。
[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWFhYmVjZTA5ZWI4NjM1YzgucG5n?x-oss-
process=image/format,png)
L 的具体计算方法如下:
[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWE1MDhmMmExY2Y2OTNlNzMucG5n?x-oss-
process=image/format,png)
其中π根据距离赋予不同实例 z 权重,f(z) 是模型对 z 的预测值,z’是根据 z 计算的可解释的特征,g(z’) 是简单模型。
举个现实中的例子:假设最终训练出来了无比复杂强大的模型 f,它可以识别各种动物。各种动物有其各自的特征,各不相同,但是对于单个实例“猪”,必定有一些与它相关的重要特征(它是全部重要特征的子集)。生成猪和其类似动物作为数据,训练简单模型 g,用于学习与“猪”相关的重要特征。虽然 g 代表不了整个模型 f,但它能很好地描述“猪”。
文中方法把基础模型 f 当作黑盒,因此 LIME 方法可应用于任何分类模型。该方法可能出现的问题是:简单模型 g,即使在实例 x 附近也未必能完美地模拟 f。但是可以评价 g 在 x 附近对 f 的拟合程度,同样也可据此选择更适合的 g。
有些分类器虽然统计上看效果不错,但对于某类实例 x 可能效果并不好,如果通过上述方法提取的特征看起来并不合理,也可从而评价 f 对 x 实例预测的可信度,以便后期优化模型 f。
评价整个模型 SP-LIME
上述方法用于评价对单个实例预测的可信程度,如果需要评价整个模型,则需要评价多个实例。SP(submodular
pick)方法用于在大量数据中选择适当的实例。
开发者希望被选择的实例能覆盖各种 label 类型,覆盖尽可能多的情况,且不冗余(不重复)。如下例所示:
[](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81MzU3ODkzLWZlMDExOGU3ZmJjOTI2MDEucG5n?x-oss-
process=image/format,png)
图中的行代表各个文档(实例),列代表文档中出现的关键词(特征),图中通过各个特征在各个实例的重要性构造了矩阵 W。可以看到第二列特征对于每个文档都很重要(蓝色);第二行和第五行涵盖了除 f1 特征之外的所有特征。
在构造实例集的过程中,尽量使用对各种情况都重要的特征 f2,也尽量减少纳入类似实例,如第二行和第三行就非常相似。这样,不会因为训练集中“猫”多,使猫相关的特征显得非常重要,而是相对均匀地选择重要特征。
另一次看的笔记:论文阅读_分类模型的可解释性