机器学习可解释性分析

可解释性通常是指使用人类可以理解的方式,基于当前的业务,针对模型的结果进行总结分析

一般来说,计算机通常无法解释它自身的预测结果,此时就需要一定的人工参与来完成可解释性工作;

目录:

  • 是什么:什么叫可解释性;
  • 为什么:为什么要对模型结果进行解释;
  • 怎么做:如何有效的进行可解释性工作;

是什么

机器学习

介绍可解释性之前,我们先来简单看看什么是机器学习,此处我们主要讨论有监督机器学习,对于无监督、强化学习等不做主要分析;

机器学习是计算机基于数据做出的和改进预测行为的一套方法,举例说明:

  • 房屋价格预测:基于历史房屋的价格以及其他属性信息,训练回归模型,并针对的房屋进行价格预测
  • 信用卡诈骗检测:基于信用卡历史消费记录等信息,训练分类模型,并针对的刷卡行为进行异常检测

有监督学习的目标是学习一个预测模型,将数据特征(建设年份、大小、楼层、地段等)映射到输出(房价),模型算法通过估计参数(权重,比如线性回归)或者学习结构(树型,比如决策树)来学习,过程由一个最小化分数或者损失函数指导,例如在房屋价格预测,则是最小化预测与真实的价格差;

机器学习算法运行在计算机上,从很多方面看是表现是优于人类的,比如速度、稳定性、可复制性等等,即便性能上略逊于人类,但是瑕不掩瑜,但是模型也有它的劣势,那就是计算机通常无法有效的解释模型的预测行为,这里的解释指的是说给人类听,一个深度神经网络可能由几百层网络百万个参数组成,一个随机森林可能由几百棵决策树组成,不管是在比赛中,还是实际工作中,表现最好的模型往往是复杂的集成模型,这就使得对他们的解释愈发困难,超多的参数、复杂的结构、特征的组合等等都阻挡了我们对结果的直观理解,这在一定程度上伤害着我们对结果的信心;

因此,不管是从对业务扩展可信度结果分享中的哪个角度考虑,可解释性都是机器学习中重要且有必要的一环;

可解释性

可解释性的一个特殊点在于它的衡量没有一个量化的数学方法,主观的定义是可解释性是人们能够理解模型决策原因的程度,这种理解是基于实际数据和业务下的理解,假设一个线性模型做房屋预测,模型中房屋大小房价影响最大,那么这个结果是很容易理解的,也符合我们的主观认知,如果换成深度神经网络来做预测,或者先对数据做了PCA等处理后再做预测,结果往往是人类没法直接理解的,那么从解释性上看,明显第一个模型的解释性更好;

为什么

进行可解释性的原因:

  • 知其然更要知其所以然:人类的好奇心驱使下,问为什么是很正常的一种思维,如果不能解释预测结果,那么就无法让人们完全信任这个结果(现代医学中西医的接受度要高于中医,除了科学带来的普适性之外,西医的可解释性明显要优于中医,给人感觉更放心);
  • 从实际业务上考虑,假设我们的模型预测不给某人发放信用卡,那也应该提供一个不能发放的原因给到办理业务的人员,另外针对某些特殊场景,比如癌症检测自动驾驶等涉及人身安全的问题上,可解释性提供了后续问题复盘的基础;

可解释性让我们更容易检查以下性质:公平性隐私可靠性因果关系信任

怎么做

可解释性方法分类

针对不同类型的模型可以使用不能的可解释性方法:

  • 本质的:本质上可解释模型(比如短决策树、简单线性模型等),这一类模型由于自身的简单性,可以针对其结果、回归权重等直接进行解释;
  • 模型无关的:对于更普遍的情况,即复杂模型的解释,需要使用模型无关方法,比如个体条件期望、特征交互、累计局部效应图等;

实际工作中上述两类方法都会使用,我一般的流程是先易后难,先从最简单的方法开始进行可解释性工作;

可解释性评估

