XGBoost详解

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

原创:程祥国

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 = ( x i , y i ) ( ∣ D ∣ = n , x i ϵ R m , y i ϵ 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 ( ϕ ) = ∑ i l ( y ‾ i , y i ) + ∑ Ω ( f k ) (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)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值