GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,是一种迭代的决策树算法,又叫 MART(Multiple Additive Regression Tree),它通过构造一组弱的学习器(树),并把多颗决策树的结果累加起来作为最终的预测输出。该算法将决策树与集成思想进行了有效的结合。
原理
GBDT的核心思想是将多个弱学习器(通常是决策树)组合成一个强大的预测模型。具体而言,GBDT的定义如下:
- 初始化:首先GBDT使用一个常数(通常是目标变量的平均值,也可以是其他合适的初始值。初始预测值代表了模型对整体数据的初始估计。)作为初始预测值。这个初始预测值代表了我们对目标变量的初始猜测。
- 迭代训练:GBDT是一个迭代算法,通过多轮迭代来逐步改进模型。在每一轮迭代中,GBDT都会训练一棵新的决策树,目标是减少前一轮模型的残差(或误差)。残差是实际观测值与当前模型预测值之间的差异,新的树将学习如何纠正这些残差。
- 1)计算残差:在每轮迭代开始时,计算当前模型对训练数据的预测值与实际观测值之间的残差。这个残差代表了前一轮模型未能正确预测的部分。
- 2):训练新的决策树:使用计算得到的残差作为新的目标变量,训练一棵新的决策树。这棵树将尝试纠正前一轮模型的错误,以减少残差。
- 3):更新模型:将新训练的决策树与之前的模型进行组合。具体地,将新树的预测结果与之前模型的预测结果相加,得到更新后的模型。
- 集成:最终,GBDT将所有决策树的预测结果相加,得到最终的集成预测结果。这个过程使得模型能够捕捉数据中的复杂关系,从而提高了预测精度。
每次都以当前预测为基准,下一个弱分类器去拟合误差函数对预测值的残差(预测值与真实值之间的误差)。
GBDT的弱分类器使用的是树模型。
如图是一个非常简单的帮助理解的示例,我们用GBDT去预测年龄:
- 第一个弱分类器(第一棵树)预测一个年龄(如20岁),计算发现误差有10岁;
- 第二棵树预测拟合残差,预测值6,计算发现差距还有4岁;
- 第三棵树继续预测拟合残差,预测值3,发现差距只有1岁了;
- 第四课树用1岁拟合剩下的残差,完成。
最终,四棵树的结论加起来,得到30岁这个标注答案(实际工程实现里,GBDT是计算负梯度,用负梯度近似残差)。
GBDT的优势
1)高精度预测能力
GBDT以其强大的集成学习能力而闻名,能够处理复杂的非线性关系和高维数据。它通常能够在分类和回归任务中取得比单一决策树或线性模型更高的精度。
2)对各种类型数据的适应性
GBDT对不同类型的数据(数值型、类别型、文本等)具有很好的适应性,不需要对数据进行特别的预处理。这使得它在实际应用中更易于使用。
- 处理混合数据类型
在现实世界的数据挖掘任务中,常常会遇到混合数据类型的情况。例如,在房价预测问题中,特征既包括数值型(如房屋面积和卧室数量),还包括类别型(如房屋位置和建筑类型)和文本型(如房屋描述)数据。GBDT能够直接处理这些混合数据,无需将其转换成统一的格式。这简化了数据预处理的步骤,节省了建模时间。 - 不需要特征缩放
与某些机器学习算法(如支持向量机和神经网络)不同,GBDT不需要对特征进行缩放或归一化。这意味着特征的尺度差异不会影响模型的性能。在一些算法中,特征的尺度不一致可能导致模型无法正确学习,需要进行繁琐的特征缩放操作。而GBDT能够直接处理原始特征,减轻了数据预处理的负担。
3)在数据不平衡情况下的优势
- 加权损失函数
GBDT使用的损失函数允许对不同类别的样本赋予不同权重。这意味着模型可以更关注少数类别,从而提高对不平衡数据的处理能力。 - 逐步纠正错误
GBDT的迭代训练方式使其能够逐步纠正前一轮模型的错误。在处理不平衡数据时,模型通常会在多轮迭代中重点关注难以分类的少数类别样本。通过逐步纠正错误,模型逐渐提高了对少数类别的分类能力,从而改善了预测结果。
4)鲁棒性与泛化能力
GBDT在处理噪声数据和复杂问题时表现出色。其鲁棒性使得它能够有效应对数据中的异常值或噪声,不容易受到局部干扰而产生较大的预测误差。
5