学习
实践
活动
专区
工具
TVP
写文章
专栏首页ShowMeAI研究中心代码案例详解!如何让机器学习模型自解释!⛵
原创

代码案例详解!如何让机器学习模型自解释!⛵

本文讲解一种比较全能的『机器学习模型可解释性』方法——SHAP。通过调用Python的SHAP工具库,对机器学习模型做可解释性分析,判断不同特征对于当前模型的重要程度。


💡 作者:韩信子@ShowMeAI 📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41 📘 本文地址:https://www.showmeai.tech/article-detail/337 📢 声明:版权所有,转载请联系平台与作者并注明出处 📢 收藏ShowMeAI查看更多精彩内容

近年来,可解释的人工智能(XAI)和可解释的机器学习引起了越来越多的关注,因为直接把模型当做黑箱使用信任度和可控度都会受影响。有一些领域,模型的可解释性更加重要,例如在医疗领域,患者会质疑为什么模型诊断出他们患有某种疾病。

在本篇内容中, ShowMeAI 将给大家讲解一个流行的模型解释方法 SHAP(SHapley Additive exPlanations),并基于实际案例讲解如何基于工具库对模型做解释。

💡 模型可解释方法的划分

我们对各类模型可解释方法进行划分,有以下一些划分维度:

  • 模型无关和模型特定:一些方法可用于各种模型,而另一些方法是为解释特定模型而创建的。
  • 全局和局部解释:本地意味着进行分析以了解如何做出特定预测。 另一方面,全局解释研究了影响所有预测的因素。
  • 基于模型和事后归因:基于模型的模型是我们可以直接理解的模型,例如线性回归模型。 另一类是事后解释模型的归因方法,大多数方法都属于这一类。

💡 SHAP 原理

📘SHAP 全称是 SHapley Additive exPlanation,是比较全能的模型可解释性的方法,既可作用于全局解释,也可以局部解释,即单个样本来看,模型给出的预测值和某些特征可能的关系,可以用SHAP来解释。

SHAP 属于模型事后解释的方法,核心思想是计算特征对模型输出的边际贡献,再从全局和局部两个层面对『黑盒模型』进行解释。SHAP 构建一个加性的解释模型,所有的特征都视为『贡献者』。

对于每个预测样本,模型都产生一个预测值,SHAP value 就是该样本中每个特征所分配到的数值。

基本思想:计算一个特征加入到模型时的边际贡献,然后考虑到该特征在所有的特征序列的情况下不同的边际贡献,取均值,即某该特征的 SHAP baseline value。

💡 案例实战讲解

我们来拿一个场景案例讲解一下SHAP如何进行模型可解释分析,用到的数据是人口普查数据,我们会调用 Python 的工具库库 SHAP 直接分析模型。

💦 数据说明

ShowMeAI在本例中使用到的是 🏆美国人口普查收入数据集,任务是根据人口基本信息预测其年收入是否可能超过 50,000 美元,是一个二分类问题。

数据集可以在以下地址下载:

数据从美国1994年人口普查数据库抽取而来,可以用来预测居民收入是否超过50K/year。

该数据集类变量为年收入是否超过50k,属性变量包含年龄、工种、学历、职业、人种等重要信息,值得一提的是,14个属性变量中有7个类别型变量。

数据集各属性是:其中序号0~13是属性,14是类别。

字段序号

字段名

含义

类型

0

age

年龄

Double

1

workclass

工作类型*

string

2

fnlwgt

序号

string

3

education

教育程度*

string

4

education_num

受教育时间

double

5

maritial_status

婚姻状况*

string

6

occupation

职业*

string

7

relationship

关系*

string

8

race

种族*

string

9

sex

性别*

string

10

capital_gain

资本收益

string

11

capital_loss

资本损失

string

12

hours_per_week

每周工作小时数

double

13

native_country

原籍*

string

14(label)

income

收入标签

string

💦 SHAP计算 & 模型解释

from sklearn.model_selection import train_test_split
import lightgbm as lgb
import shap

shap.initjs()
X,y = shap.datasets.adult()
X_display,y_display = shap.datasets.adult(display=True)# create a train/test split

# 训练集与测试集切分及处理
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=7)
d_train = lgb.Dataset(X_train, label=y_train)
d_test = lgb.Dataset(X_test, label=y_test)# create a simple model

# 模型参数
params = {
    "max_bin": 512,
    "learning_rate": 0.05,
    "boosting_type": "gbdt",
    "objective": "binary",
    "metric": "binary_logloss",
    "num_leaves": 10,
    "verbose": -1,
    "min_data": 100,
    "boost_from_average": True
}

# 模型训练
model = lgb.train(params, d_train, 10000, valid_sets=[d_test], early_stopping_rounds=50, verbose_eval=1000)# explain the model

# 模型解释
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)# visualize the impact of each features
shap.summary_plot(shap_values, X)

上图中的SHAP结果值,告诉我们不同的特征维度(输入)对于当前模型的重要程度,包括总体的重要程度,以及对每个类别的判定的影响程度。

参考资料

