问题标签 [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.
python - 在 2x2 网格中绘制形状图
我正在尝试在 2x2 子图中绘制 4 个 Shap 依赖图,但无法使其正常工作。我尝试了以下方法:
和这个:
它不断地将它们绘制在不同的行上,而不是 2x2 格式。
python - OSError:无法加载共享对象文件:llvmlite.dll(SHAP 相关。可能缺少什么?)
我想将 SHAP 与 Anaconda 一起使用。先决条件: llvmlite 已安装:
- pip install llvmlite 要求已经满足:llvmlite 在 c:\users...\anaconda3\lib\site-packages (0.34.0)
但是,我在问题中收到错误消息,即无法加载 llvmlite.dll:
有谁知道根本原因可能是什么,我可以尝试什么?
THx,马库斯
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?
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 - 它没有帮助。
machine-learning - 如何理解自动编码器模型的 SHAP 值
我最近对 SHAP 很陌生。我很好奇“特征重要性”对自动编码器模型意味着什么。
假设我有一个训练有素的 AE 模型。如果我运行类似的代码
所以我想知道结果是什么意思?因为它是一个自动编码器神经网络。“特征重要性”是否意味着该模型的哪个特征更重要?另外,我应该用 X_test 替换 X_train 吗?自动编码器以其异常检测能力而闻名。如果我将一些异常样本放入
这意味着什么?
此外,我发现 SHAP 模型不需要任何训练目标值(任何神经网络模型的 y 值)。那么它是如何定义“特征重要性”的呢?
非常感谢!
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 值求幂,这将为您提供本机单位的预测。虽然我仍然不清楚如何将特征级别值转换为原生响应单元。
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
与预测的平均值如此不同。
我在这里想念什么?
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 输出的模型提供见解。任何帮助表示赞赏。
r - R 中 Ranger 的 SHAP 重要性
有一个二元分类问题:如何获得 Ranger 模型的变量的 Shap 贡献?
样本数据:
我已经尝试了几个库(DALEX
、、、、),shapr
但我没有得到任何解决方案。fastshap
shapper
我希望得到像SHAPforxgboost
xgboost 这样的结果:
- 其输出
shap.values
是变量的形状贡献 - 这
shap.plot.summary