XGBoost原理和公式推导

XGBoost的模型: y i ^ = ∑ k = 1 K f k ( x i ) \hat{y_i}=\sum_{k=1}^{K}f_k(x_i) yi^=k=1Kfk(xi)
其中 f k ∈ F f_k \in F fkF F = f ( x ) = w q ( x ) F=f(x)=w_{q(x)} F=f(x)=wq(x),每个 f k f_{k} fk 对应于一个独立的树结构 q q q 和叶子权重 w w w w i w_{i} wi代表第 i i i 个结点的分数, w q ( x ) w_{q(x)} wq(x)是对样本 x x x 的打分,即模型预测值。

目标(损失)函数:
L = ∑ i = 1 n l ( y i ^ , y i ) + ∑ k = 1 T Ω ( f k ) L=\sum_{i=1}^{n}l(\hat{y_i},y_i)+\sum_{k=1}^{T}\Omega (f_k) L=i=1nl(yi^,yi)+k=1TΩ(fk)其中, Ω ( f ) = γ T + λ 2 ∥ w ∥ 2 \Omega (f)=\gamma T+\frac{\lambda}{2} {\left\| w \right\|}^2 Ω(f)=γT+2λw2,T是树中叶子节点的个数,该项中包含了两个部分,一个是叶子结点的总数,一个是叶子结点得到的 L 2 L_2 L2 正则化项。这个额外的正则化项能够平滑每个叶节点的学习权重来避免过拟合。目标函数中前一项为损失函数,后一项为正则化项,表示所有树的复杂度之和。

