花了一天时间对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. Android 使用WebView控件展示SVG图

    1.添加布局界面代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  2. 开放API端口SIGN算法详细设计

    开放API端口SIGN算法详细设计 前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要 ...

  3. AC日记——[Sdoi2008]Cave 洞穴勘测 bzoj 2049

    2049 思路: lct模板: 代码: #include <cstdio> #include <cstring> #include <iostream> #incl ...

  4. Jquery学习之路(三) 实现弹出层插件

    弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 ...

  5. 在使用Arduino中遇到的问题(无法使用中文注释、程序无法下载)

    在使用Arduino中遇到的问题: 在用arduino给蓝牙模块供电时,下载程序是下不进去的.即使显示下进去了,其实也是没下进去. 解决方法:拔掉蓝牙模块再下程序,或给蓝牙供电的线上加上一个开关. 在 ...

  6. OSSIM 4 组件目录

    在查找openvas问题的时候,发现: 主要组件的配置文件目录:/etc/default主要组件的安装目录:/usr/share 感觉和kali linux的的结构类似.

  7. 神器mimikatz使用命令方法总结

    神器mimikatz使用命令方法总结 文章地址:http://www.isharepc.com/300.html mimikatz是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进 ...

  8. 如何破解Webstorm 2016.2

    嗯,随着Webstorm2016.2的推出,网上的很多破解方法已经不能用了,不过功夫不负有心人,我终于查到了新的方法, 选择“license server” 输入:http://114.215.133 ...

  9. Longest Absolute File Path -- LeetCode

    Suppose we abstract our file system by a string in the following manner: The string "dir\n\tsub ...

  10. 【进制转换】codevs 1474 十进制转m进制

    #include<cstdio> using namespace std; ],en; int main() { scanf("%d%d",&n,&m) ...