转载自 https://blog.csdn.net/program_developer/article/details/102763481
本文的主要内容概览:
1. GBDT简介
Boosting、Bagging和Stacking是集成学习(Ensemble Learning)的三种主要方法。Boosting是一族可将弱学习器提升为强学习器的算法,不同于Bagging、Stacking方法,Boosting训练过程为串联方式,弱学习器的训练是有顺序的,每个弱学习器都会在前一个学习器的基础上进行学习,最终综合所有学习器的预测值产生最终的预测结果。
梯度提升(Gradient boosting)算法是一种用于回归、分类和排序任务的机器学习技术,属于Boosting算法族的一部分。之前我们介绍过Gradient Boosting算法在迭代的每一步构建一个能够沿着梯度最陡的方向降低损失的学习器来弥补已有模型的不足。经典的AdaBoost算法只能处理采用指数损失函数的二分类学习任务,而梯度提升方法通过设置不同的可微损失函数可以处理各类学习任务(多分类、回归、Ranking等),应用范围大大扩展。梯度提升算法利用损失函数的负梯度作为残差拟合的方式,如果其中的基函数采用决策树的话,就得到了梯度提升决策树 (Gradient Boosting Decision Tree, GBDT)。
基于梯度提升算法的学习器叫做GBM(Gradient Boosting Machine)。理论上,GBM可以选择各种不同的学习算法作为基学习器。现实中,用得最多的基学习器是决策树。
决策树有以下优点:
- 决策树可以认为是if-then规则的集合,易于理解,可解释性强,预测速度快。
- 决策树算法相比于其他的算法需要更少的特征工程,比如可以不用做特征标准化。
- 决策树可以很好的处理字段缺失的数据。
- 决策树能够自动组合多个特征,也有特征选择的作用。
- 对异常点鲁棒
- 可扩展性强,容易并行。
决策树有以下缺点:
- 缺乏平滑性(回归预测时输出值只能输出有限的若干种数值)。
- 不适合处理高维稀疏数据。
- 单独使用决策树算法时容易过拟合。
我们可以通过抑制决策树的复杂性,降低单棵决策树的拟合能力,再通过梯度提升的方法集成多个决策树,最终能够很好的解决过拟合的问题。由此可见,梯度提升方法和决策树学习算法可以互相取长补短,是一对完美的搭档。
2. GBDT回归算法
2.1 GBDT回归算法推导
当我们采用的基学习器是决策树时,那么梯度提升算法就具体到了梯度提升决策树。GBDT算法又叫MART(Multiple Additive Regression),是一种迭代的决策树算法。GBDT算法可以看成是c 。