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

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 本文讲解一种比较全能的『机器学习模型可解释性』方法——SHAP。通过调用Python的SHAP工具库,对机器学习模型做可解释性分析,判断不同特征对于当前模型的重要程度。
d26ef9e3836dad9ecc43e05c49f713ce.png
💡 作者: 韩信子@ ShowMeAI
📘 机器学习实战系列https://www.showmeai.tech/tutorials/41
📘 本文地址https://www.showmeai.tech/article-detail/337
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏 ShowMeAI查看更多精彩内容
167ca463193b3da47a89ddec74ac4ad4.png

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

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

876c5df29bbdd943f8696719d48bf536.png

💡 模型可解释方法的划分

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

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

💡 SHAP 原理

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

6301d1e6b5140def5a9b92f72bcd6799.png

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

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

4c9f8964e70f99fa58991bd44554bc4e.png

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

💡 案例实战讲解

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

💦 数据说明

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

16a2f3f34b9dae14dc11035b5a7ca08a.png

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

数据从美国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
f0306dabb8d65c2c68286eb403b0984a.png

💦 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)
AI 代码解读
762d8bc6163332f8265b88d2ec5a731e.png
355ff908329422f0c7e2597d30bf96c0.png

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

参考资料

推荐阅读

e9190f41b8de4af38c8a1a0c96f0513b~tplv-k3u1fbpfcp-zoom-1.image

目录
打赏
0
2
2
0
2388
分享
相关文章
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
145 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
云上一键部署通义千问 QwQ-32B 模型,阿里云 PAI 最佳实践
3月6日阿里云发布并开源了全新推理模型通义千问 QwQ-32B,在一系列权威基准测试中,千问QwQ-32B模型表现异常出色,几乎完全超越了OpenAI-o1-mini,性能比肩Deepseek-R1,且部署成本大幅降低。并集成了与智能体 Agent 相关的能力,够在使用工具的同时进行批判性思考,并根据环境反馈调整推理过程。阿里云人工智能平台 PAI-Model Gallery 现已经支持一键部署 QwQ-32B,本实践带您部署体验专属 QwQ-32B模型服务。
DeepSeek安装部署指南,基于阿里云PAI零代码,小白也能轻松搞定!
阿里云PAI平台支持零代码一键部署DeepSeek-V3和DeepSeek-R1大模型,用户可轻松实现从训练到部署再到推理的全流程。通过PAI Model Gallery,开发者只需简单几步即可完成模型部署,享受高效便捷的AI开发体验。具体步骤包括:开通PAI服务、进入控制台选择模型、一键部署并获取调用信息。整个过程简单快捷,极大降低了使用门槛。
1070 43
DeepSeek服务器繁忙?拒绝稍后再试!基于阿里云PAI实现0代码一键部署DeepSeek-V3和DeepSeek-R1大模型
阿里云PAI平台支持零代码一键部署DeepSeek-V3和DeepSeek-R1大模型,用户可轻松实现从训练到部署再到推理的全流程。通过PAI Model Gallery,开发者只需简单几步即可完成模型部署,享受高效便捷的AI开发体验。具体步骤包括开通PAI服务、进入控制台选择模型、一键部署并获取调用信息。整个过程无需编写代码,极大简化了模型应用的门槛。
215 7
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
13 0
云上一键部署 DeepSeek-V3 模型,阿里云 PAI-Model Gallery 最佳实践
本文介绍了如何在阿里云 PAI 平台上一键部署 DeepSeek-V3 模型,通过这一过程,用户能够轻松地利用 DeepSeek-V3 模型进行实时交互和 API 推理,从而加速 AI 应用的开发和部署。
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
393 13
机器学习算法的优化与改进:提升模型性能的策略与方法
FastAPI + ONNX 部署机器学习模型最佳实践
本文介绍了如何结合FastAPI和ONNX实现机器学习模型的高效部署。面对模型兼容性、性能瓶颈、服务稳定性和安全性等挑战,FastAPI与ONNX提供了高性能、易于开发维护、跨框架支持和活跃社区的优势。通过将模型转换为ONNX格式、构建FastAPI应用、进行性能优化及考虑安全性,可以简化部署流程,提升推理性能,确保服务的可靠性与安全性。最后,以手写数字识别模型为例,展示了完整的部署过程,帮助读者更好地理解和应用这些技术。
121 20
全网首发 | PAI Model Gallery一键部署阶跃星辰Step-Video-T2V、Step-Audio-Chat模型
Step-Video-T2V 是一个最先进的 (SoTA) 文本转视频预训练模型,具有 300 亿个参数,能够生成高达 204 帧的视频;Step-Audio 则是行业内首个产品级的开源语音交互模型,通过结合 130B 参数的大语言模型,语音识别模型与语音合成模型,实现了端到端的文本、语音对话生成,能和用户自然地进行高质量对话。PAI Model Gallery 已支持阶跃星辰最新发布的 Step-Video-T2V 文生视频模型与 Step-Audio-Chat 大语言模型的一键部署,本文将详细介绍具体操作步骤。

热门文章

最新文章

相关产品

  • 人工智能平台 PAI
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等