XGBoost详解

本文深入解析XGBoost,它是陈天奇提出的梯度提升树系统,对GBDT做了算法和系统层面的改进。XGBoost在优化目标中引入二阶导数和正则项,处理缺失值,使用加权分位数草图算法加速训练。系统设计上,采用块结构和核外学习实现并行计算,提高效率。文章详述了优化目标函数、稀疏感知算法和加权分位数草图算法,并探讨了系统设计的并行计算策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创:程祥国

1. XGBoost概述

XGBoost是陈天奇提出的一个端对端的梯度提升树系统,该算法在GBDT【关于GBDT这里不再展开叙述,可以参考李航老师统计学习方法一书中对该算法的讲述】的基础之上,在算法层面和系统设计层面都做了一些创新性的改进,可以把XGBoost看作是GBDT更好更快的实现。XGBoost在许多机器学习以及数据挖掘的任务中表现惊艳,2015年,kaggle竞赛平台上发布了29个挑战获胜的解决方案,其中17个解决方案用了XGBoost。由于XGBoost在实际任务中的良好表现,因此搞清XGBoost的实现细节对于在实践中应用XGBoost是非常有帮助的。因此本文基于陈天奇的论文XGBoost: A Scalable Tree Boosting System,详细阐述XGBoost的各种细节。

上述我们提到XGBoost在算法层面和系统设计层面都做了一些创新性的改进,我们首先将XGBoost的创新做一个总结:

算法层面

(1)在GBDT目标函数的基础上,在对优化目标求解的时候使用了二阶导数的信息,因此会使优化目标的定义更加精确,训练速度会更快;此外,XGBoost在优化目标函数中加入了正则项,这会限制模型的复杂度,防止过拟合的发生。

(2)提出了一种处理缺失值的算法,XGBoost能够自动对缺失值进行处理

(3)在树生成选择特征划分节点的时候,通过加权分位数草图算法,预先对每个特征建立候选的划分节点,不在使用原先的贪婪算法(遍历每个特征所有取值),从而大大加快训练速度

系统设计层面

(1)对训练的每个特征排序并且以块(block)的结构存储在内存中,方便后续训练迭代重复使用,减少计算量。对于不同的特征的特征划分点,XGBoost分别在不同的线程中并行选择分裂的最大增益,从而实现了并行训练。

(2)提出了一种有效的缓存感知块结构用于树模型的核外学习

下面我们将分别对上述5项进行分析。

2. 模型层面

2.1 优化目标函数

假设数据集D有n个样本m个特征:D=(xi,yi)(∣D∣=n,xiϵRm,yiϵR)D={(x_i,y_i)}(|D|=n,x_i \epsilon R^m,y_i \epsilon R)D=(xi,yi)(D=n,xiϵRm,yiϵR),树集成算法使用加法模型对K个基学习器进行合成,作为最终的预测输出。如图1所示。

图1:树集成模型,最终的预测结果为两棵树的和
图1:树集成模型,最终的预测结果为两棵树的和

为了使上述预测的结果尽可能的接近实际值,我们首先定义模型的优化目标函数,优化目标函数如下所示:
L(ϕ)=∑il(y‾i,yi)+∑Ω(fk)(1.1) L(\phi) = \sum_{i}l(\overline y_i,y_i)+\sum\Omega (f_k) \tag{1.1} L(ϕ)=il(yi,yi)+Ω(fk)(1.1)

∑Ω(fk)=γT+12λ∣∣ω∣∣2(1.2) \sum\Omega (f_k)=\gamma T +\frac{1}{2}\lambda||\omega||^2 \tag{1.2} Ω(fk)=γT+21λω2(1.2)

这里LLL是一个可微的凸损失函数,它表示预测y‾i\overline y_iyi和目标yiy_iyi之间的差值。T是每棵树叶子的数量,ω\omegaω表示模型对叶子节点的预测数值。第二项$\sum\Omega (f_k) 是惩罚项,限制回归树模型的复杂度。正则化项有助于使最终学习到的权值更加平滑,避免过拟合。直观地说,带有正则化的目标函数倾向于选择简单的预测模型。当第是惩罚项,限制回归树模型的复杂度。正则化项有助于使最终学习到的权值更加平滑,避免过拟合。直观地说,带有正则化的目标函数倾向于选择简单的预测模型。当第使t$颗树生成的时候,我们可以将公式1.1变成如下形式:
Lt=∑inl(y‾it−1+ft(xi),yi)+ L^t = \sum_{i}^{n}l(\overline y^{t-1}_i+f_t(x_i),y_i)+ Lt=inl(yit1+ft(xi),yi)+
γJ+12λ∑j=1Jωtj2(1.3) \gamma J +\frac{1}{2}\lambda \sum_{j=1}^{J}\omega_{tj}^2 \tag{1.3} γJ+21λj=1Jωtj2(1.3)

在公式1.3中,y‾it−1\overline y^{t-1}_iyit1是前t−1t-1t1颗树对样本iii的预测值,ft(xi)f_t(x_i)ft

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值