Shap KernelExplainer 不在 GPU 上运行

Posted

技术标签:

【中文标题】Shap KernelExplainer 不在 GPU 上运行【英文标题】:Shap KernelExplainer doesn't run on GPU 【发布时间】:2021-11-12 10:43:45 【问题描述】:

在 Tensorflow 2.4.1 中定义了一个顺序神经网络。我使用Shap.KernelExplainer 来表示功能重要性。运行需要很长时间。是否可以通过 GPU 运行KernelExplainer

import shap

data = shap.kmeans(X_train[X_vars], 5)
explainer = shap.KernelExplainer(model.predict, data, gpu_model=True)
shap_values = explainer.shap_values(X_test[X_vars])
shap_values = shap_values[0]
shap.summary_plot(shap_values, X_test[X_vars], plot_type="bar", plot_size=(15, 10))

【问题讨论】:

【参考方案1】:

KernelExplainerin CuML library: cuml.explainer.KernelExplainer 有一个 GPU 加速版本。通常,在大型数据集上运行 KernelExplainer 非常耗时。因此建议使用样本和/或特征的子集。

有一种专门为深度学习模型设计的方法,叫做Deep SHAP,可以这样使用:

import shap
import numpy as np

background = x_train[np.random.choice(X_train.shape[0], 10, replace=False)]
deep_explainer = shap.DeepExplainer(model, background)
shap_values = deep_explainer.shap_values(X_test[1:5])

【讨论】:

以上是关于Shap KernelExplainer 不在 GPU 上运行的主要内容,如果未能解决你的问题,请参考以下文章

SHAP:shap_values 计算中的 XGBoost 和 LightGBM 差异

用于 RandomForest 多类的 SHAP TreeExplainer:啥是 shap_values[i]?

如何告诉 shap 树解释器和 shap 值计算器哪些变量是分类的?

将 SHAP 值聚合到特征集是不是有效?

ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例

ML之shap:基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型实现可解释性案例