推荐阅读

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 18本纸质书:OpenCV、Python和机器学习,总有一本适合你

    这次主页君蒙电子工业出版社赞助,为大家准备了6个三本:包含OpenCV类书籍四本,机器学习类书籍两本,每本书送出三份,一共十八个名额。这六种书籍都是干货满满的...

    企鹅号小编
  • 深度学习TabNet能否超越GBDT?

    向AI转型的程序员都关注了这个号??? 机器学习AI算法工程   公众号:datayx 随着深度神经网络的不断发展,DNN在图像、文本和语音等类型的数据上都有了...

    机器学习AI算法工程
  • 走向TensorFlow2.0,一步到位

    █ 本文作者 薛巍,阿里巴巴菜鸟网络技术专家,摘自《走向TensorFlow 2.0》一书推荐序。

    博文视点Broadview
  • Transformer模型与联邦机器学习详解!

    Transformer 作为一种基于注意力的编码器 - 解码器架构,不仅彻底改变了自然语言处理(NLP)领域,还在计算机视觉(CV)领域做出了一些开创性的工作。...

    zenRRan
  • 强的离谱!串烧70+个Transformer模型,涵盖CV、NLP、金融、隐私计算...

    Transformer 作为一种基于注意力的编码器 - 解码器架构,不仅彻底改变了自然语言处理(NLP)领域,还在计算机视觉(CV)领域做出了一些开创性的工作。...

    zenRRan
  • C+实现神经网络之三—神经网络的训练和测试

    前言 在之前的博客中我们已经实现了Net类的设计和前向传播和反向传播的过程。可以说神经网络的核心的部分已经完成。接下来就是应用层面了。要想利用神经网络解决实际的...

    企鹅号小编
  • 基于深度学习图像特征匹配,用于图像去重

    向AI转型的程序员都关注了这个号??? 机器学习AI算法工程   公众号:datayx 基于Flask RESTful api的图像特征检索方案,api传入ur...

    机器学习AI算法工程
  • 书单 | 元宇宙时代,快来为未来的职业生涯布局!

    ?点击“博文视点Broadview”,获取更多书讯 元宇宙似烈火烹油,让人感受到扑面而来的灼热感! 这个引得各大互联网巨头争相入局的领域,相信也会让大家迫不及...

    博文视点Broadview
  • 谷歌推出针对AI歧视的新课程!60分钟的ML公平自学训练模块 | 资源

    但谷歌不一样,作为一个曾经拿着“Don’t be evil”当口号的企业,最近放出了一个课程:机器学习公平自学训练模块,目的就是让更多的人了解偏见,评估偏见,从...

    量子位
  • 2020年NLP算法秋招“神仙打架”,我该如何应对?

    . Kernelized Linear Regression、Kernelized KNN

    zenRRan
  • 灵魂追问 | 教程那么多,你……看完了吗?

    机器之心
  • 无需数学就能写AI,MIT提出AI专用编程语言Gen

    近日,在提交编程语言设计与实现大会(PLDI)的一篇论文中,MIT 研究人员介绍了一种全新的概率编程系统 Gen。从计算机视觉到机器人和统计,用户可以通过 Ge...

    机器之心
  • 【机器学习】机器学习系列:(一)机器学习基础

    本章我们简要介绍下机器学习(Machine Learning)的基本概念。主要介绍机器学习算法的应用,监督学习和无监督学习(supervise...

    小莹莹
  • 从入门到头秃,2018年机器学习图书TOP10

    导读:无论是2018还是2019,都是属于AI的时代。要想在这个时代里 混口饭吃 改变世界,首先你得玩转机器学习。数据叔整理了2018年出版的机器学习重磅好书,...

    华章科技
  • 掌握BERT、GPT-3、图神经网络、知识图谱等大厂必备技能!

    金三银四很快就到了,铁子们做好跳槽拿高薪的准备了吗? 回想去年的算法岗,可谓是从灰飞烟灭到人间炼狱。之后的趋势都变成了这样:转行的开始转行,换专业的开始换专业...

    机器学习AI算法工程
  • 这场评分卡模型直播解答了我对于信贷风险的大部分疑问

    8月4日下午15:00顶象第三期业务安全大讲堂正式开讲。本期业务安全大讲堂由顶象研发总监管胜老师进行分享,针对信贷风控,管胜老师就评分卡模型做了深入浅出的讲解,...

    顶象技术
  • 掌握BERT、GPT-3、图神经网络、知识图谱等大厂必备技能!

    金三银四很快就到了,铁子们做好跳槽拿高薪的准备了吗? 回想去年的算法岗,可谓是从灰飞烟灭到人间炼狱。之后的趋势都变成了这样:转行的开始转行,换专业的开始换专业...

    昱良
  • 开发大数据基础教程(前端开发入门)

    第一阶段:linux+搜索+hadoop体系Linux大纲这章是基础课程,帮大家进入大数据领域打好Linux基础,以便更好地学习Hadoop,hbase,NoS...

    全栈程序员站长

扫码关注腾讯云开发者

领取腾讯云代金券