机器学习模型的可解释性
通过模型可解释方法,可以直观地传递关于模型行为的解释,比如为什么这个样本被预测为这个标签,某个特征对预测结果起到了什么样的作用。
1.1 可解释的重要性
- 模型改进 通过可解释分析,可以指导特征工程。一般我们会根据一些专业知识和经验来做特征,并分析特征重要性,可以挖掘更多有用的特征,尤其是在交互特征方面。当原始特征众多时,可解释性分析将特别重要。 科学的目标是获取知识,模型本身应该成为知识的来源,而不是结果或数据。比如在一个文本分类任务中,判断文章是与“基督教”(Christianity)有关还是“无神论教”(Atheism)”,模型准确率,90%多很高。但是用LIME进行可解释分析发现,Posting(邮件标头的一部分)这个词重要性很高,但这个词汇与无神论本身并没有太多的联系,只是因为在无神论文章中出现的频次很高。这意味着尽管模型准确率很高,但所使用的原因是错误的。我们可以借此改进模型,判断是否捕捉到有意义的特征。
- 检测偏见 方差和偏差是机器学习中广泛讨论的话题。有偏差的模型经常由有偏见的事实导致,即数据本身很有可能带有偏差。某类特征的偏差可能对我们结果导致不好的影响。
- 模型可信度 对使用模型的运维人员来讲,可能只只知道预测结果是什么,是否异常,但是人类的好奇心是天性,想知道模型为什么要给出这样的预测,我为什么要相信模型的结果。解决模型可解释问题有利于用户更加放心地应用和部署在真实场景上。
1.2 可解释分类
Pre-Model vs. In-Model vs. Post-Model
- pre-model的解释独立于模型本身,他们只能应用于数据。比如提供一个对数据更好的理解。这和数据可解释性很接近,包括了数据分析和数据探索。常见的方法从描述统计学到数据可视化,包括PCA,t-SNE,聚类方法等。
- in-model主要是模型本质可解释。又称为Intrinsic。比如模型本身存在的稀疏性、单调性、因果性,或外在约束,或是模型权重。
- post-model指已经建立模型之后再去做可解释分析。又称为Post hoc。
Model Specific, Model Agnostic
- model specific指方法本身是基于特定模型的。比如线性模型的权重就是model-specific的。
- model agnostic指方法可以应用于任何模型,同时也是后验的(post hoc)。这种方法是分析输入和输出,而不能分析到模型内部。
上述两种分类方法的关联:
可解释方法的返回结果
- Feature summary:一些可解释性方法返回每个特征的一些统计信息,比如每个特征一个重要性衡量。有些方法是用图示来表示的特征统计的,比如partial dependence plots。
- Model Internals:对一些本质可解释的模型,他们的输出比如线性模型的权重。当然,他们的输出是model-specific的。
- Data Point:返回一些本身可解释的数据点,比如图片和文本。但是对高维的连续型样本可能没有用。
- Surrogate intrinsically interpretable model:使用一个替代模型去解释原来的黑盒模型,把问题转化为对替代模型的解释。
可解释性的范围
- 全局可解释 这个层级的可解释性指的是,模型如何基于整个特征空间和模型结构、参数等作出决策的。什么特征是重要的,特征交互会发生什么。模型的全局可解释性可以帮助理解,针对不同特征,目标变量的分布是什么。
- 局部可解释 局部可解释性更加关注单条样本或一组样本。这种情况下我们可以将模型看做是一个黑盒,不再考虑模型的复杂情况。单条样本来看,模型给出的预测值和某些特征可能是线性关系,甚至是单调关系。因此局部可解释性可能相比全局可解释,更加准确点。
1.3 可解释的模型
最简单的机器学习可解释性就是直接使用可解释模型,比如逻辑回归、线性模型、决策树。
可解释的模型主要考虑以下几个性质:
- 线性:特征取值和标签取值是否存在线性关系
- 单调性:特征取值和标签取值是否存在单调性关系
- 交叉:一些模型能自动交叉特征
1.4 模型解释方法
model-specific 依赖模型
比如对DNN的话,主要有以下方法:guided backpropagation, integrated gradients, SmoothGrad saliency maps, Grad-CAM, Concept Activation Vectors。这些方法主要应用于CV领域。
还有一类post-hoc的model-specific方法---知识蒸馏,将一个复杂模型化为一个简单模型。比如模型压缩,树的正则化,降维。
model-agnostic 独立于模型
不取决于模型的机器学习后验(模型已做完训练和预测)的解释方法,这块总结主要摘取自论文《Machine Learning Interpretability: A Survey on Methods and Metrics》[1]。
1.5 模型可解释方法SHAP
Shapley值法是指所得与自己的贡献相等,是一种分配方式。普遍用于经济活动中的利益合理分配等问题。最早由美国洛杉矶加州大学教授罗伊德·夏普利(Lloyd Shapley)提出。shapley值法的提出给合作博弈在理论上的重要突破及其以后的发展带来了重大影响。简单的来说就是使分配问题更加的合理,用于为分配问题提供一种合理的方式。
SHAP将Shapley值解释表示为一种可加特征归因方法,SHAP将模型的预测值解释为每个输入特征的归因值之和。与feature importance相比,SHAP value最大的优势是SHAP能反映出每一个样本中的特征的影响力,而且还表现出影响的正负性。
一个特征的shapley value是该特征在所有的特征序列中的边际贡献的加权平均值。
第i个样本实例的Shapley value的解释:对第i个样本实例来说,其所有特征值对预测目标值的总贡献(也就是预测目标实际值)与预测目标平均值之差。
1.5.1 原理
f(x) 是一个线性模型,X 是一个样本,xj 是该样本的一个特征值,
是该特征的权重:
是第 j 个特征对预测值
的贡献,其中
是该特征取值的期望
然后把一个样本所有特征值的贡献进行求和,样本x 所有特征的贡献之和等于目标预测值减去目标平均预测值
1.5.2 性质
1 效率性
特征贡献的累加等于x的预测和预测平均值的差值
2 对称性
如果两个特征值j和k的贡献对所有可能的特征序列贡献相同,则他们的贡献应该相同。
3 虚拟性
一个不改变预测值的特征j,无论它添加到哪个特征值序列中,Shapley值都应该为0。
1.5.3 实践1
20170315_training
这里使用的是机器学习的方法来对API曲线中出现的异常点进行预测,图中棕色的方块标记就是模型预测出的异常,在这里用的模型是随机森林。
如上图,选择10:00左右的异常区间中一个点,计算各个特征的Shapley value。并且这个样本最终的预测值由各个特征的shapley value贡献,加上预测目标平均值得到的。
预测目标平均值为0.5,在这个例子中,对增加预测概率起到最大作用的特征是涨幅(increasing),表示当前点相对于上一个点的涨幅。在这里涨幅是-0.1012,说明这里时间序列值掉了超过10%。对增加预测概率起作用排在第二位的是变异系数(coefficient_of_variation),表示当前值与历史依赖的变异系数。
20170315_training_shap
1.5.2 实践2
20200420_prediction
如上图,选择17点左右被模型预测出来的异常点,计算各个特征的Shapley value。
预测目标平均值为0.5,在这个例子中,对增加预测概率起到最大作用的特征是偏度(skew),表示当前值与历史依赖数据的偏度。在这个异常点中,偏度取值为1.572。但是,这个样本的异常概率预测出来只是0.51,异常程度不是特别高。此类样本可被判别为异常也可以不判。
20200420_prediction_shap
1.5.3 实践3
20200501_prediction
如上图,选择0点左右被模型预测出来的异常点,计算各个特征的Shapley value。
预测目标平均值为0.5,在这个例子中,对增加预测概率起到最大作用的特征是值域(range),表示当前值与历史依赖数据的值域。在这个异常点中,值域取值为0.2016。样本预测异常的概率有0.87。值得注意的是,变异系数在这两个例子中都起到了降低异常概率的作用,所以变异系数会不会是一个效果较差的特征?
20200501_prediction_shap
1.6 模型可解释方法LIME
LIME全称是Local Interpretable Model-Agnostic Explanations。LIME与模型无关,这意味着它可以应用于任何机器学习模型。该技术试图通过扰动数据样本的输入并理解预测的变化来理解模型。
流程:
- 训练模型,模型(记作 ff)可以是LR、NN、Wide and deep、C4.5 Decision tree、Random forest、GBDT等任意模型。
- 训练结束后我们需要解析模型,先选择一个待解析的样本,样本通过模型计算可以得到一个prediction(包含预测的label以及预测为1的probability),这时我们在这个样本的附近选择新的样本并用模型计算出多个prediction,这样样本组合新的样本集。
- 然后使用新的可解析的特征和prediction作为label来训练新的简单模型(例如LR),然后使用简单模型的权重作为这些特征的重要性作为输出。
就是选择一个样本以及样本附近的点,然后训练一个简单模型来拟合,虽然简单模型不能在完整数据集上有效,但至少在这个点附近都是有效的,这个简单模型的特征是人类可解析的,而训练出的权重也可以表示特征重要性。
1.6.1 实践1
20200420_prediction
这里使用的是机器学习的方法来对API曲线中出现的异常点进行预测,图中棕色的方块标记就是模型预测出的异常,在这里用的模型是随机森林。
如上图,选择17点左右被模型预测出来的异常点,我们使用LIME方法计算该点的特征解释情况。
下图是LIME的输出,给我们解释了对于一个样本的预测结果,是哪些特征决定样本被分类到类别0,哪些特征决定样本被分类到类别1,且具体列出样本在这些特征的数值大小。很直观和明确的解释为什么模型做这个决定。
在这个例子中,相对上周变化(diff_last_week)特征对该样本预测为异常贡献最大,该特征取值为0.14,说明这个时间戳的值相对上周同期上升了14%。但是该样本的预测置信度不是很高,预测为异常和预测为正常的概率相差不多。
20200420_prediction_LIME
1.6.2 实践2
20200501_prediction
如上图,选择0点左右被模型预测出来的异常点,使用LIME方法计算该点的特征解释情况。
在这个例子中,对增加预测概率起到最大作用的特征是值域(range),表示当前值与历史依赖数据的值域。在这个异常点中,值域取值为0.2016。这个正好和SHAP算法计算出来是一致的,两种算法都表明值域对此样本预测为异常贡献最大。
20200501_prediction_LIME
1.7 问题项
在应用中,存在一些问题可以思考:
- 在异常区间较大,是由多个样本组成的时候,选择哪一个样本去做机器学习解释?比如第一个异常点。
- 目前大多数时间序列特征已经相对抽象,像变异系数、偏度等,用户得知此特征对预测异常有较大帮助之后,是否有真正的帮助?并且,依然存在理解门槛的问题,所以目前的技术,好像比较难真正帮助用户理解模型。
- LIME和SHAP作为单独的特征可解释性方法,不依赖于模型,其本身置信度如何?
- 模型本身是特征之间的高阶交叉,从单个特征的重要性可能没有办法解释高阶交叉对预测结果的帮助。
Reference
- Diogo V. Carvalho, Machine Learning Interpretability: A Survey on Methods and Metrics
- Friedman, J.H. Greedy function approximation: A gradient boosting machine. Ann. Stat. 2001, 29, 1189–1232.
- Goldstein, A.; Kapelner, A.; Bleich, J.; Pitkin, E. Peeking inside the black box: Visualizing statistical learning with plots of individual conditional expectation. J. Comput. Gr. Stat. 2015, 24, 44–65.
- Apley, D.W. Visualizing the Effects of Predictor Variables in Black Box Supervised Learning Models. arXiv 2016, arXiv:1612.08468.
- Friedman, J.H.; Popescu, B.E. Predictive learning via rule ensembles. Ann. Appl. Stat. 2008, 2, 916–954.
- Fisher, A.; Rudin, C.; Dominici, F. Model Class Reliance: Variable Importance Measures for any Machine Learning Model Class, from the “Rashomon” Perspective. arXiv 2018, arXiv:1801.01489.
- Ribeiro, M.T.; Singh, S.; Guestrin, C. “Why Should I Trust You?”: Explaining the Predictions of Any Classifier. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, San Francisco, CA, USA, 13–17 August 2016; pp. 1135–1144.
- Lundberg, S.M.; Lee, S.I. A unified approach to interpreting model predictions. In Advances in Neural Information Processing Systems; MIT Press: Cambridge, MA, USA, 2017; pp. 4765–4774.
- Staniak, M.; Biecek, P. Explanations of model predictions with live and breakDown packages. arXiv 2018, arXiv:1804.01955.
- Ribeiro, M.T.; Singh, S.; Guestrin, C. Anchors: High-Precision Model-Agnostic Explanations. In Proceedings of the AAAI Conference on Artificial Intelligence (AAAI), New Orleans, LA, USA, 2–7 February 2018.
- Wachter, S.; Mittelstadt, B.; Russell, C. Counterfactual Explanations without Opening the Black Box: Automated Decisions and the GDPR.(2017). Harv. J. Law Technol. 2017, 31, 841
- Kim, B.; Khanna, R.; Koyejo, O.O. Examples are not enough, learn to criticize! Criticism for interpretability. In Advances in Neural Information Processing Systems; MIT Press: Cambridge, MA, USA, 2016; pp. 2280–2288.
- Koh, P.W.; Liang, P. Understanding black-box predictions via influence functions. arXiv 2017, arXiv:1703.04730.
相关文章
- 学习笔记——SSM整合(思路、步骤)
- 学习笔记——SpringMVC拦截器的两种装配方式;SpringMVC拦截器工作原理;SpringMVC中的异常处理器;SpringMVC工作原理
- 学习笔记——拦截器与过滤器的区别;拦截器概述;拦截器中三个方法
- 学习笔记——SpringMVC文件上传与下载
- 学习笔记——SpringMVC消息转换器概述;使用消息转换器处理请求报文;使用消息转换器处理响应报文;使用消息转换器处理Json格式数据
- 学习笔记——springMVC中视图及视图解析器对象;视图控制器
- 学习笔记——SpringMVC处理响应数据;SpringMVC处理请求域响应乱码问题
- 《RPC实战与核心原理》学习笔记Day3
- 盘点12个前端低代码的框架开源项目以及前端低代码的总结调研,比如百度开源的前端低代码框架、阿里巴巴开源的低代码平台、Element UI表单设计及代码生成器、H5可视化页面配置等
- 学习笔记——SpringMVC简介;SpringMVC处理请求原理简图;SpringMVC搭建框架
- 学习笔记——Spring声明式事务管理属性(隔离级别、事务超时、事务只读、事务回滚);Spring5新特性、新注解&整合log4j2;Spring5整合Junit5
- 学习笔记——Spring声明式事务管理;Spring中支持事务管理;使用声明式事务管理;Spring声明式事务管理属性
- 学习笔记——定义切面优先级 ;Spring中的JdbcTemplate;JdbcTemplate的常用API
- 学习笔记——Spring中的AOP(AspectJ);Spring中AOP概述;Spring中AOP相关术语;AspectJ中切入点表达式;AspectJ中JoinPoint对象;AspectJ中通知
- 学习笔记——AOP-代理模式
- 学习笔记——Spring底层IOC实现;Spring依赖注入数值问题;Spring依赖注入方式
- 学习笔记——Mybatis分页插件
- 学习笔记——Mybatis逆向工程MBG;MyBatis逆向工程MBG使用步骤
- 学习笔记——MyBatis自动映射与自定义映射;Mybatis延迟加载
- 学习笔记——Mybatis映射文件根标签与子标签