标准回答
梯度提升原理
GBDT 是 Boosting 类加法模型:最终预测是一系列弱学习器(通常是 CART 回归树)的累加。它串行训练,每一轮新增一棵树去拟合「当前模型的负梯度」——对平方损失而言,负梯度恰好是残差,所以直觉上是「新树专门去修正前面所有树合起来还没拟合好的部分」。每棵树乘以学习率(shrinkage)后累加,学习率小、树多通常更稳。
XGBoost 的改进
- 目标函数显式加入正则项(叶子数 + 叶子权重 L2),抑制过拟合;
- 用损失的二阶泰勒展开(同时用一阶导 g 和二阶导 h)求最优叶子权重和分裂增益,比只用一阶的传统 GBDT 更精确、收敛更快;
- 工程优化:特征预排序/直方图、缺失值默认方向、并行分裂查找、列采样。
LightGBM 进一步用直方图 + leaf-wise 生长,大数据更快。
常见误区
⚠️ 常见踩坑
别把 GBDT 说成「并行训练多棵独立的树」——那是随机森林(Bagging);GBDT 是串行的,每棵树依赖前面的结果。也别忘了 XGBoost 用的是二阶导而非仅残差。
追问
追问 1:GBDT 和随机森林的本质区别?
随机森林是 Bagging,并行训练相互独立的深树再投票/平均,主要降方差;GBDT 是 Boosting,串行训练浅树逐步拟合残差,主要降偏差。前者对超参不敏感、抗过拟合更强,后者精度上限更高但需调学习率/树数防过拟合。
追问 2:XGBoost 为什么要用二阶导?
对损失做二阶泰勒展开后,叶子最优权重和分裂增益有闭式解,且利用曲率信息(二阶导 h)使每步逼近更准、收敛更快,并能直接支持任意可二阶求导的自定义损失。
追问 3:怎么防止 GBDT 过拟合?
调小学习率配合更多树、限制树深/叶子数、加 L1/L2 正则、行采样(subsample)与列采样(colsample)、设最小分裂增益,并用早停(在验证集上 early stopping)选最佳树数。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。