对于基于树的方法(例如,DT、随机森林、梯度提升等),序数特征到连续物质的转换间隔是否重要?(我明白为什么它对线性模型很重要,但我不清楚基于树的方法)
例如:[‘Low’,’Medium’,’High’]将序数特征从转换为[1,2,3]与将其转换
为之间有区别吗[1,99, 876]
对于基于树的方法(例如,DT、随机森林、梯度提升等),序数特征到连续物质的转换间隔是否重要?(我明白为什么它对线性模型很重要,但我不清楚基于树的方法)
例如:[‘Low’,’Medium’,’High’]将序数特征从转换为[1,2,3]与将其转换
为之间有区别吗[1,99, 876]
编辑:我误读了您的帖子:答案是否定的,使用哪个间隔无关紧要。只要不更改顺序,您的树在此数据上找到的拆分实际上是相同的。
如果您需要更多上下文,请参阅我的原始答案:
特别是在 scikit-learn 中(我不能代表基于树的模型的其他实现)它不接受分类数据作为输入。这意味着用户必须使用热编码、数字编码等将其转换为实数......
在任何给定的树上进行拟合时 - 当它遍历可能的拆分时,它会使用不等式拆分您的列(即该列的值是大于还是小于此阈值)。由于这种方法,数据的编码顺序很重要。
如果您对数据进行热编码 - 将独立查看每一列(可能的拆分是“这是大于还是小于 0.5,因为这实际上是选项为 0 或 1 时要进行的唯一拆分)。
如果您对数据进行数字编码,它只会选择最大化您的分割标准函数(通常是基尼不等式)的最佳阈值。通过手动确定顺序或数字编码添加到系统中的偏差会影响树在此列上拆分的能力。如果您进行一些逻辑编码,使目标值随着特征值的增加而增加,您的树将能够更有效地在此列上拆分,并且您可能会看到更好的结果。
出于这个原因,我建议使用 TargetEncoder ( https://contrib.scikit-learn.org/category_encoders/targetencoder.html ) 进行数字编码。这样,您的数字编码器的顺序将对决策树有意义。