XGBoost预测训练集外数据时始终返回相同值的问题咨询
XGBoost超出训练集特征范围预测固定值的成因
- 核心是树类模型本身不具备特征外推能力,XGBoost作为梯度提升树模型,预测逻辑是基于训练过程中学习到的节点分裂规则,将输入样本路由到对应叶子节点,输出叶子节点的预计算权重值,本质是分段常数拟合。
- 你的训练集中特征
price的取值范围是80000~119000,模型训练时生成的所有price相关分裂阈值都落在这个区间内。当输入的price大于所有分裂阈值的最大值时,无论取值多高,都会被路由到同一个对应最高price区间的叶子节点,输出该节点的固定权重值,也就是你观测到的119.7586。 - 该特性是所有树类集成模型的共性,和线性模型可以通过拟合系数进行外推的逻辑完全不同:树模型只会在训练集覆盖的特征区间内做分段拟合,超出训练区间的输入无法触发新的分裂规则,只会返回边界叶子节点的固定输出。
内容的提问来源于stack exchange,提问作者jolii
相关产品推荐
相关产品推荐

