您当前的位置:首页 > 电脑百科 > 人工智能

可解释的AI (XAI):如何使用LIME 和 SHAP更好地解释模型的预测

时间:2021-12-17 12:00:21  来源:  作者:deephub

作为数据科学家或机器学习从业者,将可解释性集成到机器学习模型中可以帮助决策者和其他利益相关者有更多的可见性并可以让他们理解模型输出决策的解释。

在本文中,我将介绍两个可以帮助了解模型的决策过程的模型 LIME 和 SHAP。

模型

我们将使用来自 Kaggle 的糖尿病数据集。 主要关注点是可解释性,因此我们不会花太多时间尝试拥有花哨的模型。

# Load useful libraries
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
`
# Read data set
df = pd.read_csv("./data/diabetes.csv")
# Separate Features and Target Variables
X = df.drop(columns='Outcome')
y = df['Outcome']
# Create Train & Test Data
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.3, 
stratify =y, 
random_state = 13)
# Build the model
rf_clf = RandomForestClassifier(max_features=2, n_estimators =100 ,bootstrap = True)
# Make prediction on the testing data
y_pred = rf_clf.predict(X_test)
# Classification Report 
print(classification_report(y_pred, y_test))
rf_clf.fit(X_train, y_train)

SHAP

它是 SHapley Additive exPlanations的缩写。 该方法旨在通过计算每个特征对预测的贡献来解释实例/观察的预测。

# Import the SHAP library
import shap
# load JS visualization code to notebook
shap.initjs()
# Create the explainer
explainer = TreeExplainer(rf_clf)
"""
Compute shap_values for all of X_test rather instead of 
a single row, to have more data for plot.
"""
shap_values = explainer.shap_values(X_test)

print("Variable Importance Plot - Global Interpretation")
figure = plt.figure()
shap.summary_plot(shap_values, X_test)

SHAP有许多用于模型解释的可视化图表,但我们将着重介绍其中的几个。

特征重要性的汇总图

print("Variable Importance Plot - Global Interpretation")
figure = plt.figure()
shap.summary_plot(shap_values, X_test)
可解释的AI (XAI):如何使用LIME 和 SHAP更好地解释模型的预测

 

我们可以从上面的图中得到以下的结论:

  1. 它显示了重要特征的列表,从最重要到最不重要(从上到下)。
  2. 所有特征似乎对诊断为糖尿病(标签 = 1)或未诊断(标签 = 0)的两个类别的贡献均等,因为基本上都占据了矩形的 50%。
  3. 根据该模型,Glucose(葡萄糖)是对预测贡献最大的特征。Age(年龄)是贡献第二大的特征
  4. Pregnancies(怀孕)是预测能力最强的第 5 个特征。

特定分类结果的汇总图

# Summary Plot Deep-Dive on Label 1
shap.summary_plot(shap_values[1], X_test)
可解释的AI (XAI):如何使用LIME 和 SHAP更好地解释模型的预测

 

对于分类问题,每个标签都有 SHAP 值。在我们的例子中,我们使用 1 (True) 的预测显示该类结果的汇总。该图的表示内容如下:

  • 特征的重要性和排序与汇总图一样,排名越上,重要性越高。
  • 图中每个点代表单个数据实例的特征值。
  • 颜色表明该特征是高值(红色)还是低值(蓝色)。
  • X 轴代表对预测输出的正或负贡献

当我们将这些分析应用于特征时,我们得到以下结论:

对于葡萄糖:我们看到大多数高值(红点)对预测输出有正贡献(在 X 轴上为正)。换句话说,如果单个数据实例的葡萄糖量很高,则其获得1结果(被诊断患有糖尿病)的机会会大大增加,而低量(蓝点)会降低(负 X 轴值)被诊断为糖尿病的概率。

对于年龄:对年龄进行相同的分析。年龄越高,数据实例(患者)最有可能被诊断出患有糖尿病。

另一方面,模型在涉及未成年人时似乎很混乱,因为我们可以在垂直线(X 轴 = 0)的每一侧观察到几乎相同数量的数据点。由于年龄特征对分析来说似乎令人困惑,我们可以使用下面的相关图来获得更细粒度的信息。

相关图(依赖图)

# Dependence Plot on Age feature
shap.dependence_plot('Age', shap_values[1], X_test, interaction_index="Age")
可解释的AI (XAI):如何使用LIME 和 SHAP更好地解释模型的预测

 

从相关图中我们可以清楚地看到,30岁以下的患者被诊断为糖尿病的风险较低,而30岁以上的患者被诊断为糖尿病的风险较高。

LIME

它是 Local Interpretable Model Agnostic Explanation的缩写。 局部(Local )意味着它可以用于解释机器学习模型的个别预测。

要使用它也非常的简单,只需要2个步骤:(1) 导入模块,(2) 使用训练值、特征和目标拟合解释器。

# Import the LimeTabularExplainer module
from lime.lime_tabular import LimeTabularExplainer
# Get the class names
class_names = ['Has diabetes', 'No diabetes']
# Get the feature names
feature_names = list(X_train.columns)
# Fit the Explainer on the training data set using the LimeTabularExplainer 
explainer = LimeTabularExplainer(X_train.values, feature_names = feature_names, 
class_names = class_names, mode = 'classification')

代码中我们使用class_names创建了两个标签,而不是 1 和 0因为使用名字会更加的直观。

对单例进行解释说明

这里的解释是针对测试数据中的单个实例进行的

#Perform the explanation on the 8th instance in the test data
explaination = explainer.explain_instance(X_test.iloc[8], rf_clf.predict_proba)
# show the result of the model's explaination
explaination.show_in_notebook(show_table = True, show_all = False)
可解释的AI (XAI):如何使用LIME 和 SHAP更好地解释模型的预测

 

该模型以 73% 的置信度预测该特定患者患有糖尿病,并解释该预测,因为血糖水平高于 99,血压高于 70。在右侧,我们可以看到患者特征的值 。

总结

本文中接单的介绍了如何使用 SHAP 和 LIME 解释您的机器学习模型。 现在,你也可以对构建的模型进行可解释性分析了,这可以帮助决策者和其他利益相关者获得更多的可见性并理解导致模型输出的决策的解释。 ,你可以在下面的资源中找到本文包含的两个Python包,阅读他们的文档可以找到更加高级的使用方式。

作者:Zoumana Keita



Tags:AI   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Retouch Pro是一款优秀的图像修饰插件,帮助ps用户更快地进行图像照片的修饰。 由于其强大的人工智能系统,您可以轻松就获得专业的效果,并且比以往的手动更快,效果更好,操作更简单...【详细内容】
2021-12-27  Tags: AI  点击:(4)  评论:(0)  加入收藏
Chrome 正在试验 CSS @container 查询器功能,这是由 Oddbird 的 Miriam Suzanne 和一群网络平台开发者支持的 CSS 工作组 Containment Level 3 规范。@container 查询器使我...【详细内容】
2021-12-23  Tags: AI  点击:(8)  评论:(0)  加入收藏
作为数据科学家或机器学习从业者,将可解释性集成到机器学习模型中可以帮助决策者和其他利益相关者有更多的可见性并可以让他们理解模型输出决策的解释。在本文中,我将介绍两个...【详细内容】
2021-12-17  Tags: AI  点击:(15)  评论:(0)  加入收藏
JetBrains 宣布,全新数据科学 IDE DataSpell 已正式发布!DataSpell 是 JetBrains 的新 IDE,专为参与探索性数据分析和 ML 模型原型设计的人员而设计。DataSpell 在一个符合人体...【详细内容】
2021-12-15  Tags: AI  点击:(24)  评论:(0)  加入收藏
AirPods固件升级最新版。没有什么可可以说的,赶紧生吧,感觉很完美。重低音加强隔音加强。看来苹果要出新耳机了,如果你还想换耳机苹果,你是苹果手机就在等等,相信在明年的五月份...【详细内容】
2021-12-14  Tags: AI  点击:(15)  评论:(0)  加入收藏
一文看懂"async"和“await”关键词是如何简化了C#中多线程的开发过程当我们使用需要长时间运行的方法(即,用于读取大文件或从网络下载大量资源)时,在同步的应用程序中,应用程序本...【详细内容】
2021-12-01  Tags: AI  点击:(23)  评论:(0)  加入收藏
基于算法的业务或者说AI的应用在这几年发展得很快。但是,在实际应用的场景中,我们经常会遇到一些非常奇怪的偏差现象。例如,Facebook将黑人标记为灵长类动物、城市图像识别系统...【详细内容】
2021-11-08  Tags: AI  点击:(32)  评论:(0)  加入收藏
一、背景介绍在网上冲浪少不了用到搜索引擎,而很多朋友都习惯把Google视为第一个选择对象。当然Google无论在搜索速度还是结果关联性方面都是十分优秀的。但百度(http://www.b...【详细内容】
2021-11-05  Tags: AI  点击:(31)  评论:(0)  加入收藏
由于一些特殊原因,使用国内手机号码注册谷歌邮箱会有各种限制,最常见的一种就是此电话号码无法用于进行验证,这就让人很无语了,很多朋友都卡在了这里。本期就针对国内手机号码注...【详细内容】
2021-10-27  Tags: AI  点击:(38)  评论:(0)  加入收藏
新京报贝壳财经讯(记者 罗亦丹)10月25日,创新工场董事长兼首席执行官李开复在2021科大讯飞全球1024开发者节上表示,AI自动化、先进计算架构、新能源技术和生命科学技术四个领域...【详细内容】
2021-10-26  Tags: AI  点击:(31)  评论:(0)  加入收藏
▌简易百科推荐
作为数据科学家或机器学习从业者,将可解释性集成到机器学习模型中可以帮助决策者和其他利益相关者有更多的可见性并可以让他们理解模型输出决策的解释。在本文中,我将介绍两个...【详细内容】
2021-12-17  deephub    Tags:AI   点击:(15)  评论:(0)  加入收藏
基于算法的业务或者说AI的应用在这几年发展得很快。但是,在实际应用的场景中,我们经常会遇到一些非常奇怪的偏差现象。例如,Facebook将黑人标记为灵长类动物、城市图像识别系统...【详细内容】
2021-11-08  数据学习DataLearner    Tags:机器学习   点击:(32)  评论:(0)  加入收藏
11月2日召开的世界顶尖科学家数字未来论坛上,2013年诺贝尔化学奖得主迈克尔·莱维特、2014年诺贝尔生理学或医学奖得主爱德华·莫索尔、2007年图灵奖得主约瑟夫·斯发斯基、1986年图灵奖得主约翰·霍普克罗夫特、2002...【详细内容】
2021-11-03  张淑贤  证券时报  Tags:人工智能   点击:(39)  评论:(0)  加入收藏
鉴于物联网设备广泛部署、5G快速无线技术闪亮登场,把计算、存储和分析放在靠近数据生成的地方来处理,让边缘计算有了用武之地。 边缘计算正在改变全球数百万个设备处理和传输...【详细内容】
2021-10-26    计算机世界  Tags:边缘计算   点击:(45)  评论:(0)  加入收藏
这是几位机器学习权威专家汇总的725个机器学习术语表,非常全面了,值得收藏! 英文术语 中文翻译 0-1 Loss Function 0-1损失函数 Accept-Reject Samplin...【详细内容】
2021-10-21  Python部落    Tags:机器学习   点击:(43)  评论:(0)  加入收藏
要开始为开源项目做贡献,有一些先决条件:1. 学习一门编程语言:由于在开源贡献中你需要编写代码才能参与开发,你需要学习任意一门编程语言。根据项目的需要,在后期学习另一种语言...【详细内容】
2021-10-20  TSINGSEE青犀视频    Tags:机器学习   点击:(37)  评论:(0)  加入收藏
SimpleAI.人工智能、机器学习、深度学习还是遥不可及?来这里看看吧~ 从基本的概念、原理、公式,到用生动形象的例子去理解,到动手做实验去感知,到著名案例的学习,到用所学来实现...【详细内容】
2021-10-19  憨昊昊    Tags:神经网络   点击:(47)  评论:(0)  加入收藏
语言是人类思维的基础,当计算机具备了处理自然语言的能力,才具有真正智能的想象。自然语言处理(Natural Language Processing, NLP)作为人工智能(Artificial Intelligence, AI)的核心技术之一,是用计算机来处理、理解以及运...【详细内容】
2021-10-11    36氪  Tags:NLP   点击:(48)  评论:(0)  加入收藏
边缘计算是什么?近年来,物联网设备数量呈线性增长趋势。根据艾瑞测算, 2020年,中国物联网设备的数量达74亿,预计2025年突破150亿个。同时,设备本身也变得越来越智能化,AI与互联网在...【详细内容】
2021-09-22  汉智兴科技    Tags:   点击:(54)  评论:(0)  加入收藏
说起人工智能,大家总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能没什么太大关系。人工智能确实跟人类大脑很相似,但它们的显著差异在于人工智能...【详细内容】
2021-09-17  异步社区    Tags:人工智能   点击:(57)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条