GBDT 中学习率和树数量如何权衡?
简化版
GBDT 的 learning_rate 缩放每棵新树贡献,n_estimators 决定累加次数;小学习率通常需要更多树,泛化可能更稳但训练和推理更贵。应把二者联合作为有效 boosting 路径,用验证集 early stopping 选择轮数。
详细版
-
学习率小不是免费提升,树数不足会欠拟合。
-
树数多会线性增加模型大小和推理成本。
-
同一树深下比较多组 learning_rate,并给足最大轮数。
-
early stopping 的验证数据必须独立于训练。
-
最佳轮数还与 subsample、深度和正则耦合。
完整版教学
一、步长与步数共同决定函数路径
每轮树拟合当前负梯度,新树乘 η 后加入模型。
η 小让每次修正保守,为后续树留下纠错空间。
只把 η 从 0.1 改到 0.01 而保持 100 棵,相当于总修正量大幅减少,性能下降不能说明小学习率无效。
二、底层机制与公式
F_m(x)=F_(m-1)(x)+eta*h_m(x)
rough capacity path depends jointly on eta and M
三、带数字的推演
方案 A:η=0.1、300 棵;方案 B:η=0.03、约 1000 棵才有相近累计步长量级。
B 可能验证更好,但推理树数约 3.3 倍。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| 大 η 少树 | 训练/推理快 | 易过冲和过拟合 |
| 小 η 多树 | 更新细、常更稳 | 成本和模型体积高 |
| Early stopping | 自动选有效 M | 依赖验证集可靠性 |
五、执行流程
设多组 eta -> 每组给足 max trees -> 验证集 early stop
-> 比较最佳指标与树数 -> 加入延迟/体积约束 -> 重训并测试
六、边界条件与工程代价
“η×M 相同”只是粗略直觉,各轮树拟合的残差会随路径变化,不能认为两组模型数学等价。
时间切分任务要用时间验证 early stopping;随机划分可能选出对未来过多的树。
记忆钩子:把 η 看每步步幅、M 看步数:小步通常要多走。
七、常见误区与追问
-
误区:学习率越小一定越好。 树数和预算不足时会欠拟合。
-
追问:为什么小 LR 需要更多树? 每轮加入的函数修正被 η 缩小。
-
误区:η×M 相同则模型相同。 每轮残差和树结构依赖之前路径。
-
追问:如何选 n_estimators? 给较大上限并用独立验证 early stopping。
-
追问:上线还看什么? 树数带来的 P99、内存和模型加载时间。
八、加强记忆
把 η 看每步步幅、M 看步数:小步通常要多走。
最佳点不是最高离线分数,而是验证收益与树数成本的折中。