boosting算法_基于树模型的boosting算法总结:GBDT、XGBoost

虽然现在深度学习的浪潮席卷了学术界和工业界,但是传统的boosting算法仍值得学习和思考。在一些业务场景下基于树模型的boosting算法仍然发挥着巨大的作用。本文针对这些算法做一个归纳总结,方便个人查阅。

一、Boosting

Boosting 是一类非常经典的集成学习方法,通过集成一系列的基础模型得到加强版的模型,从而对任务有更好的结果。在这一部分我们关注两个算法,分别是 gradient boostingNewton boosting。在介绍这两个算法之前,先简单的回顾一下Gradient Descent 和 Newton‘s method。

表示损失函数,
表示参数,当第
次迭代时,
是这次迭代的更新。这个公式对于梯度下降和牛顿法都适用,区别只在于
的计算方法。经过
次迭代后,
可以写成一个求和的形式,
是初始值。

梯度下降法 使损失函数下降最快的方向是负的梯度。当第

次迭代时,有

有了方向,步长

一般可以通过 line search 得到,即

然后可以得到

牛顿法 首先

必须是二次可微的。牛顿法的目标是在每次迭代中通过近似求解
来得到
。在
处做二阶泰勒展开,有

其中

是Hessian矩阵,
。由以上公式,可以得到

继而有

。和梯度下降法不同的是,牛顿法的步长是1,也就不再需要line search。

上面介绍的部分是在参数空间的数值优化,而Boosting算法可以看作是在函数空间的数值优化。用

表示要寻找的函数,将
替换上面公式中的
就可以得到boosting算法
如果
用base model
表示,那么
gradient boostingNewton boosting 分别是

956be2ac4ef5ea4cf1ee4c6d0b7dcbe1.png

32a70852de7d093c6f64eade709b2ddb.png

两种算法都是通过最小化

来得到base model。

二、基于树模型的boosting

基于树模型的boosting中一般都采用CART回归树作为基础模型,因为无论是梯度法还是牛顿法都需要用回归的方法拟合目标,即使任务是分类任务,但是每棵树的目标都和梯度有关。CART每次分裂都只分裂两个节点,选择CART的原因可能也是因为其简单。树模型最重要的就是树结构的生成以及叶子结点的输出。当确定好树结构之后,叶子结点的输出

也就是对于落在第

个叶节点的样本,使这些样本的loss最小的
就是该叶子子节点的输出值。比如如果loss函数是平方误差,那么
就是这些样本在这棵树的残差的均值;如果loss是mae,那么
是中位数。举一个具体的例子,对于Poisson回归,损失函数为
,求解
就是最小化
。求导有
。通过使得导数为0,有
树每次分裂的基准为最大
,也就是分裂前和分裂后的loss改变最大。

回到boosting算法,由于树节点都是独立的,因此loss函数可以写成对树节点求和的形式。对于牛顿boosting,有

fdcc2aed52ad0f5b577a03edac38f6a1.png

进一步的,可以求的下面的公式,其中

2b8b9f53232e576b1f3eb9031b01fdb2.png

因此叶节点的输出为

。将其代回原来的公式,可以得到

3616603c53f46790f19cdccd3e879428.png

进而分裂的准则为

d1a0a29e95e7df19817cb68ad59d8e55.png

如果是梯度boosting,损失函数为梯度的平方和,也可以写成根据叶节点求和的形式。最终结果为叶节点为

,n为样本数,分类的Gain是

110268ee2a5a68f7ace816a57ead8ec4.png

但是对于梯度boosting,算出的叶节点输出并不是最终的叶节点输出。而是通过进一步求解

936bac4af1a808e1ee432426607874ef.png

得到。但是牛顿boosting可以直接得到叶节点。

三、Gradient Boosting 和 Newton Boosting的对比

梯度boosting和牛顿boosting都是在boosting的框架下的两种算法。梯度boosting拟合的是梯度,而牛顿boosting通过泰勒展开近似来求解最小。正是因为这两个算法的优化目标不同,因此树结构的分裂以及叶子结点的输出也不同。尤其是叶子结点的输出,牛顿boosting可以看作是同时优化树结构和叶节点,而梯度boosting的叶节点通过进一步的求解得到,因此叶节点的输出更准确,但是树结构的准确性会下降。

除此之外,梯度boosting的适用范围会更广,因为只需要loss 函数一阶可微,但是牛顿boosting要二阶可微。不过在实际应用上即使不能二阶可微但可以手动设置Hession矩阵,当然这样准确性会有所下降。

参考文献

  1. Greedy Function Approximation : A Gradient Boosting Machine

2. Generalized Boosted Models : A guide to the gbm package

3. Tree Boosting With XGBoost. Why Does XGBoost Win "Every" Machine Learning Competition?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值