Xgboost原理

XGBoost是一种高效的梯度提升算法,通过正则化目标函数防止过拟合,利用二阶导数信息优化树模型。文章介绍了XGBoost的缩减策略、列采样技术以及分裂算法,展示了其在决策树优化方面的优势。
摘要由CSDN通过智能技术生成

文章:Chen T , Guestrin C . XGBoost: A Scalable Tree Boosting System[C]Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2016.

1.简介

Xgboost是一种基于决策树(CART)的分布式的高效的梯度提升算法,它可被应用到分类、回归、排序等任务中,与一般的GBDT算法相比,XGBoost主要有以下几个优点:

  • 对树模型的复杂度进行了惩罚,分别引入了关于叶节点数与叶节点权重正则项,防止过拟合;
  • XGBoost的目标函数利用了损失函数关于待求函数的二阶导数信息,而GBDT只利用了一阶导数信息;
  • 类似于学习率,Xbg在学习到一棵树后,对其权重进行缩减,从而降低该棵树对后续的树模型的影响,提升可学习空间;
  • XGBoost借鉴了RF的列采样,构建每棵树时对特征进行采样,防止过拟合,提高了训练速度;
  • Xgboost构建树的算法包括精确的算法和近似的算法,近似的算法对每维特征加权分数进行分桶,具体的算法利用到了损失函数关于待求树的二阶导数;
  • 稀疏数据的处理,当数据的某个特征缺失时,Xgboost将该数据划分到默认的子节点,并提出了一种缺失值处理算法来求解这个默认方向;
  • 可并行的近似直方图算法,分裂节点时,数据在block中按列存放,而且已经经过了预排序,因此可以并行计算,即同时对各个属性遍历最优分裂点。

2.梯度提升树

2.1正则化目标

对于给定的具有n个样本,m维特征的数据集   D = { [ x i , y i ] } ( ∣ D ∣ = n , x i ∈ R m , y i ∈ R ) \ D=\{[\textbf{x}_i,y_i]\}(|D|=n,\textbf{x}_i\in R^m,y_i\in R)  D={ [xi,yi]}(D=n,xiRm,yiR) ,集成树模型的预测结果样本在为k颗树上的预测结果相加(图2.1),
y ^ i = ∑ k = 1 K f k ( x i ) , f k ∈ F \hat{y}_i=\sum\limits_{k = 1}^K f_k(\textbf{x}_i),f_k\in F y^i=k=1Kfk(xi),fkF
F = { f ( x ) = w q ( x ) } ( q : R m → T , w ∈ R T ) F=\{f(\textbf{x})=w_{q(\textbf{x}})\}(q:R^m\to T,w\in R^T) F={ f(x=wq(x)}(q:RmTwRT)为回归树模型的集合;其中 T T T为树模型的复杂度,即叶节点的数量; q ( x ) q(\textbf{x}) q(x)为样本最终落在树上的叶节点; w q ( x ) w_{q(\textbf x)} wq(x)为叶节点 q ( x ) q(\textbf{x}) q(x)对应的权值,也就是样本在当前回归树上的预测结果。 f k f_k fk即代表一个完整的树结构。

在这里插入图片描述
图2.1 集成树模型,样本的最终预测结果为样本在两颗树上叶节点上的得分之和

那么为了确定这k颗集成树的参数 w w w q q q,首先定义正则化目标,
L ( ϕ ) = ∑ i = l ( y ^ i , y i ) + ∑ k Ω ( f k ) w h e r e Ω ( f ) = γ T + 1 2 λ ∣ ∣ w ∣ ∣ 2 L(\phi) = \sum\limits_i=l(\hat{y}_i,y_i)+\sum\limits_k\Omega(f_k)\\where\quad \Omega(f)=\gamma T+\frac{1}{2}\lambda||w||^2 L(ϕ)=i=l(y^i,yi)+kΩ(fk)whereΩ(f)=γT+21λw2
y ^ i \hat{y}_i y^i为预测值, y i y_i yi为真实值, l ( y ^ i , y i ) l(\hat{y}_i,y_i) l(y^i,yi)为损失函数, Ω ( f k ) \Omega(f_k) Ω(fk)为关于模型复杂度的惩罚项,分别对树叶节点的个数与叶节点权值的正则,防止过拟合。
由于树模型的参数不能在欧几里得空间中找到合适的解,所以应用迭代优化算法来进行求解,假设 y ^ i ( t ) \hat{y}_i(t) y^i(t)为第 i i i个样本在第 t t t次训练后得到的预测结果,那么此时模型的损失为,
L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t ) ) + Ω ( f t ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) \begin{aligned} L^{(t)}&=\sum\limits_{i=1}^nl(y_i,\hat y_i^{(t)})+\Omega(f_t)\\ &=\sum\limits_{i=1}^nl(y_i,\hat y_i^{(t-1)}+f_t(\textbf x_i))+\Omega(f_t) \end{aligned} L(t)=i=1nl(yi,y^i(t))+Ω(ft)=

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值