模型解释工具:SHAP --- 论文实战

一、前言

        模型可解释性指对模型内部机制的理解以及对模型结果的理解,即模型中的那些特征最重要;哪个特征造成效果的好与不好。

        在众多模型中,可解释性最强的当然是线性模型;但是由于线性模型在特征提取方面存在天然的弱势,以及过于依赖原始的特征工程,在稍微复杂一些的场景中,基本见不到线性模型的影子。现在效果比较好的几类模型,SVR、 neural network 模型可获得较好的效果,但他们同时也被称为“黑盒”模型,原因是这类模型不能描述特征重要性。所以,打开“黑盒”模型就成了一个值得研究的课题。

       关于模型解释性,除了线性模型和决策树这种天生就有很好解释性的模型以外,sklean中有很多模型都有importance这一接口,可以查看特征的重要性。其实这已经含沙射影地体现了模型解释性的理念。只不过传统的 importance 的计算方法其实有很多争议,且并不总是一致。

二、 模型可解释性工具 SHAP

       Shapley value 最早由加州大学洛杉矶分校(UCLA&

### 使用 `summary_plot` 的方法与示例 SHAP (SHapley Additive exPlanations) 是一种用于解释机器学习模型输出的方法。通过 SHAP 值可以衡量特征对于单个预测的重要性。`summary_plot` 函数能够汇总展示各个特征对模型预测的影响程度。 #### 导入必要的库 为了使用 `summary_plot`,首先需要安装并导入所需的 Python 库: ```python import shap import xgboost import numpy as np from sklearn.model_selection import train_test_split ``` #### 加载数据集并训练模型 这里以 XGBoost 模型为例来说明如何创建一个简单的分类器,并计算其对应的 SHAP: ```python # Load example dataset from sklearn X, y = shap.datasets.adult() # Split data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=7) # Train an XGBoost model on this dataset model = xgboost.XGBClassifier().fit(X_train, y_train) ``` #### 计算 SHAP 值 利用预训练好的模型对象,可以通过调用 `TreeExplainer` 来获取 SHAP 解释器实例,进而得到测试样本集中每条记录的 SHAP 值矩阵: ```python explainer = shap.TreeExplainer(model) shap_values = explainer.shap_values(X_test) ``` #### 绘制 Summary Plot 有了上述准备之后就可以绘制出总结性的图表了。此图会按照全局重要度排序显示各特征的作用情况,其中横坐标表示平均绝对 SHAP 值大小,纵坐标则列举了不同属性名称。 ```python plt.figure(figsize=(10, 8)) shap.summary_plot(shap_values, X_test, plot_type="bar", show=False) plt.show() ``` 该命令将会生成一张柱状图形式的摘要视图[^2]。 另外还可以选择另一种类型的 summary plot —— 蜂群图(beeswarm),它不仅展示了每个特征的整体影响范围,还保留了个别观测点的具体位置分布信息: ```python plt.figure(figsize=(10, 8)) shap.summary_plot(shap_values, X_test, show=False) plt.show() ``` 这两种方式都可以有效地帮助理解哪些因素最能驱动模型决策过程以及它们是如何共同作用于最终结果上的。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小码贾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值