GBDT 梯度提升决策树 (Gradient Boosting Decision Tree)
核心思想
GBDT 是一种 Boosting 集成方法:通过逐步添加新的弱学习器来纠正前一轮残差。与 Bagging 的并行独立不同,GBDT 是串行依赖的,旨在降低偏差。
前向分布加法模型
最终模型为
其中
每一步贪心地添加使损失最小的树:
负梯度作为伪残差
直接优化上式很困难。梯度提升的关键洞察:用损失函数对当前模型预测值的负梯度作为第
| 损失函数 | 负梯度 | |
|---|---|---|
| 平方损失 | ||
| 绝对损失 | ||
| 对数损失 (分类) |
可以看到,当使用平方损失时,负梯度恰好就是残差本身,这正是 GBDT 名称中"残差"的由来。
完整算法流程
- 初始化
- 对
: - 计算伪残差
- 用回归树拟合
,得到 - 对每个叶节点区域
,计算最优输出值: - 更新
- 计算伪残差
正则化手段
- 学习率
:缩小每棵树的贡献 - 子采样:每轮只用部分样本(随机梯度提升)
- 树复杂度:限制深度、叶节点数、最小分裂样本数
代码对应
bash
python -m pipelines.ensemble.gbdt