美文网首页
Gradient Boosting简介

Gradient Boosting简介

作者: 单调不减 | 来源:发表于2019-11-11 23:20 被阅读0次

顾名思义,Gradient Boosting = Gradient Descent + Boosting

既然是Boosting,就是在现有模型基础上进行提升,提升的方法就是找出现有模型的缺陷,然后想办法查漏补缺。

Gradient Boosting和AdaBoost的区别在哪里呢?

AdaBoost的做法是按序训练一系列的学习器,每个学习器都重点关注前一个样本分类错误的样本,具体做法是增加这部分误分的样本的权重。而Gradient Boosting则是设定一个loss function,求其对当前累加模型的Gradient,然后训练一个新的学习器来直接拟合这个Gradient

Gradient Boosting和AdaBoost的联系在哪里呢?

首先两者都是累加模型,也就是说训练得到的多个分类器相加得到最终的输出。

其次AdaBoost实际上是Gradient Boosting的一种特殊情形。AdaBoost是最早取得成功的Boosting算法,后来有人证明AdaBoost等价于一个特殊损失函数(指数损失)的梯度下降过程,再后来有人将损失函数一般化,就得到了Gradient Boosting。

下面我们通过具体例子来说明Gradient Boosting的思路。

通过以上过程我们看到,Gradient Boosting所做的事就是,用当前算法给出一个基模型M_0,然后做出预测\hat{y},接下来再用同样的算法拟合y-\hat{y}得到另一个模型M_1,将M_1加到M_0上来提升其表现,不断重复此过程直至达到结束条件。

听起来很合理,但是y-\hat{y}被称为residuals而非gradient,为什么Gradient Boosting不叫作Residual Boosting呢?

实质上,Residual Boosting只是Gradient Boosting的损失函数为平方损失时的特殊情形,下图对此进行了说明。

注意,上图为我们揭示了Gradient Boosting的关键之处:其所谓的梯度下降是函数空间的梯度下降。也就是将各个F(x_i)当作参数来求导。

此外我们也看到,Residual Boosting就是损失函数为平方损失时的梯度下降过程。

可以看到,Gradient Boosting就是设定一个损失函数,将当前累加模型对应的函数F视作参数并利用梯度下降法对其进行调整

上图所示的直接拟合残差的过程可以视作学习率为1的梯度下降。

而Gradient Boosting相比Residual Boosting的好处就在于,loss function可以根据需要来选择,比如平方损失对于异常值很敏感,我们就可以采用下面两个对异常值相对稳健的loss function。

以上就是Gradient Boosting的简要介绍,重在直觉理解。图来自这里

相关文章

网友评论

      本文标题:Gradient Boosting简介

      本文链接:https://www.haomeiwen.com/subject/fcbxictx.html