GBDT与XGBOOST

GBDT回归算法

  • 构建初始分类器f_{0}(x)=\arg \min_{c}\sum_{i=1}^{n}L(y_{i},c),其中c为根节点的标签
  • 对迭代轮数t=1,2,\cdots ,T
  1. 对样本i=1,2,\cdots ,n,计算残差r_{t,i}=\frac{\partial L(y_{i},f_{i})}{\partial f_{i}}
  2. 利用样本(x_{i},r_{ti})拟合CART回归树得到第t棵树,其叶节点R_{t,j}\ \ \ j=1,2,\cdots ,J共包含J个样本
  3. 对叶节点R_{t,J}进行最佳拟合\arg \min_{c} \sum_{i=1}^{J}L(y_{i},f_{t-1}+c)
  4. 更新分类器f_{t}=f_{t-1}(x_{i})+\sum_{i=1}^{J}c_{t,j}I(x\in R_{t,J})
  • 得到强学习器f_{t}=f_{0}(x_{i})+\sum_{t=1}^{T}\sum_{i=1}^{J}c_{t,j}I(x\in R_{t,J})

XGboost

XGBoost的目标函数由训练损失正则化项两部分组成,目标函数定义如下:Obj=\sum_{i=1}^{n}L(y_{i},y^{(t-1)}(x_{i}))+\sum_{i=1}^{n}\Omega (f_{i})

当我们学习第k棵树时有y^{(t)}=y^{(t-1)}+f_{t}(x_{i}),代入我们的目标函数得到:Obj=\sum_{i=1}^{n}L(y_{i},y^{(t-1))}+f_{t}(x_{i}))+\Omega (f_{t})+constant

根据泰勒展开式Obj=\sum_{i=1}^{n}(L(y_{i},y^{(t-1)})+g_{i}f_{t}(x_{i})+\frac{1}{2}h_{i}f_{t}^{2}(x_{i}))+\Omega (f_{t})+constant

g_{i}=\frac{\partial L}{\partial y^{(t)}}h_{i}=\frac{\partial g_{i}}{\partial y^{(t)}}

重新定义一棵树f_{t}(x_{i})=w_{q(x)},叶子节点的权重为w,实例到叶子节点的映射关系为q

树的复杂度\Omega (f_{t}(x))=\gamma T+\frac{1}{2}\lambda \sum_{i=1}^{T}w_{t,i}^{2}

叶子节点归组I_{j}=\left \{ i|q(x_{i})=j \right \}

Obj^{(t)}=g_{i}f_{t}(x_{i})+\frac{1}{2}h_{i}f_{t}^{2}(x_{i})+\gamma T+\frac{1}{2}\lambda \sum_{i=1}^{T}w_{t,i}^{2}\\ =\sum_{i=1}^{T}(\sum_{j\in I_{i}}(g_{i})w_{i}+\frac{1}{2}(\lambda +\sum_{j\in I_{i}}h_{i} )w_{i}^{2})+\gamma T

\\G_{i}=\sum_{j\in I_{i}}g_{i}\\ H_{i}=\sum_{j\in I_{i}}h_{i},得到:Obj=\sum_{i=1}^{T}(G_{i}w_{i}+\frac{1}{2}(\lambda +H_{i})w_{i}^{2})+\gamma T

这个式子是关于w_{i,j}的一元二次函数

w_{j}^{*}=-\frac{G_{j}}{H_{j}+\lambda }     Obj=-\frac{1}{2}\sum _{j=1}^{T}\frac{G_{j}^{2}}{H_{j}+\lambda }+\gamma T

  • 1. 分裂一个结点

    在实际训练过程中,当建立第 t 棵树时,XGBoost采用贪心法进行树结点的分裂:

    从树深为0时开始:

  • 对树中的每个叶子结点尝试进行分裂;
  • 每次分裂后,原来的一个叶子结点继续分裂为左右两个子叶子结点,原叶子结点中的样本集将根据该结点的判断规则分散到左右两个叶子结点中;
  • 新分裂一个结点后,我们需要检测这次分裂是否会给损失函数带来增益,增益的定义如下:Gain=Obj_{L+R}-(Obj_{L}+Obj_{R})\\ =-\frac{1}{2}\frac{G_{L+R}^{2}}{H_{L+R}+\lambda }+\frac{1}{2}\frac{G_{L}^{2}}{H_{L}+\lambda }+\frac{1}{2}\frac{G_{R}^{2}}{H_{R}+\lambda }-\gamma
  • 如果增益Gain>0,即分裂为两个叶子节点后,目标函数下降了,那么我们会考虑此次分裂的结果。

  • 在分裂一个结点时,我们会有很多个候选分割点,寻找最佳分割点的大致步骤如下:

  • 遍历每个结点的每个特征;
  • 对每个特征,按特征值大小将特征值排序;
  • 线性扫描,找出每个特征的最佳分裂特征值;
  • 在所有特征中找出最好的分裂点(分裂后增益最大的特征及特征值)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值