【发布时间】:2021-09-06 05:18:06
【问题描述】:
在使用 xgboost 时,我对底层树中的拆分的理解一定是遗漏了一些简单的事情。
如果我使用 model.tree_to_dataframe(),我一直在精神上将给拆分列的数字解释为“如果值大于 X,则为是,否则为否”。因此,当虚拟特征的所有拆分都设置为 1 时,我认为这意味着 1 遵循 Yes 拆分,而 0 遵循 No 拆分。
但是,当我实际绘制树木时,我看到了:
显示的特征是一个虚拟变量。既然它说 current_X
这个虚拟特征对类具有高度预测性。我特别选择了这个,因为我知道它具有高度的预测性。但是,如果我使用 1/(1+exp(leaf)) 转换叶值,则“是”拆分返回的概率比“否”高得多。 (而且我知道你不能真正基于一棵树来做基础,但如果我将此变量的所有叶值相加,我会得到相同的关系。)
因此,根据我对数据的了解,将 yes 拆分表示 1 而 no 表示 0 会更有意义(这对我来说也更直观)。
那么,我是:
- 误解了树形图;
- 误解了数据帧输出;或者,
- 叶值变换计算错误?
知道我错过了什么吗?
【问题讨论】:
标签: python classification decision-tree xgboost