模型解释性--LIME算法

简 介

简单的模型例如线性回归,LR等模型非常易于解释,但在实际应用中的效果却远远低于复杂的梯度提升树模型以及神经网络等模型。现在大部分互联网公司的建模都是基于梯度提升树或者神经网络模型等复杂模型,遗憾的是,这些模型虽然效果好,但是我们却较难对其进行很好地解释,这也是目前一直困扰着大家的一个重要问题,现在大家也越来越加关注模型的解释性。

本文介绍一种解释机器学习模型输出的方法LIME。

LIME

LIME(Local Interpretable Model-agnostic Explanations)支持的模型包括:

  • 结构化模型的解释;

  • 文本分类器的解释;

  • 图像分类器的解释;

LIME被用作解释机器学习模型的解释,通过LIME我们可以知道为什么模型会这样进行预测。

本文我们就重点观测一下LIME是如何对预测结果进行解释的。

代 码

此处我们使用winequality-white数据集,并且将quality<=5设置为0,其它的值转变为1.

# !pip install lime
import pandas as pd
from xgboost import XGBClassifier
import shap
import numpy as np
from sklearn.model_selection import train_test_split
df = pd.read_csv('./data/winequality-white.csv',sep = ';')
df['quality'] = df['quality'].apply(lambda x: 0 if x <= 5 else 1)
df.head()
fixed acidity volatile acidity citric acid residual sugar chlorides free sulfur dioxide total sulfur dioxide density pH sulphates alcohol quality
0 7.0 0.27 0.36 20.7 0.045 45.0 170.0 1.0010 3.00 0.45 8.8 1
1 6.3 0.30 0.34 1.6 0.049 14.0 132.0 0.9940 3.30 0.49 9.5 1
2 8.1 0.28 0.40 6.9 0.050 30.0 97.0 0.9951 3.26 0.44 10.1 1
3 7.2 0.23 0.32 8.5 0.058 47.0 186.0 0.9956 3.19 0.40 9.9 1
4 7.2 0.23 0.32 8.5 0.058 47.0 186.0 0.9956 3.19 0.40 9.9 1
# 训练集测试集分割
X = df.drop('quality', axis=1)
y = df['quality']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# 模型训练
model = XGBClassifier(n_estimators = 100, random_state=42)
model.fit(X_train, y_train)
score = model.score(X_test, y_test)
score
The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. 0.832653061224489

对单个样本进行预测解释

下面的图中表明了单个样本的预测值中各个特征的贡献。

import lime
from lime import lime_tabularexplainer = lime_tabular.LimeTabularExplainer(training_data=np.array(X_train),feature_names=X_train.columns,class_names=['bad', 'good'],mode='classification'
)
  • 模型有84%的置信度是坏的wine,而其中alcohol,total sulfur dioxide是最重要的。

exp = explainer.explain_instance(data_row=X_test.iloc[1], predict_fn=model.predict_proba)
exp.show_in_notebook(show_table=True)
  • 模型有59%的置信度是坏的wine,而其中alcohol,chlorides, density, citric acid是最重要的预测参考因素。

exp = explainer.explain_instance(data_row=X_test.iloc[3], predict_fn=model.predict_proba)
exp.show_in_notebook(show_table=True)

适用问题

LIME可以认为是SHARP的升级版,它通过预测结果解释机器学习模型很简单。它为我们提供了一个很好的方式来向非技术人员解释地下发生了什么。您不必担心数据可视化,因为LIME库会为您处理数据可视化。

参考文献

  1. https://www.kaggle.com/piyushagni5/white-wine-quality

  2. LIME: How to Interpret Machine Learning Models With Python

  3. https://github.com/marcotcr/lime

