为什么AdaBoosting会是Gradient Boosting?

Gradient Boosting是AdaBoosting的general的版本,但是为什么呢?Gradient Boosting的理论有些复杂,但实际上,也不算难理解。

Gradient Boostin和AdaBoosting

这里指出adaboosting可以用整合到梯度下降的理论中,只不过boosting里的梯度下降是对函数梯度下降。

我们来看看Adaboosting的general形式。

在每次循环中,都是计算出一个α和新函数f,来提升原来的表现,其中求出f需要找到数据集一组weight,在新weight上训练得到f

我们会很自然的想要对求loss function对g的梯度,猜想这样是否能找到使得loss变小的方法。形式和求导如下。对函数g的求导,可以将g看出一个无限维度的vector,取一个x,得到一个g,所以将g看成vector,就能理解这个求梯度的方法。

然后,我们会想说,能不能找到一个f,和求出来的梯度的方向相同?

于是,我们根据梯度来找f。让两个向量方向相同,相当于maximizing它们的内积。然后我们发现,这个公式的后边如果同号,则这个公式的值会最大。而后边同号=adaboosting中最小化错误率 = 最大化正确率。你会发现,后边部分其实的最终目标和我们一般损失函数的目标是一样的(虽然后者一般形式为交叉熵)。

更进一步,我们发现,公式前面部分,其实是adaboosting中的数据集的新weight。adaboosting是在找到新weight之后用loss function训练出f,而gradient boosting则是找到这个weight之后,试图取maximizing上面的公式。然后最终发现,目标一模一样。

使用数学方法可以直接求出我们在梯度下降时最佳的learning rate,即alpha,然后我们发现,alpha,f,整个公式的形式,都和adaboosting如出一辙。

gradient boosting就是adaboosting的general形式,前者完全可以改动它自己的loss function,以达到更好的效果。

 

总结

 

梳理adaboosting的完整过程。

循环T次,目标找到新的互补f

新数据集权重,当前函数g按样本预测结果更新,出错 * α,正确 / α

用新weighted数据集进行训练,用损失函数+梯度下降,找到新的f,其loss为交叉熵

记录新f和α

更新当前函数g

合并所有f

 

梳理gradient boosting的算法。

梯度下降n次,找到能使损失最小的新函数f

找f 和梯度方向相同

更新g

 

为什么两者如出一辙,见下面的详细分析。仔细想来,Adaboosting就是通过不断找新的权重来找到新的数据集来找到新的f,而gradient则直接对当前函数g求导,找到新的g以最小化loss,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值