集成算法(三)
梯度提升树
简介:
基本思想:积跬步以至千里,每次学习一点。先用一个初始值来学习一棵决策树,叶子处可以得到预测的值,以及预测之后的残差,然后后面的决策树就是要基于前面决策树的残差来学习,直到预测值和真实值的残差为0。最后对于测试样本的预测值,就是前面许多棵决策树预测值的累加。
GBDT的思想可以用一个通俗的例子解释,假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。
GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型.(GBDT的会累加所有树的结果,而这种累加是无法通过分类完成的,因此GBDT的树都是CART回归树,而不是分类树(尽管GBDT调整后也可以用于分类但不代表GBDT的树为分类树))
它的每一次计算都是为了减少上一次的残差,而为了消除残差,我们可以在残差减小的梯度方向上建立模型,所以说,在GradientBoost中,每个新的模型的建立是为了使得之前的模型的残差往梯度下降的方法,与传统的Boosting中关注正确错误的样本加权有着很大的区别。
通过损失函数的负梯度来拟合,我们找到了一种通用的拟合损失误差的办法,这样无轮是分类问题还是回归问题,我们通过其损失函数的负梯度的拟合,就可以用GBDT来解决我们的分类回归问题。区别仅仅在于损失函数不同导致的负梯度不同而已。
算法步骤:
损失函数主要有:指数损失、对数损失、均方差、绝对损失
对于回归问题:
对于分类问题:样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。