首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XGBoost算法

XGBoost(eXtreme Gradient Boosting)算法近年来在各种比赛中可谓是“香饽饽”,预测性能很好。下面我们就来介绍它的原理。

原理

首先,我们要了解的是,XGBoost是GBDT算法的一种改进。

在进行第k轮的迭代时,GBDT的损失函数可记为L(y,F[k](x))。那么它在F[k-1](x)处的二阶泰勒展开式为

根据前向分布算法,我们有

将上式代入刚才的损失函数,再令a等于一阶导,b等于2阶导,则损失函数可写为

其中,a和b分别是

那么,对于所有的样本而言,其损失函数为

对上式的优化,可以等价于优化

具体原因我们在介绍AdaBoost算法时已经介绍过,这里不再赘述。

正则化

为了防止过拟合,我们在优化损失函数时,往往要给其添加一个正则化项。

那么,添加了正则化项的损失函数为

在上一篇,我们介绍过

而正则化项由如下的公式构成

其中,M是叶子节点的个数,α和β都是正则化项的参数,用来控制模型的复杂度。

将(3)(4)式代入(2)式,可得

要想求得(5)式的最小值,我们需要对c[m]求偏导,即

然后令(6)式为0,可得

接下来,我们再把(7)式反代回(5)式,可以得到损失函数L为

(8)式就是第k轮所得到的损失函数。

回顾整个过程,我们发现,其实XGBoost就是将损失函数进行二阶泰勒展开后,求得一个解,然后将其反带入损失函数。换句话说,就是用这个解来帮助构造其中的决策树,从而使残差和最小,模型性能达到最优。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201224A045EC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券