花了一天时间对LIME论文:http://arxiv.org/pdf/1602.04938v1.pdf 细致阅读和代码阅读,实验。大体理解了作者的设计思路。

背景:

我们在建立模型的时候,常常会思考我们的模型是不是够稳定,会不会出现样本偏差效应。 p>>N时候会不会过拟合? 我们检查模型稳定。我们进行一些cross-validation来看看各项评估指标方差大不大。

但是假设样本一開始由于採样偏差导致样本有偏,导致模型和实际情况有差异。这个就不太好评估了。

相同。p>>N也会有类似的问题。尤其在文本挖掘领域。

普通情况。假设特征不是非常多的话。尤其像logistic regression这种model,我们会把模型权重给打印出来看看,看看训练出的模型结果,是否和人的经验吻合。以下是lime
文章中提到一个文本分类的case。预測一段文本是无神论相关的。还是基督徒相关的。文中分类器预測结果这篇文本是无神论相关的,但是主要区分特征却与人的经验十分不吻合的,这种模型是不能让人信服的,当我们把这几个特征删除后。预測结果又反向了。我们能够通过人工构建一些由这些特征组成的文本来增加到预測实验中,会大大减少模型性能。






LIME解释原理:

LIME是Local Interpretable Model-Agnostic Explanations的缩写。LIME的目的是试图解释模型在预測样本上的行为。这样的解释是可被理解的。而且这样的解释是模型无关的,不须要深入到模型内部。

作者提出的方法一种局部方法,非全局的,在每一个预測样本附近随机採样产生一些样本,就像下图所,红色“x”是预測样本。周边‘*’和圆形样本都是採样得到的。


採样的机制是随机替换掉原始样本中若干个特征。

如文本a="我女朋友很喜欢看奇葩说",生成的样本能够是“我很喜欢看奇葩说”,“我女朋友看奇葩说”等等。每一个生成样本和原始样本都有个权重,权重的计算方式: w=exp(-d^2/theta^2), d是距离,文本中我们能够採用cosine 距离来表征文本样本间的距离。


以下是lime_text.py 中__data_labels_distances函数的代码,针对是文本文本分类的解释。以下代码的主要作用怎样给预測样本生成近邻採样样本。以及对应权重,採样样本在当前分类器的预測概率。
生成的样本表征方式是bag of word: [0,1,0,0,1]。注意这时候採样样本特征不是高维的,最大长度仅仅是预測样本的长度。

        

有了採样样本。以及採样样本的权重。预測概率。

有了这些东西,我们以下该干什么呢?记住我们的目的是要解释我们分类器在该预測样本中怎样起作用的?  简单的说是在该预測样本,分类器都是哪些特征起到作用?我们能够事先设定个数值K,我们仅仅看前K个起作用的特征(太多了。人无法查看)

既然是特征选择问题。那我们能够用这些採样样本做个加权回归模型。做回归模型前,先选取k个重要特种,怎样选取? 方法是能够是依据回归模型训练结果中最大的权重,或者是前向搜索方法(每次选取使回归模型R^2值最大的特征增加到集合中。),或者採用lasso_path的方法。注意样本的权重是不一样的。

详细能够看以下代码:





选取K个特征后,我们就能够在採样的样本。以及这K个特征上,做个加权回归模型。回归模型输出的K个特征以及权重,就是分类器对预測样本的解释。以下是explain_instance_with_data函数代码:



上面的方法整体能够用paper上的描写叙述来概括:


总结:
        上面主要环绕文本分类解释展开的,而且主要是基于文本bag of word方式。

事实上基于文本嵌入表征方式也是可行的,文本中词的替换机制一样。仅仅是在预測採样样本分类概率前须要把採样样本变成向量方式。

        事实上能够拓展到非常多其它领域,比方风控征信等。

预測一个行为是否有风险,当我们的模型预測到该行为是有风险的,我们须要给我们分析师。客服解释这个行为为什么有风险。模型识别风险行为特征是什么。

        拓展时候预測样本的近邻採样机制可能要优化设计下。很多其它场景非常多特征不是离散或者二值的。而是连续的。尤其像Random Forest等树模型事实上更适合处理连续的这样的变量。

针对这样的情况,怎样处理? 採样怎么做? 一种简单的方法是把连续特征进行离散化。one-hot编码。这样就和lime对文本分类模型的解释中採样机制是一样的啦。一种就是全然和文本一样,对特征进行置0採样,无论是否是连续变量。

       整体上来说,LIME对模型的解释方法比較简单,论文描写叙述略显复杂(本来非常easy的东西为啥写的这么复杂呢?),论文很多其它是从实验角度来分析LIME方法的有效性。没有太多理论分析。让人感觉不是非常放心(想想这种方法有哪些坑)。毕竟实验是依据样本有关的。在一些复杂的场景是否有效? 还有实验很多其它用的文本和图像场景。其它领域是否奏效?  为什么在预測样本的採样样本中做加权回归分析。回归模型结果特征权重大小能代表原始模型在预測样本的表现呢?
       









