eli5 解释预测 XGBoost 模型

Posted

技术标签:

【中文标题】eli5 解释预测 XGBoost 模型【英文标题】:eli5 explaining prediction XGBoost model 【发布时间】:2018-08-30 08:36:23 【问题描述】:

我不明白为什么我在贡献功能中有一个名为 BIAS 的功能。

我阅读了文档并找到了

" 在每一列中都有特征及其权重。截取 (bias) 特征如同表"

但我不明白这里的截取偏差是什么意思。

感谢您的帮助:)

【问题讨论】:

【参考方案1】:

这与ELI5 计算权重的方式有关。

XGBoost 仅输出叶子的分数(您可以通过booster.dump_model(…, with_stats=True) 查看),因此ELI5 中的XGBoost 解释器实现开始为所有树中的每个节点重建伪叶子分数。这些伪叶子分数基本上是您在此节点级别停止树时所期望的平均叶子分数,因此是所有子叶子的平均值,由它们在训练集中的覆盖率加权。

该算法也适用于树的根节点,它们被类似地分配了伪叶子分数。在根节点级别,此分数是您最终可能通过树的平均分数。对所有树求和,所有根节点分数的总和是您可能通过所有树获得的平均分数(将应用 sigmoid 转换为概率的树)。这就是ELI5 放入<BIAS> 的内容。

所以你可以将<BIAS>理解为模型输出的预期平均分数,基于训练集的分布。

如果您修改 base_score 参数,<BIAS> 将发生变化(例如,在二元分类不平衡的情况下,您可以将默认 0.5 更改为更接近您的目标速率的值,而 <BIAS>应该更接近0)。

编辑:也许这个博客的视觉解释更清楚(baseline 相当于<BIAS>)https://medium.com/applied-data-science/new-r-package-the-xgboost-explainer-51dd7d1aa211

【讨论】:

谢谢!这非常有帮助,您知道 xgboost 如何为分类问题计算终端叶子的分数吗? 不是一个简单的答案!这里解释了公式和证明:xgboost.readthedocs.io/en/latest/model.html -- 叶子分数在w 向量中(在“模型复杂性”一章中)

以上是关于eli5 解释预测 XGBoost 模型的主要内容,如果未能解决你的问题,请参考以下文章

R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释多个iris数据样本的预测结果使用LIME解释器进行模型预测结果解释

R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果LIME解释器进行模型预测结果解释并可视化

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

ML之shap:基于adult人口普查收入二分类预测数据集(预测年收入是否超过50k)利用Shap值对XGBoost模型实现可解释性案例之详细攻略

机器学习 gbdt-xgboost 决策树提升

R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理构建词袋模型构建xgboost文本分类模型基于文本训练数据以及模型构建LIME解释器解释一个测试语料的预测结果并可视化