【问题标题】:XGBoost unreasonable splitting value in nodesXGBoost 在节点中不合理的分裂值
【发布时间】:2018-05-21 10:09:32
【问题描述】:

我的 xgboost 模型使用 xgboost 包 0.6 版在 python 中进行回归任务训练,使用奇怪的拆分值。一些用作分割标准的值根本不存在于训练数据集中。
示例:
- 在 [Missing,1,2]
的训练集中有一个变量 'text' 的值 - 然而,训练模型中节点的派生分裂标准是'text '

当在数据集中找不到这样的值 (-> 4) 时,这种拆分的可能原因是什么?拆分不会增加信息增益,因为所有样本都在该决策节点之后遵循一个分支。

【问题讨论】:

  • 编辑 1:它追溯到 xgboost 如何处理密集和稀疏格式的缺失值。在稀疏格式的情况下,缺失值被放置在最大化增益的分割的一侧。因此,所有缺失值都位于 'text

标签: python machine-learning deep-learning xgboost


【解决方案1】:

一个可能的解释:你有所有非缺失值到'text 4' - 分支。可以验证吗?

【讨论】:

  • 感谢您的建议。我跟着领先,发现:
  • 感谢您的建议。我跟随领先并得出结论:1-所有缺失值都朝着一个方向('文本> 4')。 2- 其次,通过将 missing=0 用于 Dense DataFrame DMatrix 转换来复制相同的行为。现在我正在寻找一种利用 Xgboost 稀疏数据处理的方法(大多数稀疏数据最初设置为 0)。关于如何使 Xgboost 以稀疏格式处理缺失值的任何进一步建议?
猜你喜欢
  • 1970-01-01
  • 2020-07-18
  • 2014-10-12
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 2013-01-12
  • 2012-10-12
相关资源
最近更新 更多