花了一天时间对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. Centos 7.3 安装 Mongodb

    通过yum 安装: yum install -y mongodb-server Mongodb操作命令: #启动 systemctl start mongod.service #关闭 systemct ...

  2. CentOS6.8-minimal安装gnome桌面 安装NVC远程桌面连接

    https://blog.csdn.net/nimasike/article/details/72844403

  3. HDU 2162(注意初始化位置!)

    Add ‘em Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  4. luogu P3368 【模板】树状数组 2

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  5. [BZOJ 4144] Petrol

    Link: BZOJ 4144 传送门 Solution: 一道不错的图论综合题 因为只询问关键点,因此重点是要求出关键点之间的最短路,以最短路建图 记$nst[i]$为离$i$最近的关键点:可以发现 ...

  6. 【动态规划】【记忆化搜索】CODEVS 1011 数的计算 2001年NOIP全国联赛普及组

    设答案为f(n),我们显然可以暴力地递归求解: f(n)=f(1)+f(2)+……+f(n/2). 但是n=1000,显然会超时. 考虑状态最多可能会有n种,经过大量的重复计算,所以可以记忆下来,减少 ...

  7. 【莫队算法】bzoj3289 Mato的文件管理

    莫队算法,离线回答询问,按一定大小(sqrt(n*log(n))左右)将答案分块,按 ①左端点所在块②右端点 双关键字排序. 然后暴力转移. 转移的时候用树状数组. O(n*sqrt(n)*log(n ...

  8. React Native学习之自定义Navigator

    Navigator还是最常用的组件, 所以自己封装了一个, 使用起来也比较简单, 如下: 首先导入组件 var MLNavigator = require('../Lib/MLNavigator'); ...

  9. OC语言基础之NSArray

    0.数组的分类 NSArray :不可变数组 NSMutableArray : 可变数组 1: // @[] 只创建不可变数组NSArray 2: /* 错误写法 3: NSMutableArray ...

  10. Eclipse快速补全快捷键Ctrl+1修改为Android Studio的Alt+Enter

    步骤: Window ->Preferences->key-> type filter text 下输入quick fix(这个是快速补全的快捷键)改为Alt+Enter 下面的wh ...