使用 SHAP 使机器学习模型变的可解释!!

SHAP 是一种解释机器学习模型预测结果的方法,它基于博弈论中的 Shapley 值理论。 它通过计算每个特征对模型输出的贡献度,帮助我们理解模型的决策过程。 SHAP 适用于各种类型的机器学习模型,使得黑盒模型(如深度神经网络、随机森林等)的预测更加透明、可解释。

SHAP 是一种解释机器学习模型预测结果的方法,它基于博弈论中的 Shapley 值理论。

使用 SHAP 使机器学习模型变的可解释!!

它通过计算每个特征对模型输出的贡献度,帮助我们理解模型的决策过程。

SHAP 适用于各种类型的机器学习模型,使得黑盒模型(如深度神经网络、随机森林等)的预测更加透明、可解释。

使用 SHAP 使机器学习模型变的可解释!!

核心概念

  • Shapley 值源自博弈论的 Shapley 值,用于公平地分配合作博弈中各参与者的收益。在机器学习中,SHAP 通过计算每个特征在不同组合中的边际贡献,求取其平均值,从而得到该特征的 Shapley 值。这种方法确保了模型解释的公平性和一致性。
  • 可加性解释模型SHAP 构建了一个可加性的解释模型,将模型的预测结果表示为各特征贡献的线性组合。这种方法确保了特征贡献的总和等于模型的预测值,从而提供了一种一致且直观的解释方式。

SHAP的主要特点

1.一致性

如果模型的特征贡献增加,那么相应的SHAP值也会增加,确保解释的合理性。

2.局部解释

SHAP值可以解释单个样本的预测结果,帮助理解特定数据点的模型决策。

3.全局解释

通过对多个数据点的SHAP值进行汇总,提供模型整体行为的洞察。

SHAP的优势

  • 模型无关性SHAP 适用于多种机器学习模型,包括线性模型、树模型和深度学习模型等。
  • 理论基础SHAP基于Shapley值,具有坚实的理论支持,确保解释的公平性和一致性。
  • 可视化能力SHAP提供多种可视化工具,帮助直观地理解特征对模型预测的影响。

案例分享

下面,我们来训练一个 XGBoost 模型并计算 SHAP 值来解释每个特征如何影响预测。

首先,我们加载数据集(加利福尼亚住房数据集)并训练一个 XGBoost 模型

复制
import shap
import xgboost as xgb
import pandas as pd
import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 加载加利福尼亚住房数据集
california_housing = fetch_california_housing()
X, y = california_housing.data, california_housing.target
feature_names = california_housing.feature_names
X = pd.DataFrame(X, columns=feature_names)

# 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = xgb.XGBRegressor(random_state=42)
model.fit(X_train, y_train)

接下来,计算训练集上的 SHAP值,并使用 shap.summary_plot 展示了各特征对模型预测的总体影响。

复制
explainer = shap.Explainer(model,X_train)
shap_values = explainer(X_train)
shap.summary_plot(shap_values, X_train, feature_names=feature_names)

下图按所有样本的 SHAP 值大小总和对特征进行排序,并使用 SHAP 值显示每个特征对模型输出的影响的分布。

使用 SHAP 使机器学习模型变的可解释!!

我们还可以只取每个特征的 SHAP 值的平均绝对值来获得标准条形图。

复制
shap.plots.bar(shap_values,show=False)

使用 SHAP 使机器学习模型变的可解释!!

最后,我们使用 shap.force_plot 展示了单个样本的特征贡献,帮助我们理解模型对该样本的具体预测。

复制
shap.initjs()  # 初始化JS以便显示交互图
shap.force_plot(explainer.expected_value, shap_values.values[0, :], X_train.iloc[0])

使用 SHAP 使机器学习模型变的可解释!!

相关资讯

稳健且准确,AlphaFold 结合两种 AI 方法,实现蛋白质化学位移自动分配

编辑 | 绿萝化学位移分配对于基于核磁共振 (NMR) 的蛋白质结构、动力学和相互作用研究至关重要,可提供重要的原子级见解。然而,获得化学位移分配是劳动密集型的并且需要大量的测量时间。为了解决这一限制,苏黎世联邦理工学院(ETH Zurich)的研究人员之前提出了 ARTINA——一种用于自动分配二维 (2D)–4D NMR 谱的深度学习方法。近日,研究人员提出了一种将 ARTINA 与 AlphaFold 和 UCBShift 相结合的综合方法,能够减少实验数据、提高准确性并增强大型系统的稳健性,从而实现化学位移

发现38万种新材料、17天自主合成41种新化合物,DeepMind一日两篇论文登上Nature

编辑 | 萝卜皮从计算机芯片、电池到太阳能电池板等现代技术都依赖于无机晶体。开发这些新技术,所需的晶体必须稳定,否则材料就会分解,而每个新的、稳定的晶体背后可能需要研究人员数月或者更久的艰苦实验。Google DeepMind 材料团队分享了 220 万颗新晶体的发现,相当于近 800 年的知识。该团队推出了新的深度学习工具,用于材料探索的图网络 (GNoME),可通过预测新材料的稳定性来显著提高发现的速度和效率。论文链接: GNoME,科学家可以使人类已知的技术上可行的材料数量成倍增加。在其 220 万个预测中,

可直接比较潜在新药的性能,杜克大学团队开发新的药物AI模型

编辑 | 白菜叶目前的分子机器学习模型往往将单个分子作为输入,来预测其生物、化学或物理特性。然而,此类算法需要大型数据集,并且尚未针对预测分子之间的性质差异进行优化,限制了它们从较小数据集学习的能力,也限制了直接比较两个分子预期性质的能力。杜克大学(Duke University)的研究人员开发了 DeepDelta,这是一种成对深度学习方法,可以同时处理两个分子,并学习从小数据集中预测两个分子之间的属性差异。在 10 个 ADMET 基准任务中,DeepDelta 方法显著优于两种已建立的分子机器学习算法:定向消