问题标签 [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 - LIME 和 SHAP 可能不符合直觉的原因
[编辑:讨论移至 stat.stackexchange.com,链接在这里]
我正在利用 Python 包lime
并shap
解释一个基本的、经过训练的模型对新的表格数据所做的单个(测试集)预测。WLOG,两种方法产生的解释都不符合用户的直觉。
例如,当在医疗保健环境中利用这些方法时,他们可能会将合并症(一种经常与感兴趣的结果疾病同时发生的疾病)列为降低患者发生不良事件风险的因素。
直觉上,这种行为是不正确的。例如,我们不应该看到这会history of heart attacks
降低risk of adverse events
. 我们可能会看到这些不一致的一些原因是什么?
我的一些想法
- 类标签不平衡:尝试平衡数据集,没有解决问题
- LIME 的内核宽度:正在调整这个,但粗略地说,没有任何好处
- 与训练数据的关系:对于表格数据,两者都
lime
需要shap
训练数据集作为输入来构建解释器类。如果存在诸如与结果history of heart attacks
相关联的特征的实例,则no adverse event
可以说,这些实例会“混淆”方法。但是,我不确定我的直觉是否正确。 - 我的理解错误:这里的直觉可能存在我错过的细微差别。具体来说,我试图确保我正确理解生成的解释和用于构建它们的训练数据集之间的关系。
python - 如何在 python 中计算 XGBoost 分类器的联合特征贡献?
我参考了http://savvastjortjoglou.com/intrepretable-machine-learning-nfl-combine.html#Joint-Feature-Contributions这个漂亮的文档来研究联合特征贡献。但这仅适用于 RandomForest 算法,因为树解释器(不适用于 xgboost)。XGBoost 是否也有类似的出路?
基本上我想要实现的是找出所有特征组合对预测的共同贡献。例如,如果我有 a、b 和 c 作为我的特征,我想知道 ab、bc 和 ca 对预测结果的影响。它与 shap 和 Lime 非常相似,但用于组合功能。
python - 使用 shapley 进行线性回归时出错:TypeError: 'Lasso' object is not callable
我正在使用 shap 库来比较几个模型,其中一个是正则化线性回归,但是当我尝试创建解释器时:
我收到以下错误:
下面是重现此错误的代码:
python - 随机森林的 TreeExplainer 的 expected_value 字段是什么?
我用 SHAP 来解释我的 RF
TreeExplainer 类有一个属性expected_value
。我的第一个猜测是这个字段是预测 y 的平均值,根据 X_train (我也读过这里)
但事实并非如此。
命令的输出:
是 0.2381。
命令的输出:
是 0.2389。
正如我们所看到的,这些值是不一样的。那么expected_value
这里的意义是什么?
python - 从 shapely 库中获取变量列表
我正在使用 shap 库来获取变量重要性我遇到的问题是我只找到绘图选项,但我需要按顺序获取变量重要性列表。
adaboost - 如何计算 ADABoost 模型的形状值?
我正在运行 3 个不同的模型(随机森林、梯度提升、Ada Boost)和基于这 3 个模型的模型集合。
我设法将 SHAP 用于 GB 和 RF,但不适用于 ADA,但出现以下错误:
我在 Git 上找到了这个链接
TreeExplainer
从我们试图解释的任何模型类型创建一个 TreeEnsemble 对象,然后与该下游一起工作。所以你需要做的就是在
TreeEnsemble
类似于梯度提升的构造函数
但我真的不知道如何实现它,因为我对此很陌生。
python - 逻辑回归的沙普利?
shapley 是否支持逻辑回归模型?
运行以下代码我得到:
PS你应该为不同的模型使用不同的解释器
r - 在 SHAPforxgboost 图中自定义标签
我正在创建一些 SHAP 分数图,用于可视化我使用 xgboost 创建的模型。我使用了运行良好的 SHAPforxgboost 包,现在我想在我正在编写的文本文档中使用这些数字(尤其是来自 shap.plot.summary() 的那个)。但是,x 轴和 y 轴上的标签/标题的字体大小非常小,我想知道是否有一种方法可以使它们变得更大且更具可读性。
我使用了非常相似的设置,如此处所示;https://www.rdocumentation.org/packages/SHAPforxgboost/versions/0.0.2:
更具体地说,我有兴趣增加 y 轴上每个描述符的字体大小