问题标签 [shap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1595 浏览

python - 在 2x2 网格中绘制形状图

我正在尝试在 2x2 子图中绘制 4 个 Shap 依赖图,但无法使其正常工作。我尝试了以下方法:

和这个:

它不断地将它们绘制在不同的行上,而不是 2x2 格式。

0 投票
2 回答
5435 浏览

python - OSError:无法加载共享对象文件:llvmlite.dll(SHAP 相关。可能缺少什么?)

我想将 SHAP 与 Anaconda 一起使用。先决条件: llvmlite 已安装:

  • pip install llvmlite 要求已经满足:llvmlite 在 c:\users...\anaconda3\lib\site-packages (0.34.0)

但是,我在问题中收到错误消息,即无法加载 llvmlite.dll:

有谁知道根本原因可能是什么,我可以尝试什么?

THx,马库斯

0 投票
1 回答
743 浏览

python - 使用 SHAP 时如何解释 GBT 分类器的 base_value?

我最近发现了这个用于 ML 可解释性的惊人库。我决定使用来自 sklearn 的玩具数据集构建一个简单的 xgboost 分类器,并绘制一个force_plot.

为了理解情节,图书馆说:

上面的解释显示了每个有助于将模型输出从基值(我们传递的训练数据集上的平均模型输出)推到模型输出的特征。将预测推高的特征以红色显示,将预测推低的特征以蓝色显示(这些力图在我们的 Nature BME 论文中进行了介绍)。

所以在我看来,base_value 应该与clf.predict(X_train).mean()等于 0.637 相同。然而,在看情节时情况并非如此,这个数字实际上甚至不在 [0,1] 之内。我尝试在不同的基础(10,e,2)中进行日志,假设这将是某种单调变换......但仍然不是运气。我怎样才能得到这个base_value?

0 投票
0 回答
123 浏览

python-3.x - 在 gitlab 的 ci-cd 管道期间无法安装 Shap 库

我在 gitlab 的管道期间安装 shap 库时遇到问题。如果我的 .gitlab-ci.yml 中有以下行:

我在 gitlab 工作期间得到以下信息:

我使用 gitlab runner 13.5.0 并且无法在带有纯 docker 的 gitlab-runner 主机上重现此错误 - 然后它安装成功(使用相同的 docker 映像)。我尝试使用另一个 shap 版本并升级 pip 和 setuptools - 它没有帮助。

0 投票
0 回答
405 浏览

machine-learning - 如何理解自动编码器模型的 SHAP 值

我最近对 ​​SHAP 很陌生。我很好奇“特征重要性”对自动编码器模型意味着什么。

假设我有一个训练有素的 AE 模型。如果我运行类似的代码

所以我想知道结果是什么意思?因为它是一个自动编码器神经网络。“特征重要性”是否意味着该模型的哪个特征更重要?另外,我应该用 X_test 替换 X_train 吗?自动编码器以其异常检测能力而闻名。如果我将一些异常样本放入

这意味着什么?

此外,我发现 SHAP 模型不需要任何训练目标值(任何神经网络模型的 y 值)。那么它是如何定义“特征重要性”的呢?

非常感谢!

0 投票
2 回答
2160 浏览

python - 在 LightGBM 中使用“predict_contrib”获取 SHAP 值

在 LightGBM文档中声明可以设置predict_contrib=True来预测 SHAP 值。

我们如何提取 SHAP 值(除了使用shap包)?

我努力了

这似乎不起作用

0 投票
1 回答
826 浏览

r - 使用 lightgbm Tweedie 目标将 SHAP 值从原始单位转换为原生单位?

Shapley Additive Explanations(SHAP 值)的效用是了解每个特征如何对模型的预测做出贡献。对于某些目标,例如以 RMSE 作为目标函数的回归,SHAP 值采用标签值的本机单位。例如,如果估算住房成本,SHAP 值可以表示为美元。正如您将在下面看到的,并非所有目标函数都是如此。特别是,Tweedie 回归目标不会产生原生单位的 SHAP 值。这是一个解释问题,因为我们想知道住房成本如何受到 +/- 美元特征的影响。

鉴于这些信息,我的问题是:在解释具有 Tweedie 回归目标的模型时,我们如何将每个单独特征的 SHAP 值转换为目标标签的数据空间?

我不知道目前有任何包实现了这种转换。这在 shap 作者自己发布的包中仍未解决。

我在下面用 lightgbm 的 R 实现来说明这个问题的细节:

原始帖子和编辑

我对 SHAP 值的理解是,它们在进行回归时采用标签/响应的本机单位,并且 SHAP 值的总和近似于模型的预测。

我正在尝试使用 Tweedie 回归目标提取 LightGBM 包中的 SHAP 值,但发现 SHAP 值不在标签的本机单位中,并且它们不与预测值相加。

看来它们必须取幂,这是正确的吗?

旁注:我了解 SHAP 值矩阵的最后一列代表基本预测,必须添加。

可重现的例子:

编辑

操作的顺序是先求和,然后对 SHAP 值求幂,这将为您提供本机单位的预测。虽然我仍然不清楚如何将特征级别值转换为原生响应单元。

0 投票
2 回答
821 浏览

machine-learning - 当我在 TreeExplainer 中包含训练数据时,为什么会得到不同的 expected_value?

在 SHAP TreeExplainer 中包含训练数据会expected_value在 scikit-learn GBT Regressor 中给出不同的结果。

可重现的示例(在 Google Colab 中运行):

因此,包含训练数据时的期望值与gbt_data_explainer.expected_value不提供数据时计算的期望值( )完全不同gbt_explainer.expected_value

当与(明显不同的)各自的 一起使用时,这两种方法都是相加且一致的shap_values

但我想知道为什么它们不提供相同的expected_value,以及为什么gbt_data_explainer.expected_value与预测的平均值如此不同。

我在这里想念什么?

0 投票
0 回答
270 浏览

python - 具有 3D 输入和 3D 输出的序列模型的 SHAP 解释器

我在 Keras (Tensorflow 2.2.0) 中有一个顺序二进制分类模型,它接受形状 (n_samples, n_timesteps, n_features) 的输入并提供形状 (n_samples, n_timesteps, 1) 的输出。我正在尝试将此模型与SHAP GradientExplainer一起使用。

我以这种方式遵循了他们的示例:

但我收到此错误:

AssertionError: The model output must be a vector or a single value!

现在,我正在寻找一种方法来使用 SHAP GradientExplainer(或与此 TF 版本一起使用的任何其他类型的 SHAP 解释器),为具有 3D 输出的模型提供见解。任何帮助表示赞赏。

0 投票
1 回答
651 浏览

r - R 中 Ranger 的 SHAP 重要性

有一个二元分类问题:如何获得 Ranger 模型的变量的 Shap 贡献?

样本数据:

我已经尝试了几个库(DALEX、、、、),shapr但我没有得到任何解决方案。fastshapshapper

我希望得到像SHAPforxgboostxgboost 这样的结果:

  • 其输出shap.values是变量的形状贡献
  • shap.plot.summary