模型解释器-LIME相关推荐

  1. 【机器学习】Github8.9K,目前最佳模型解释器-LIME!

    作者:杰少 模型解释性--LIME算法 简 介 简单的模型例如线性回归,LR等模型非常易于解释,但在实际应用中的效果却远远低于复杂的梯度提升树模型以及神经网络等模型.现在大部分互联网公司的建模都是基于 ...

  2. R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理、构建词袋模型、构建xgboost文本分类模型、基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化

    R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理.构建词袋模型.构建xgboost文本分类模型.基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化 目录

  3. R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果、LIME解释器进行模型预测结果解释并可视化

    R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果.LIME解释器进行模型预测结果解释并可视化 ...

  4. R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释多个iris数据样本的预测结果、使用LIME解释器进行模型预测结果解释

    R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释多个iris数据样本的预测结果.使用LIME解释器进行模型预测结果解释并可 ...

  5. 机器学习完整项目实战附代码(一):探索型数据分析+特征工程+建模+报告

    1. 项目背景   泰坦尼克号的沉没是历史上最臭名昭著的沉船之一.1912年4月15日,在她的处女航中,被广泛认为"不沉"的"泰坦尼克号"在与冰山相撞后沉没.不 ...

  6. LIME算法:模型的可解释性(代码实现)

    在这篇笔记中分享前段时间我对于LIME算法的调研. 一.算法简介 LIME算法是Marco Tulio Ribeiro2016年发表的论文<"Why Should I Trust Yo ...

  7. lime 模型_使用LIME的糖尿病预测模型解释— OneZeroBlog

    lime 模型 Article outline 文章大纲 Introduction介绍 Data Background资料背景 Aim of the article本文的目的 Exploratory ...

  8. 模型可解释性-LIME

    在算法建模过程中,我们一般会用测试集的准确率与召回率衡量一个模型的好坏.但在和客户的实际沟通时,单单抛出一个数字就想要客户信任我们,那肯定是不够的,这就要求我们摆出规则,解释模型.但不是所有的模型都是 ...

  9. 模型可解释性-树结构可视化

    在算法建模过程中,我们一般会用测试集的准确率与召回率衡量一个模型的好坏.但在和客户的实际沟通时,单单抛出一个数字就想要客户信任我们,那肯定是不够的,这就要求我们摆出规则,解释模型.但不是所有的模型都是 ...

  10. 还在随缘炼丹?一文带你详尽了解机器学习模型可解释性的奥秘

    一只小狐狸带你解锁NLP/ML/DL秘籍 正文来源:腾讯技术工程 所谓炼丹,就是将大量灵材使用丹炉将其凝炼成丹.练成的灵丹蕴含灵材的大部分特性,方便携带,容易吸收.高级仙丹在炼制中更是能吸收天地灵气从 ...

最新文章

  1. 【转】Nginx+uWSGI 部署 Django 应用
  2. hdu 1528+hdu 1962(最小覆盖)
  3. docker下部署Tomcat运行war包
  4. 操作系统学习总结(超赞!!!)
  5. 亲戚(信息学奥赛一本通-T1389)
  6. 【白皮书分享】2022年新品营销白皮书-阿里妈妈.pdf(附下载链接)
  7. 任正非谈鸿蒙系统06 新闻,任正非首谈华为鸿蒙操作系统:很有可能比安卓和苹果还要快!...
  8. 3D人脸重建算法汇总
  9. 20151221jquery学习笔记--验证插件
  10. Irrlicht引擎例子说明及中文链接
  11. Tomcat历史版本下载
  12. windows - 更改用户账户名称(windows10)
  13. 基于TMC4361-超静音闭环步进电机驱动方案
  14. 石墨笔记,幕布和Effie哪个更适合记者?
  15. 路由的导航守卫过渡动效transtion导航守卫 路由懒加载 路由元信息 @stage3---wee2--day7
  16. 第二届“红明谷”杯数据安全大赛-安全意识赛
  17. 淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)
  18. 【C语言】自定义函数例题解析
  19. 180515 逆向-被隐藏的真实(DDCTF_Re3)
  20. 什么样的企业适合做“两化融合贯标”?

热门文章

  1. 基于ISO27001的数据中心信息安全管理体系
  2. vue router 嵌套、父子、多个路由跳转传值获取不到参数undefined
  3. 一张图快速了解23种设计模式
  4. Linux安装flux护眼软件
  5. 苦涩又难理解的IO<1>
  6. 计算机英语念法,电脑的英文读音标准带音标的
  7. 《数解道法》(一)前言
  8. 高并发,我把握不住啊!
  9. selenium上传附件(借助AutoIt识别Windows上传窗口)
  10. CSAPP第六章家庭作业(原书第二版)