LIME:模型预測结果是否值得信任?的更多相关文章

  1. 时间序列深度学习:状态 LSTM 模型预測太阳黑子(一)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/kMD8d5R/article/details/82111558 作者:徐瑞龙,量化分析师,R语言中文 ...

  2. 用R语言分析与预測员工离职

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/kMD8d5R/article/details/83542978 https://mmbiz.qpic ...

  3. x264代码剖析(十三):核心算法之帧间预測函数x264_mb_analyse_inter_*()

    x264代码剖析(十三):核心算法之帧间预測函数x264_mb_analyse_inter_*() 帧间预測是指利用视频时间域相关性,使用临近已编码图像像素预測当前图像的像素,以达到有效去除视频时域冗 ...

  4. MapR CEO对2016大数据的5个预測

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/02/mapr-ceo-5-big-data-predictions MapR ...

  5. 【Energy Forecasting】能源预測的发展和展望

    说明 本文的内容来自Tao Hong博士的Energy Forecasting: Past, Present and Future一文的翻译和整理. 引入 能源预測包括了电力行业中有关预測的广泛的内容 ...

  6. 体系结构复习2——指令级并行(分支预測和VLIW)

    第五章内容较多,接体系结构复习1 5.4 基于硬件猜測的指令级并行 动态分支预測是在程序运行时.依据转移的历史信息等动态确定预測分支方向.主要方法有: 基于BPB(Branch Prediction ...

  7. HM编码器代码阅读(14)——帧间预測之AMVP模式(二)predInterSearch函数

    简单介绍     predInterSearch基本的工作是ME(运动预计)和MC(运动补偿).     函数中有一个bTestNormalMC变量.它表示是否进行正常的MC过程,正常的MC过程就是进 ...

  8. 使用excel进行数据挖掘(6)---- 预測

    在配置环境后,能够使用excel进行数据挖掘. 环境配置问题可參阅: http://blog.csdn.net/xinxing__8185/article/details/46445435 例子 DM ...

  9. 基于SVM的数据分类预測——意大利葡萄酒种类识别

    update:把程序源代码和数据集也附上http://download.csdn.net/detail/zjccoder/8832699 2015.6.24 --------------------- ...

随机推荐

  1. ionic3 打包发布,以安卓说明

    1 添加图标 ionic cordova resources [<platform>] 官方https://ionicframework.com/docs/cli/cordova/reso ...

  2. hdu5790

    都快忘了在这类题的经典做法了…… 将字符串一个个的插入字典树,在字典树维护好有该前缀串s的最大编号字符串j,我们记作j控制了前缀串s 对于当前的第i个字符串,维护此时有当前每个字符串控制了多少个前缀串 ...

  3. 针对“永恒之蓝”攻击紧急处置手册(蠕虫 WannaCry)

    首先确认主机是否被感染 被感染的机器屏幕会显示如下的告知付赎金的界面: 如果主机已被感染: 则将该主机隔离或断网(拔网线).若客户存在该主机备份,则启动备份恢复程序. 如果主机未被感染: 则存在四种方 ...

  4. [jquery] 删除文章的时候弹出确认窗口

    [<a href="{:U(GROUP_NAME . '/Category/delCate')}/id/{$v.id}" onclick='return del();'> ...

  5. HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别(转)

    HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别 文章来源:http://www.cnblogs.com/beatIteWeNerverGiveU ...

  6. 欧拉图和欧拉圈-Play On Words(UVa10129)

    欧拉路和欧拉圈,简言之就是,从无向图的一个结点出发,走一条路/圈,每条边恰好经过一次,即一笔画问题 欧拉定理:一个无向图最多只有两个奇结点,那么我们就从一个奇结点出发,到另一个结点为之,一定有一条欧拉 ...

  7. </2017><2018>

    >>> Blog 随笔原始文档及源代码 -> github: https://github.com/StackLike/Python_Note >>> 统计信 ...

  8. 优先队列priority_queue

    优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素.但是它有一个特性,就是队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队.这点类似于给队列 ...

  9. [Contest20171109]函数(lipshitz)

    大M正在学习函数的光滑性并对Lipshitz常数非常感兴趣:当一个定义域为$[l,r]$的函数$f$,对于定义域内的任意$x,y$都有$\left|f(x)-f(y)\right|\leq K\cdo ...

  10. 【概率dp】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) D. Jon and Orbs

    直接暴力dp就行……f(i,j)表示前i天集齐j种类的可能性.不超过10000天就能满足要求. #include<cstdio> using namespace std; #define ...