目前针对机器学习的可解释性没有统一的达成共识的标准,但是也有了一些初步的评估方法:

  • 应用级评估:由最终产品的使用用户来评估其解释性的好坏;
  • 人员级评估:类似应用级评估,区别是由测试人员代替最终用户,优点是更廉价,缺点是效果与最终用户会有差异,尤其是在某些专业领域,比如医学等方面的机器学习产品;
  • 功能级评估:代理型解释,例如我们用SVM训练模型并预测房屋价格,使用局部代理方法(比如决策树)来解释SVM的预测结果,也就是复杂模型做业务,简单模型解释其结果;

PS:在我们的乘客聚类项目中,一部分解释性工作就类似代理型解释,KMeans做聚类,随机森林逻辑回归解释结果;

解释方法的性质

性质是用于判断解释方法自身好坏的方法,目前一个最大的难点在于大多数性质都没法量化:

  • 表达能力:表达能力越好的解释方法越能解释复杂模型的预测结果,目前来看最好的表达能力是对深度神经网络的解释,这一点也是很多大佬们的研究方向;
  • 半透明度:依赖于被解释算法模型的程度,例如对于本质上可解释的模型的解释方法就是高度透明的,而那些模型无关的算法则半透明度基本为0,高透明度的优点是可以基于模型更多信息来解释,而低透明度优点在于移植性好;
  • 可移植性:与解释方法与被解释模型的依赖程度成反比,因此模型无关的解释方法的可移植性是最好的;
  • 算法复杂度:解释方法自身算法的计算复杂度;

单个解释的性质:准确性保真度一致性稳定性可理解性确定性重要程度新颖性代表性

人性化的解释

对外输出结果时,什么叫做好的解释,人文科学研究表示:人类更喜欢较短的解释,将正反两面进行对比,异常情况单独进行说明;

  1. 解释具有对比性:人们关心的通常不是某个房屋为什么被预测为100w,而是两个情况类似的房屋,为什么一个比另一个贵10w,因此解释的重点在于说明两个例子的差异,形成对比,这种强烈的对比感是人们容易接受的;
  2. 选择性的解释:针对真实情况,只选择其中有代表性的几个原因组成解释,使得解释更简短;
  3. 解释是社会性的:针对不同的被解释人群进行区分对待,对于专业人员,可以更多从模型算法出发,对于其他岗位同事可以更多从业务等领域出发;
  4. 异常要重点解释:异常虽然在指标上没有突出的体现(过于关注指标的表现会忽略藏在其中的异常例子),但是异常很吸引人们的注意力,因此对于异常例子的重点解释是很重要的;
  5. 解释是真实的:对于某些例子的解释应该同样适用于其他例子,至少是类似的例子上;
  6. 好的解释与被解释着的先验知识是一致的:人类由于认知偏差会更相信自己知道的,比如我们都认为房子越大价钱越贵,那么如果模型在某一类房屋上给出了面积越大,价钱便宜这样一个解释,这是很难被人们接收的,但是事实上模型为了更好的性能,可能进行了复杂的特征交互、组合得出的结果,结果是对的,但是它的解释却很难被接受;
  7. 好的解释是普遍性很可能的:比如房子越大价钱越贵,这就是一个普遍性很高的解释,也确实很可能;

后续

后续会继续出可解释性相关文档,预计包括自身可解释模型(线性回归、逻辑回归、决策树等)、模型无关的解释方法、工作中的真实项目中的解释性工作;

最后

本文基于《可解释性的机器学习》,作者 Christoph Molnar,译者 朱明超;