类似于GBDT算法,XGBoost同样使用加法模型,第 t t t 步的预测值为: y ^ i ( t ) = y ^ i ( t − 1 ) + f t ( x i ) \hat{y}_i^{(t)}=\hat{y}_i^{(t-1)}+f_t(x_i) y^i(t)=y^i(t1)+ft(xi)
t t t步的损失为:
L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) L^{(t)}=\sum_{i=1}^{n}l(y_i,\hat{y}_i^{(t-1)}+f_t(x_i))+\Omega(f_t) L(t)=i=1nl(yi,y^i(t1)+ft(xi))+Ω(ft)
对损失函数使用二阶泰勒近似展开,类似于:
f ( x + Δ x ) ≃ f ( x ) + f ′ ( x ) Δ x + f ′ ′ ( x ) Δ x 2 f(x+\Delta x) \simeq f(x)+f'(x) \Delta x + f''(x) \Delta x^2 f(x+Δx)f(x)+f(x)Δx+f(x)Δx2
损失函数变换为:
L ( t ) ≃ ∑ i = 1 n [ l ( y i , y ^ i ( t − 1 ) ) + g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + Ω ( f t ) L^{(t)} \simeq \sum_{i=1}^{n}[l(y_i,\hat{y}_i^{(t-1)})+g_if_t(x_i) + \frac{1}{2}h_if_t^2(x_i)]+\Omega(f_t) L(t)i=1n[l(yi,y^i(t1))+gift(xi)+21hift2(xi)]+Ω(ft)
其中, g i = ∂ y ^ ( t − 1 ) l ( y i , y ^ ( t − 1 ) ) , h i = ∂ y ^ ( t − 1 ) 2 l ( y i , y ^ ( t − 1 ) ) g_i= \partial_{\hat{y}^{(t-1)}}l(y_i,\hat{y}^{(t-1)}),h_i= \partial^2_{\hat{y}^{(t-1)}}l(y_i,\hat{y}^{(t-1)}) gi=y^(t1)l(yi,y^(t1)),hi=y^(t1)2l(yi,y^(t1))

移除常数项:
L ^ ( t ) = ∑ i = 1 n ( g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ) + Ω ( f t ) \hat{L}^{(t)}=\sum_{i=1}^{n}(g_if_t(x_i)+ \frac{1}{2}h_i f_t^2(x_i))+\Omega(f_t) L^(t)=i=1n(gift(xi)+21hift2(xi))+Ω(ft)

定义 I j = { i ∣ q ( x i ) = j } I_j=\left \{ i|q(x_i) =j\right \} Ij={iq(xi)=j} 表示叶子节点 j j j中的样本集合。
L ^ ( t ) = ∑ j = 1 T [ ( ∑ i ∈ I j g i ) w j + 1 2 ( ∑ i ∈ I j h i + λ ) w j 2 ] + γ T \hat{L}^{(t)}=\sum_{j=1}^{T}[(\sum_{i \in I_j} g_i) w_j+ \frac{1}{2}(\sum_{i \in I_j} h_i+ \lambda )w_j^2] + \gamma T L^(t)=j=1T[(iIjgi)wj+21(iIjhi+λ)wj2]+γT
w w w求导得叶子节点 j j j 最优 w j ∗ w_j^* wj
∑ i ∈ I j g i + w j ( ∑ i ∈ I j h i + λ ) = 0 \sum_{i\in I_j}g_i+w_j(\sum_{i \in I_j}h_i+\lambda) = 0 iIjgi+wj(iIjhi+λ)=0
w j ∗ = − ∑ i ∈ I j g i ∑ i ∈ I j h i + λ w_j^*=-\frac{\sum_{i \in I_j}g_i}{\sum_{i \in I_j}h_i+\lambda} wj=iIjhi+λiIjgi
带入目标函数求得损失的最优值:
L ^ t ( q ) = − 1 2 ∑ j = 1 T ( ∑ i ∈ I j g i ) 2 ∑ i ∈ I j h i + λ + γ T \hat{L}^{{t}}(q)=-\frac{1}{2}\sum_{j=1}^{T}\frac{(\sum_{i \in I_j}g_i)^2}{\sum_{i \in I_j}h_i+\lambda}+\gamma T L^t(q)=21j=1TiIjhi+λ(iIjgi)2+γT
划分节点后的损失减少为:
L s p l i t = 1 2 ( ( ∑ i ∈ I L g i ) 2 ∑ i ∈ I L h i + λ + ( ∑ i ∈ I R g i ) 2 ∑ i ∈ I R h i + λ − ( ∑ i ∈ I g i ) 2 ∑ i ∈ I h i + λ ) L_{split}=\frac{1}{2}(\frac{(\sum_{i \in I_L}g_i)^2}{\sum_{i \in I_L}h_i+\lambda} + \frac{(\sum_{i \in I_R}g_i)^2}{\sum_{i \in I_R}h_i+\lambda} - \frac{(\sum_{i \in I}g_i)^2}{\sum_{i \in I}h_i+\lambda}) Lsplit=21(iILhi+λ(iILgi)2+iIRhi+λ(iIRgi)2iIhi+λ(iIgi)2)
其中, I = I l + I R I=I_l+I_R I=Il+IR

论文原文:
Chen, T., & Guestrin, C. (2016, August). Xgboost: A scalable tree boosting system. In Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining (pp. 785-794).

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升树的机器学习算法,它在各种机器学习竞赛中表现出色。下面是XGBoost原理公式推导: 1. 原理XGBoost是一种集成学习算法,通过组合多个弱学习器(决策树)来构建一个强学习器。它采用了梯度提升的思想,每一轮迭代都通过拟合前一轮模型的残差来训练新的模型,然后将新模型加入到集成中。 2. 损失函数: XGBoost使用了一种特殊的损失函数,称为目标函数。目标函数由两部分组成:损失函数和正则化项。常用的损失函数有平方损失函数、逻辑损失函数等。 3. 梯度提升: 在XGBoost中,每个决策树都是通过梯度提升来构建的。梯度提升的过程可以简单描述为以下几个步骤: - 初始化模型:将初始预测值设置为常数,通常为训练集样本的平均值。 - 计算残差:计算当前模型对训练集样本的预测值与真实值之间的差异,得到残差。 - 拟合决策树:使用残差作为目标变量,拟合一个决策树模型。 - 更新模型:将新的决策树模型加入到集成中,并更新模型的预测值。 - 重复以上步骤,直到达到预定的迭代次数或满足停止条件。 4. 正则化: 为了防止过拟合,XGBoost引入了正则化项。正则化项由两部分组成:树的复杂度和叶子节点权重的L1或L2正则化。通过控制正则化参数,可以平衡模型的复杂度和拟合能力。 5. 公式推导XGBoost公式推导涉及到目标函数、损失函数、正则化项等,具体推导过程较为复杂。你可以参考XGBoost的论文《XGBoost: A Scalable Tree Boosting System》中的相关推导部分,详细了解公式推导的细节。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值