梯度提升树算法
前面一节我们提到了AdaBoost算法,AdaBoost算法可以解决分类问题,通过计算模型每次更新后的误差率,对数据和模型的权重alpha进行更新。但对于回归问题,我们就需要使用提升树、梯度提升树算法。梯度提升树与提升树的区别在于,提升树采用残差,而梯度提升树采取拟合当前模型损失函数的负梯度(在损失函数为均方误差的时候,相当于就是残差,其它误差函数不一定就是残差),来生成一个新的CART回归树。并且在GBDT中,只能使用CART回归树,所以在在GBDT中,模型的最终预测结果就是所有树的预测结果累加(不管是回归还是分类问题)
算法的具体步骤:
(1)初始化弱分类器
(2)for循环,对迭代次数m=1,2,......,M,M为迭代的总次数
(a)对i=1,2,......,N,计算负梯度
(b)对拟合一个回归树,得到第m棵回归树,树的叶节点区域为
,j=1,2,3......J,J为叶子节点总数
(c)对每一个叶子节点区域,计算最佳拟合值c(线性搜索)
(d)更新回归树,得到的c和前面m-1棵树相加
(3)得到最终的回归树
从这里就可以看出,GBDT本质上通过累加"残差"(打引号的原因是因为GBDT用负梯度近似了提升树的残差)来达到最后生成强学习器的目的。
此外GBDT还能解决二分类问题、多分类问题。
参考博客:https://blog.youkuaiyun.com/yyhhlancelot/article/details/90548380