问题标签 [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 回答
262 浏览

lstm - 用于 LSTM 的 Shap - 时间步长的特征

当我使用 LSTM 将我的特征(其中 29 个)作为时间步长提供时,我正在寻求有关如何使用 Shap 进行可解释性的指导。

所以我的训练数据集有 shape (samples,29,1)

0 投票
1 回答
515 浏览

python - 检查特征子集的 SHAP 特征重要性

我正在尝试检查我使用 SHAP 构建的模型的特征重要性。

使用以下方法可以正常工作,但我希望有一个仅包含特征子集的图表。这可能吗?

我尝试在数据集上使用 iloc 定义特征和特征名称的子集,例如features=X_train.iloc[;23:],但它不起作用。

0 投票
1 回答
581 浏览

python - 了解 shap.decision_plot


最近我开始使用 SHAP。我真的很喜欢他们解释模型中每个特征的贡献的方式。
我不知何故难以理解决策情节。
我找不到有关此图
的解释,如果有人解释下面的图,我将不胜感激,因为我对基值和模型输出有点困惑。
通常我会在决策图中看到所有线从底部的同一点开始,然后根据特征贡献将它们分开。
总是这样吗?因为在这种情况下我的情节不同。
而且,蓝色是否意味着积极的影响而红色是消极的?
非常感谢您与我分享任何想法以了解情节。
问候

shap.decision_plot

0 投票
1 回答
866 浏览

python - 负责本地 SHAP 值的前 N ​​个特征

我一直在尝试在我的 ML 中使用 SHAP 值来帮助了解每个特征对本地结果的贡献。我知道所有特征的 SHAP 值加起来可以解释为什么预测与基线值不同。这使我们可以像这样在图中分解预测:

在此处输入图像描述

我想知道在我的示例中是否有办法获得对 SHAP 值产生正面和负面影响的前 3 个功能

  1. LSTAT、PTRATIO 和 INDUS 帮助推动价值向右
  2. RM,Tax,Rad 向另一个方向推进

我需要将这些功能作为数组或数据框,以便我可以对它们进行进一步的操作

0 投票
0 回答
878 浏览

tensorflow - “LookupError:梯度注册表没有条目:shap_TensorListStack”使用 DeepExplainer for Keras 模型

将 DeepExplainer 用于 Keras 顺序模型进行多类文本分类时,出现以下错误。请在下面找到详细信息:

##KERAS 版本:2.4.3。

##模型

错误

请帮我解决这个问题。我已经尝试了存储库中提到的问题中提供的所有可能的解决方案,但无法解决此错误。

最好的问候, Meghna Goyal

0 投票
1 回答
383 浏览

python - 我可以使用设置为“-1”的单调约束计算 CatBoost 模型拟合的 SHAP 值吗?

我拟合了一个 CatBoostClassifier 模型(在 Python 中),其参数monotone_constraints设置为一个值等于“-1”的字典。

但是,当我尝试计算 SHAP 值时:

我得到错误:

注意:当我没有设置monotone_constraints参数时,我以前能够使用上面的代码计算 SHAP 值。

0 投票
3 回答
132 浏览

python - 如何从python中的字符索引中找到行号?

我有一个基因数据集,其中行的索引是基因的名称。我还希望找到任何给定基因的行号,以便在基因通过机器学习模型预测后单独查看基因 - 以解释基因的预测。我如何为 shap 图编码目前需要一个行号来提取特定基因。

我的数据如下所示:

例如,如果我想拉出并查看模型预测,Gene3我会这样做:

shap_plot(3)对我来说是个问题,因为我实际上不知道我想要的基因是否在打乱的训练或测试数据的第 3 行。

有没有办法从已知的基因索引中提取行号?或者可能重新编码我的 shap 图,以便它接受我的字符串索引?我有生物学背景,所以任何指导将不胜感激。

0 投票
2 回答
806 浏览

python - 如何在 shap 中绘制错误分类的样本?

我有一个基因数据集,得分在 0 到 1 之间导致疾病的可能性(得分为 1 的基因已知会导致疾病,而得分为 0.74 的基因可能会导致疾病)。我正在尝试建立一个机器学习模型来预测回归分类中新基因的疾病评分。

我想查看已知疾病基因但得分较低的基因(例如得分为 1 但我的模型得分低于 0.8 的基因)的 shap 决策图。我正在努力将这些基因组合在一起进行绘图。

我的数据看起来像:

我运行一个带有嵌套交叉验证的 xgboost 回归器,查看 MSE,预测 r2,并绘制观察值与预期值。我可以在观察到的与预期的图中看到,在 Y 中得分为 1 的基因有许多由模型预测的低分,我想了解为什么模型使用 shap 来执行此操作。不幸的是,我无法提供示例数据。

我正在尝试调整为标签分类给出的示例 shap 代码:

我该如何选择y_pred,所以预测/基因应该是 1,但实际上低于 0.8(或任何低数字)?

编辑:针对给定的答案,我尝试过:

这运行但m长度为 171(我的 Y_test 数据中的全部行数),然后该图绘制了所有 171 它看起来像 - 我从查看数据知道应该只有一个基因 <= 0.5 和但实际上得分为 1。

0 投票
1 回答
1135 浏览

python - 将 shap 与 SimpleRNN 顺序模型一起使用时出错

在下面的代码中,我导入了一个保存的稀疏 numpy 矩阵,使用 python 创建,对其进行致密化,将掩码、batchnorm 和密集输出层添加到多对一 SimpleRNN。keras 顺序模型工作正常,但是,我无法使用 shap。这是在 Windows 10 桌面上的 Winpython 3830 在 Jupyter 实验室中运行的。X 矩阵的形状为 (4754, 500, 64):4754 个示例,具有 500 个时间步长和 64 个变量。我创建了一个函数来模拟数据,以便可以测试代码。模拟数据返回相同的错误。

运行最后一行来创建 shap_values 会产生以下错误。

0 投票
1 回答
615 浏览

python - 如何正确使用具有多个回归目标的形状决策图和力图?

我有一个 Keras 神经网络,它有 26 个特征和 100 个目标,我想用SHAP python 库来解释。例如,为了绘制力图,我这样做:

在哪里:

  • exp.expected_values是一个大小为 100 的列表,其中包含我的每个目标的基本值(这至少是我所理解的)。我假设该索引i指的是第 i 个目标。
  • shap_values指每个验证案例中每个目标的所有特征的 Shapley 值。因此,j从 0 运行到 99(即我的目标的大小)并k从 0 运行到验证用例的总数。

我感到困惑的是,i实际上j可能有所不同,而且我确实得到了一个看起来不错的情节。但是,它们不应该总是相同的索引吗?不应该总是将第 i 个基线目标与第 i 个目标的形状值进行比较吗?我对索引的理解有误吗?