花了一天时间对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. rest_frameword框架的基本组件

    序列化 序列化:转化数据和校验数据(提交数据时校验数据类型) 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式.我们可 ...

  2. Django基本操作

    Django官网下载页面 安装(安装最新LTS版): pip3 install django==1.11.9 创建一个django项目: 下面的命令创建了一个名为"s8"的Djan ...

  3. Android xmlpull 方式解析xml文件

    1.新建一个xml文件,放在res/xml目录下 <?xml version="1.0" encoding="utf-8"?> <citys& ...

  4. Python 进阶 之 traceback模块

    Traceback模块官方英文描述: Help on module traceback: NAME traceback - Extract, format and print information ...

  5. laravel获取checkbox值的小技巧

    以前老是用三元运算符来判断,现在有了更好的方法: 1.html代码 <input type="hidden" name="approved" value= ...

  6. [BZOJ1492] [NOI2007]货币兑换Cash 斜率优化+cdq/平衡树维护凸包

    1492: [NOI2007]货币兑换Cash Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 5907  Solved: 2377[Submit][Sta ...

  7. 前端学习blog

    有一些js写的小游戏,很有趣  http://oldj.net

  8. HDU 2537 8球胜负(模拟)

    /*这是一个模拟题,模拟一种台球的进球过程,并且判定胜负. 对于输入的字符串,如果出现R则红方记1分,如果出现Y则黄方记1分. 最后根据哪一方打进黑球和得分情况判定胜负. 程序说明: 这里给出两个C语 ...

  9. Geodetic集合 c++

    感谢某位不知名dalao的博客,我才知道怎么解题.... 最开始连题意都读错了....这个故事告诉我们要好好读题 描述 Description 图G是一个无向连通图,没有自环,并且两点之间至多只有一条 ...

  10. Tarjan缩点【p1262】间谍网络

    Description 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中 ...