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

💡 作者:韩信子@ 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 美元,是一个二分类问题。

数据集可以在以下地址下载: 📘 https://archive.ics.uci.edu/ml/datasets/Adult 📘 https://archive.ics.uci.edu/ml/machine-learning-databases/adult/

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

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

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

字段序号字段名含义类型
0age年龄Double
1workclass工作类型*string
2fnlwgt序号string
3education教育程度*string
4education_num受教育时间double
5maritial_status婚姻状况*string
6occupation职业*string
7relationship关系*string
8race种族*string
9sex性别*string
10capital_gain资本收益string
11capital_loss资本损失string
12hours_per_week每周工作小时数double
13native_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结果值,告诉我们不同的特征维度(输入)对于当前模型的重要程度,包括总体的重要程度,以及对每个类别的判定的影响程度。

参考资料

  • 📘 SHAP 文档: https://shap.readthedocs.io/en/latest/index.html
  • 📘 美国人口普查收入数据集: https://archive.ics.uci.edu/ml/datasets/census+income

机器学习模型搭建实验数据Adult.data.csv
06-05
美国人口普查数据集的数据,该数据从美国1994年人口普查数据库抽取而来,可以用来预测居民收入是否超过50K/year。该数据集类变量为年收入是否超过50k,属性变量包含年龄,工种,学历,职业,人种等重要信息,值得一提的是,14个属性变量中有7个类别型变量,数据集各属性:其中序号0~13、是属性,14是类别
基于美团内部案例详解机器学习如何解决问题 -美团技术团队
02-25
随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术 界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的研究各有侧重,学术界侧 重于对机器学习理论的研究,工业界侧重于如何用机器学习来解决实际问题。我们结合美团在机器学 习上的实践,进行一个实战(InAction)系列的介绍(带“机器学习InAction系列”标签的文章), 介绍机器学习在解决工业界问题的实战中所需的基本技术、经验和技巧。本文主要结合实际问题,概 要地介绍机器学习解决实际问题的整个流程,包括对问题建模、准备训练数据、抽取特征、训练模型 和优化模型等关键环节;另外几篇则会对这些关键环节进行更深入地介绍。
Python机器学习项目开发实战_预测建模_编程案例解析实例详解课程教程.pdf
05-06
预测建模(Predictive modeling)可能是数据分析中最吸引人的领域之一。近几年,由于大数据在各个垂直领域的蓬勃发展,预测建模备受关注。在数据挖掘领域,预测建模常用来预测未来趋势。预测建模是一种用来预测系统未来行为的分析技术,它由一群能够识别独立输入变量与反馈目标关联关系的算法构成。我们根据观测值创建一个数学模型,然后用这个模型去预测未来发生的事情。在预测建模中,需要收集已知的响应数据来训练模型。一旦模型建成,就可以用一些指标来检验它,然后用它预测未来值。可以通过许多种不同的算法来创建预测模型。本章将利用SVM来建立线性模型与非线性模型
Python机器学习项目开发实战_预测股票市场_编程案例解析实例详解课程教程.pdf
04-01
在生物学中,有一个相当知名的现象,称为红色皇后的竞赛。这个想法是每个有机体都加入一种不能获得巨大优势的竞争,而只是能够跟上不断变化的、充满对立生物的环境。这个词来自 Lewis Carol 的“Through the Looking Glass”一书:“现在,这里,你要理解,拼命的奔跑,你才可以保持在原地。”这种现象的一个例子是耐抗生素的超级细菌之兴起,例如 MRSA。随着我们研发出越来越强大的抗生素,这些细菌也在进化越来越好的防御系统,以打败我们的药物。这似乎和股票市场没什么关系,但是同样的现象每天都在金融市场出现。就像有生命的有机体那样,市场每天都在演化,今天还能成立的事情,明天可能就完全行不通了。。。。。。
自动机器学习模型解释与可解释
禅与计算机程序设计艺术
12-31 803
1.背景介绍 自动机器学习(AutoML)是一种自动化的机器学习过程,旨在自动选择合适的机器学习算法、参数和特征,以解决各种类型的问题。随着数据量的增加和机器学习算法的复杂性,手动选择合适的算法和参数已经成为一个非常困难的任务。自动机器学习旨在解决这个问题,通过自动化的方式来选择合适的算法和参数,从而提高机器学习模型的性能。 然而,在实践中,自动机器学习模型解释和可解释性变得越来越重要。这是...
论文-深度自可解释模型
m0_46634282的博客
11-22 1017
读论文-深度自可解释模型
读论文:SELFEXPLAIN: A Self-Explaining Architecture for Neural Text Classifiers
09-19 527
读论文:SELFEXPLAIN: A Self-Explaining Architecture for Neural Text Classifiers 小白成长(交作业)之路
代码规范 : 自解释的神话
qq_22555107的博客
12-20 1514
写在前面: 好想找个女朋友,这样就可以帮我想变量名了,(玩笑脸) 计算机科学家想做的,就是将代码抽象成现实中有的事物,而命名就围绕这个想法展开.多数初学者觉得,特意为代码去取一个名字没有必要.可你该明白: “代码阅读次数远远多于编写的次数, 确保名字更侧重于阅读方便而不是编写方便” (当然,如果你认为你的程序能够满足”很好的描述了现实生活中的场景”,那么恭喜,你可以不用看着一篇文章了)基本命名一个
如何高效优雅的完成一次机器学习服务部署?一文详解部署难点以及实战案例
热门推荐
master_hunter的博客
04-07 2万+
数据准备:从公共数据集中获取数据,并进行数据清洗和特征工程处理,将数据转化为适合机器学习算法处理的格式。创建SageMaker Notebook实例:通过AWS Management Console或AWS SDK创建SageMaker Notebook实例,并连接到实例。编写代码:在Notebook中编写代码,使用Amazon SageMaker提供的XGBoost算法和数据输入通道,加载并处理数据,训练并评估模型模型调优:通过调整模型的参数和超参数,优化模型性能。
Python机器学习项目开发实战_监督学习_编程案例解析实例详解课程教程.pdf
05-06
监督学习是指在有标记的样本(labeled samples)上建立机器学习模型。例如,如果用尺寸、位置等不同参数建立一套模型来评估一栋房子的价格,那么首先需要创建一个数据库,然后为参数打上标记。我们需要告诉算法,...
人工智能机器学习推荐系统项目案例实战视频教程
08-16
课程从推荐系统概述开始,详解推荐系统中两大核心算法:协同过滤与隐语义模型。使用Surprise库对电影数据集进行建模推荐,最后使用Tensorflow实现一个简易的基于隐语义模型的推荐系统。 课程章节 第1章推荐系统...
自主学习与模型解释与可解释人工智能
禅与计算机程序设计艺术
12-25 49
1.背景介绍 自主学习(AutoML)、模型解释(Model Interpretability)和可解释人工智能(Explainable AI, XAI)是近年来人工智能领域的热门研究方向之一。自主学习是指自动地选择合适的机器学习算法,并优化其参数,以解决特定的问题。模型解释则关注机器学习模型的决策过程,以便人类更好地理解和信任这些模型。可解释人工智能
ICLR 2021 | 自解释神经网络—Shapley Explanation Networks
阿木寺的博客
01-20 1635
点击上方“CVer”,选择加"星标"置顶重磅干货,第一时间送达本文作者:王睿| 来源:知乎(已授权)https://zhuanlan.zhihu.com/p/345...
新建文本文档.txt
最新发布
05-31
新建文本文档
开源Git gui工具Fork
05-31
开源Git gui工具Fork,CSDN能找到教程,但是资料不多,推荐用Tortoise
yolov5在华为昇腾atlas上加速推理
05-31
该资源为yolov5在华为昇腾atlas上使用Ascend310芯片加速推理,属于c++后端开发,适合C++开发者在华为昇腾盒子上移植深度学习算法的博主们。 资源是demo形式,包含完整的一套代码,还有转好的离线模型文件和跑出的测试结果图片。
C++ 实现贪吃蛇小游戏
05-31
C++贪吃蛇小游戏简介 内容概要 C++贪吃蛇小游戏是一款经典的2D游戏,它利用C++编程语言结合基本的图形库(如NCurses库或SDL库)实现。游戏的核心玩法包括控制贪吃蛇在封闭的场地内移动,通过吃掉随机出现的食物来增长身体长度,同时避免碰到场地边界或自己的身体,否则游戏结束。游戏界面简洁直观,通过键盘控制贪吃蛇的方向,提供流畅的游戏体验。 适用人群 C++贪吃蛇小游戏适用于广泛的人群,特别是: C++编程学习者:对于正在学习C++编程的学生或爱好者,这款小游戏是一个很好的实践项目。通过实现游戏,可以加深对C++语法、数据结构、面向对象编程等知识点的理解和应用。 使用场景及目标 C++贪吃蛇小游戏可以在以下场景中使用,并达到以下目标: 编程教学实践:在编程教学课堂上,教师可以使用该游戏作为案例,引导学生完成项目的开发。通过实践,学生可以更好地掌握C++编程技能,并将理论知识应用于实际项目中。 个人项目实践:对于个人学习者,实现贪吃蛇小游戏可以作为自我挑战和实践的机会。通过独立完成项目,可以提升自己的编程能力和解决问题的能力。
ec616DataSheet
05-31
移芯NBIOT 芯片,NB芯片,水表电表芯片,烟感 地磁芯片 超弱信号环境业务能力。
python代码案例详解-Python代码样例列表
06-10
好的,下面是一些Python代码样例: 1. 计算两个数的和: ```python num1 = 10 num2 = 20 sum = num1 + num2 print("两数之和为:", sum) ``` 2. 判断一个数是否为质数: ```python num = int(input("请输入一个正整数:")) if num > 1: for i in range(2, num): if (num % i) == 0: print(num, "不是质数") break else: print(num, "是质数") else: print(num, "不是质数") ``` 3. 将一个列表中的元素按照从小到大的顺序进行排序: ```python list1 = [10, 5, 8, 13, 20] list1.sort() print("排序后的列表:", list1) ``` 4. 使用递归计算阶乘: ```python def factorial(num): if num == 1: return 1 else: return num * factorial(num-1) num = int(input("请输入一个正整数:")) print(num, "的阶乘为:", factorial(num)) ``` 5. 使用列表推导式生成一个包含1-10的平方的列表: ```python squares = [i**2 for i in range(1, 11)] print("1-10的平方列表:", squares) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 买定离手!AI预测英雄联盟S12冠军;微软使用AI提高农业生产效率;编程语言的自动生成;机器学习核方法入门·电子书;前沿论文 | ShowMeAI资讯日报 33806
  • 图解机器学习算法(7) | 随机森林分类模型详解(机器学习通关指南·完结) 31284
  • 深度学习与计算机视觉教程(17) | 深度强化学习 (马尔可夫决策过程,Q-Learning,DQN)(CV通关指南·完结) 30289
  • 深度学习与计算机视觉教程(18) | 深度强化学习 (梯度策略,Actor-Critic,DDPG,A3C)(CV通关指南·完结) 29474
  • 机器学习实战 | Python机器学习算法应用实践 27815

分类专栏

  • ShowMeAI资讯日报 ⛽ 首席AI资讯收纳官 362篇
  • 全球名校AI课程 ⛽ 43篇
  • 求职面试宝典 ⛽ AI Offer收割机 5篇
  • 大厂技术实现方案 ⛽ 业务详解+代码实现 9篇
  • AI工具库应用大全 ⛽ 哆啦A梦百宝箱 29篇
  • ShowMeAI实战教程
  • 数据分析 ⛵ 面试宝典&实战项目 45篇
  • 机器学习项目通关指南 ⛵ 全场景覆盖AI解决方案 38篇
  • 深度学习实战通关指南 ⛵ 顶级「炼丹师」案例驱动成长之路 19篇
  • NLP实战通关指南 ⛵ 文本&语音项目实操大全 5篇
  • CV实战通关指南 ⛵ 视觉项目航母级实操 5篇
  • ShowMeAI基础教程
  • 图解机器学习算法 ◉ 从入门到精通 15篇
  • 深度学习教程 ◉ 吴恩达专项课程最全笔记 18篇
  • 深度学习与自然语言处理教程 ◉斯坦福CS224n最全笔记 30篇
  • 深度学习与计算机视觉教程 ◉ 斯坦福CS231n最全笔记 19篇
  • 图解大数据技术 ◉ 全生态知识宝库 16篇
  • 图解AI数学基础 ◉ 100个知识要点 5篇
  • 图解数据分析 ◉ 典藏版 19篇
  • Python图解与代码 ◉ 闪电速学版 33篇

最新评论

  • 图解机器学习算法(12) | 支持向量机模型详解(机器学习通关指南·完结)

    会飞的红鲤鱼: 2.(1)开头当x是二维向量时,f(x)不是二元函数吗,不应该是f(x)=c是一条直线吗。我是初学者,看不懂了所以问一下表情包

  • AI识万物:从0搭建和部署手语识别系统 ⛵

    weixin_48469982: 为什么所以图片我这里都显示不出来呢

  • 数据不会说谎!短剧里中国人的隐秘欲望;盘点AI短剧出海的技术方案;首部AI长电影好莱坞首映;奥特曼的书架① | ShowMeAI日报

    CSDN-Ada助手: Python入门 技能树或许可以帮到你:https://edu.csdn.net/skill/python?utm_source=AI_act_python

  • NLP实践!文本语法纠错模型实战,搭建你的贴身语法修改小助手 ⛵

    2301_79789669: 这个可以离线使用吗,有人复现了吗

  • 机器学习实战 | LightGBM建模应用详解

    2301_80095495: 数据集在哪啊?

大家在看

  • “仿RabbitMQ实现消息队列”---整体架构与模块说明 850
  • tomcat8配置https及生成证书
  • 【网络层】ICMP 因特网控制协议 648
  • JAVA计算机毕业设计基于Vue框架的养生系统(附源码+springboot+开题+论文)
  • 基于SpringBoot+Vue的在线考试系统的详细设计和实现(源码+lw+部署文档+讲解等) 210

最新文章

  • 打造AI爆款应用<新>黄金法则;盘点20款最流行AI搜索工具;ChatGPT对在线知识社区的影响;100万用户教会我的5个教训 | ShowMeAI日报
  • 又一款爆火AI游戏诞生!《换你来当爹》做对了什么?| ShowMeAI体验报告
  • 朱啸虎:AI应用明年肯定大爆发;第3款爆火AI游戏出现了;AI应用定价策略「不能说的秘密」;人类数据不够用了怎么办 | ShowMeAI日报
2024
05月 10篇
03月 12篇
02月 10篇
01月 15篇
2023年164篇
2022年451篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源周姓宝宝起名大全四个字潮水的诺言央视网评粉丝经济带海字的公司起名沈阳新生儿起名周易算命面相2013年2月23日延禧攻略下载直播屋广东体育超能美少女有翡电视剧在线观看全集化妆店取名起名大全中文名对应起英文名暗夜魔王五行起名打分测试打分女孩起名方姓免费起个什么名字好用户行为研究不知对方姓名如何起诉女孩姓史起什么名字好用学7画的的字起名前赴后继什么意思姓罗有起名宝宝起名四个字宝宝起名取名校信通迪丽热巴微博武汉电信营业厅泰和在线淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化