竞赛常用集成学习框架Boosting算法总结(XGBoost、LightGBM)(附代码)

本文介绍了Boosting算法的原理,重点关注XGBoost和LightGBM。XGBoost利用梯度提升决策树进行模型训练,通过目标函数和正则化项优化树结构。LightGBM则引入了单边梯度抽样、互斥特征捆绑和直方图算法等优化,提高训练速度和降低内存占用。文中还探讨了特征选择与参数调优的方法,如使用K折交叉验证和网格搜索。
摘要由CSDN通过智能技术生成

Boosting类算法简介

Boosting是一类可将弱学习器提升为强学习器的算法,这类算法的工作机制如下:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;重复进行这一操作,最终将各个基学习器得到的结果加权结合。常见的Boosting算法包括GBDT、XGBoost和LightGBM等。

XGBoost

XGBoost原理

XGBoost是由K个基模型组成的一个加法运算式,其基模型为CART回归树(二叉树)。训练完成得到K棵树,当预测一个样本的分数时,根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点对应一个分数,将每棵树对应的分数加起来就是该样本的预测值。

$$\hat{y}_{i}=\sum_{k=1}^{K} f_{k}\left(x_{i}\right)$$

如下图例子,训练两棵决策树,小孩的预测分数就是两棵树中小孩所落到的结点的分数相加。爷爷的预测分数同理。

XGBoost的目标函数定义为:

O b j=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}\right)+\sum_{k=1}^{K} \Omega\left(f_{k}\right)    其中   \Omega\left(f_{t}\right)=\gamma T+\frac{1}{2} \lambda \sum_{j=1}^{T} w_{j}^{2} 

目标函数由两部分构成,第一部分用来衡量预测分数和真实分数的差距,第二部分为正则化项。正则化项同样包含两部分,T表示叶子结点的个数,w表示叶子节点的分数。超参数γ可以控制叶子结点的个数,λ可以控制叶子节点的分数不会过大,防止树过于复杂而造成过拟合。

boosting 模型是前向加法,第t步的模型拟合上次预测的残差,即:

\hat{y}_{i}^{t}=\hat{y}_{i}^{t-1}+f_{t}\left(x_{i}\right)

此时,目标函数可改写为:

O b j^{(t)}=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(t-1)}+f_{t}\left(x_{i}\right)\right)+\Omega\left(f_{t}\right)

以平方误差为例,将上式进行二阶泰勒展开得:

O b j^{(t)} \simeq \sum_{i=1}^{n}\left[l\left(y_{i}, \hat{y}_{i}^{(t-1)}\right)+g_{i} f_{t}\left(x_{i}\right)+\frac{1}{2} h_{i} f_{t}^{2}\left(x_{i}\right)\right]+\Omega\left(f_{t}\right)

其中g_{i}=\partial_{\hat{y}^{(t-1)}}\left(\hat{y}^{(t-1)}-y_{i}\right)^{2}=2\left(\hat{y}^{(t-1)}-y_{i}\right) \quad  h_{i}=\partial_{\hat{y}^{(t-1)}}^{2}\left(y_{i}-\hat{y}^{(t-1)}\right)^{2}=2

目标函数第一项为常数,对优化不影响,可以直接去掉,此时,目标函数简化为:

O b j^{(t)}=\sum_{i=1}^{n}\left[g_{i} f_{t}\left(x_{i}\right)+\frac{1}{2} h_{i} f_{t}^{2}\left(x_{i}\right)\right]+\Omega\left(f_{t}\right)

我们知道,每个样本都最终会落到一个叶子结点中,所以可将f_{t}\left(x_{i}\right)替换为其落入的叶子节点的分数w,将树的正则化一并整理到式中得到:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值