You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CatBoostRegressor决策树的叶节点值取值尺度是什么?

问题原因

  • CatBoost属于梯度提升树模型,单棵决策树的叶节点值不是最终预测结果,仅代表当前迭代对残差的修正量,最终预测值是初始偏置 + 所有树的叶节点值乘以学习率后的累加和,所以单棵树的叶节点尺度和原数据集目标值不匹配是正常现象。
  • 和XGBoost的base_score对应,CatBoost回归任务默认的初始偏置为训练集目标列的均值,你看到的负叶节点值是相对于这个初始均值的向下修正量,不是最终预测值。
  • 你当前代码未显式设置学习率,CatBoost会自动匹配适配迭代次数的学习率,单棵树的输出会被学习率缩放后再累加,这也是叶节点值范围远小于目标值范围的核心原因。

验证方法

你可以通过以下操作确认逻辑:

  1. 查看训练集目标列均值,这个就是CatBoost的初始偏置值:
print(df['size'].mean())
  1. 输出所有树的叶节点值,手动累加每棵树对应叶节点值乘以学习率,再加上初始偏置,结果和predict()输出完全一致:
# 获取所有树的叶节点值
leaf_values = m.get_leaf_values()
# 获取自动设置的学习率
print(m.get_param('learning_rate'))
  1. 如果需要调试时让单棵树的输出对齐最终预测尺度,可以在训练时指定learning_rate=1,但该配置仅用于调试,实际训练会导致过拟合。

内容的提问来源于stack exchange,提问作者A. S. K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:54:03