微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

了解 xgboost 中的拆分

如何解决了解 xgboost 中的拆分

在使用 xgboost 时,我对底层树中的分割的理解中一定缺少一些简单的东西。

如果我使用model.tree_to_dataframe(),我一直在精神上将Split 列给出的数字解释为“如果该值大于X,则是,否则否”。因此,当虚拟特征的所有分割都设置为 1 时,我认为这意味着 1 跟随是分割,而 0 跟随否分割。

但是,当我实际绘制树木时,我看到的是:

Single Node Tree

其中显示的特征是一个虚拟变量。因为它说 current_X

这个虚拟特征对类别具有高度的预测性。我特别选择了这个,因为我知道它具有高度的预测性。但是,如果我使用 1/(1+exp(leaf)) 转换叶值,“是”拆分返回的概率比否高得多。 (而且我知道你不能真正以一棵树为基础,但是如果我对这个变量的所有叶子值求和,我会得到相同的关系。)

因此,根据我对数据的了解,将 yes 拆分表示 1 而 no 表示 0 会更有意义(这对我来说似乎也更直观)。

我也是:

  • 曲解树状图;
  • 误解数据帧输出;或者,
  • 错误计算叶值转换?

知道我错过了什么吗?

解决方法

要在这里回答我自己的问题。我在逆 logit 变换 (source) 中缺少一个符号

我应该应用 1/(1+exp(-leaf)),这可以解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。