梯度提升(Gradient Boosting)已经彻底改变了机器学习的格局,在回归和分类任务中都表现出色。梯度提升树(Gradient-Boosted Trees)被用来处理复杂的非线性数据集,将决策树的简洁性与集成学习的鲁棒性结合在一起。
1 介绍
梯度提升是一种广泛用于回归和分类的机器学习技术。它通过顺序构建预测模型,每一步都在前一步模型的基础上进行改进,以纠正错误。
组成部分
- 决策树作为基本学习器:梯度提升使用简单的决策树,按顺序构建,以纠正前一棵树的误差。
- 梯度下降算法:该算法通过迭代地改进预测来最小化损失函数。
- 损失函数优化:模型的目标是最小化损失函数,从而量化预测误差。
梯度提升树
梯度提升树(GBT)是梯度提升的基础,通过组合多棵决策树来创建强大的预测模型。每棵树都是依次构建的,重点是纠正前一棵树的残差误差。这个迭代过程增强了模型的准确性和鲁棒性。
- 构建决策树:树的划分基于特征,以最小化损失函数。
- 使用残差:残差是预测值与实际值之间的差异,用于指导后续树的构建。
- 学习率:该参数缩放每棵树的贡献,从而增强模型的鲁棒性。
如下图所示:它从原始数据开始训练第一个弱分类器 (如决策树),然后根据该模型的预测残差对数据进行加权,再用这些加权后的数据训练下一个弱分类器;这个过程不断迭代,每个新的模型都试图纠正前一轮模型的错误,最终将所有弱分类器的预测结果集成为一个强大的整体模型,实现更准确的预测。

通过将这些元素结合起来,梯度提升树逐步优化预测,从而得到一个在准确性和适应性之间取得平衡的模型。
2 梯度提升工作原理
下面我们一步步演示这些树是如何构建的,以及它们是如何有效地解决机器学习问题的。梯度提升通过逐步构建模型来提高预测效果。我们以一个包含患者年龄和心率的数据集作为示例:
| 病人 | 年龄 | 实际心率 |
|---|---|---|
| 病人 1 | 25 | 72 |
| 病人 2 | 35 | 75 |
| 病人 3 | 45 | 78 |
| 病人 4 | 55 | 80 |
| 病人 5 | 65 | 82 |
1. 初始模型预测
梯度提升是一种逐步优化的过程,在回归问题中通常从一个简单的基准开始,比如用目标变量的平均值作为所有样本的初始预测。这是因为平均值能最小化整体平方误差,作为最合理的初始猜测,为后续通过残差不断修正预测提供了基础。
所以我们计算心率的平均值来预测每位患者的心率,作为初始预测值。这个基准值为后续改进提供了基础。 (72 + 75 + 78 + 80 + 82) / 5 = 77.4
2. 计算残差
残差是实际心率与初始预测值之间的差。例如,如果实际心率是 72,而初始预测为 77.4,则残差为 -5.4。 Residual = Actual Value - Predicted Value
| 病人 | 心率 | 初始预测值 | 残差 (Iteration 1) |
|---|---|---|---|
| 病人 1 | 72 | 77.4 | -5.4 |
| 病人 2 |