机器学习可解释性系列 - 是什么&为什么&怎么做的更多相关文章

  1. 【ABAP系列】SAP ABAP 模拟做成像windows一样的计算器

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP 模拟做成像wind ...

  2. 机器学习环境配置系列四之theano

    决定撰写机器学习环境配置的主要原因就是因为theano的配置问题,为了能够用上gpu和cudnn加速,我是费劲了力气,因为theano1.0.0在配置方面出现了重大改变,而网上绝大多数都很老,无法解决 ...

  3. 100天搞定机器学习|day54 聚类系列:层次聚类原理及案例

    几张GIF理解K-均值聚类原理 k均值聚类数学推导与python实现 前文说了k均值聚类,他是基于中心的聚类方法,通过迭代将样本分到k个类中,使每个样本与其所属类的中心或均值最近. 今天我们看一下无监 ...

  4. 机器学习环境配置系列一之CUDA

    本文配置的环境为redhat6.9+cuda10.0+cudnn7.3.1+anaonda6.7+theano1.0.0+keras2.2.0+jupyter远程,其中cuda的版本为10.0. 第一 ...

  5. 机器学习环境配置系列二之cuDNN

    1.下载cuDNN 前往: NVIDIA cuDNN home page. 进入下载 勾选Nvidia的协议复选框(流氓的选择,不勾选不能下载) 选择与安装的cuda版本一致的cudnn进行下载. 2 ...

  6. 机器学习环境配置系列六之jupyter notebook远程访问

    jupyter运行后只能在本机运行,如果部署在服务器上,大家都希望可以远程录入地址进行访问,这篇文章就是解决这个远程访问的问题.几个基本的命令就可以搞定,然后就可以愉快的玩耍了. 1.安装jupyte ...

  7. 机器学习环境配置系列五之keras2

    keras一个大坑就是配置文件的问题,网上会给很多的误导,让我走了很多弯路. 1.安装keras2 conda install keras 2.环境配置 echo ‘{ "epsilon&q ...

  8. 机器学习环境配置系列三之Anaconda

    1.下载Anaconda文件 进入anaconda的官网 选择对应的系统 选择希望下载的版本(本人下载的是Anaconda 5.3 For Linux Installer Python 3.7 ver ...

  9. 机器学习数据处理时label错位对未来数据做预测

    这篇文章继上篇机器学习经典模型简单使用及归一化(标准化)影响,通过将测试集label(行)错位,将部分数据作为对未来的预测,观察其效果. 实验方式 以不同方式划分数据集和测试集 使用不同的归一化(标准 ...

随机推荐

  1. Windows server 2008 搭建DNS服务

    现在用Windows搭建DNS的已经很少了,感觉也只有一些公司的某块部分能用上,最近在捣鼓这个,索性直接写下来,以后可以看了直接用. 开始: ★★★配置静态IP地址 老样子,有关服务器功能的建立,都是 ...

  2. 浅谈python垃圾回收机制

    引入 ​ 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那 ...

  3. mysql建数据库的字符集与排序规则说明

    本文转自https://blog.csdn.net/qq_38224812/article/details/80745868,感谢作者,自己留存已备他日使用 1.字符集说明: 一般选择utf8.下面介 ...

  4. SwiftUI - Grid View 的实现方法,逐步剖析助你实现

    简介 在当前正式 SwiftUI 版本而言,很多控件都是缺少的.比如在 UIKit 框架里有 UICollectionView 组件,可以很方便地做 Gird 格子类型的视图.但是在 SwiftUI ...

  5. 浅谈 FTP、FTPS 与 SFTP

    无论是网盘还是云存储,上传都是一项很简单的操作.那些便捷好用的上传整理工具所用的 FTP 协议到底是什么意义,繁杂的模式又有何区别? 二狗子最近搭建了一个图片分享网站,每天都有好多人在他的网站上传许多 ...

  6. 【Android】Listview返回顶部,快速返回顶部的功能实现,详解代码。

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...

  7. Color a Tree & 排列

    Color a Tree 题目链接 好不可做?可以尝试一下DP贪心网络流.DP 似乎没法做,网络流也不太行,所以试一下贪心. 考虑全局中最大权值的那个点,如果它没父亲,那么一定会先选它:否则,选完它父 ...

  8. PlayerPrefs

    PlayerPrefs http://blog.csdn.net/u011416077/article/details/47334963

  9. Unity3D如何有效地组织代码?

    本文整理自知乎,原文链接:http://www.zhihu.com/question/21070379 问题: Unity3D可以说是高度的Component-Based Architecture,同 ...

  10. 一键部署k8s

    本人学习安装kubernetes时,顺便整理了安装脚本,可以通过执行一个脚本,自动二进制安装好1台master+2台node的k8环境.方便需要学习k8s的同学. 百度网盘:https://pan.b ...