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

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 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)
762d8bc6163332f8265b88d2ec5a731e.png
355ff908329422f0c7e2597d30bf96c0.png

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

参考资料

推荐阅读

e9190f41b8de4af38c8a1a0c96f0513b~tplv-k3u1fbpfcp-zoom-1.image

目录
相关文章
|
18天前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
2天前
|
机器学习/深度学习 传感器 运维
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
本文探讨了时间序列分析中数据缺失的问题,并通过实际案例展示了如何利用机器学习技术进行缺失值补充。文章构建了一个模拟的能源生产数据集,采用线性回归和决策树回归两种方法进行缺失值补充,并从统计特征、自相关性、趋势和季节性等多个维度进行了详细评估。结果显示,决策树方法在处理复杂非线性模式和保持数据局部特征方面表现更佳,而线性回归方法则适用于简单的线性趋势数据。文章最后总结了两种方法的优劣,并给出了实际应用建议。
19 7
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
|
3天前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
23天前
|
机器学习/深度学习 PyTorch API
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
Transformer架构自2017年被Vaswani等人提出以来,凭借其核心的注意力机制,已成为AI领域的重大突破。该机制允许模型根据任务需求灵活聚焦于输入的不同部分,极大地增强了对复杂语言和结构的理解能力。起初主要应用于自然语言处理,Transformer迅速扩展至语音识别、计算机视觉等多领域,展现出强大的跨学科应用潜力。然而,随着模型规模的增长,注意力层的高计算复杂度成为发展瓶颈。为此,本文探讨了在PyTorch生态系统中优化注意力层的各种技术,
48 6
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
|
12天前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
30 12
|
19天前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
38 8
|
19天前
|
机器学习/深度学习 Python
机器学习中模型选择和优化的关键技术——交叉验证与网格搜索
本文深入探讨了机器学习中模型选择和优化的关键技术——交叉验证与网格搜索。介绍了K折交叉验证、留一交叉验证等方法,以及网格搜索的原理和步骤,展示了如何结合两者在Python中实现模型参数的优化,并强调了使用时需注意的计算成本、过拟合风险等问题。
41 6
|
21天前
|
机器学习/深度学习 数据采集 算法
从零到一:构建高效机器学习模型的旅程####
在探索技术深度与广度的征途中,我深刻体会到技术创新既在于理论的飞跃,更在于实践的积累。本文将通过一个具体案例,分享我在构建高效机器学习模型过程中的实战经验,包括数据预处理、特征工程、模型选择与优化等关键环节,旨在为读者提供一个从零开始构建并优化机器学习模型的实用指南。 ####
|
25天前
|
人工智能 边缘计算 JSON
DistilQwen2 蒸馏小模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
本文详细介绍在 PAI 平台使用 DistilQwen2 蒸馏小模型的全链路最佳实践。
|
22天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。

热门文章

最新文章

相关产品

  • 人工智能平台 PAI