为什么XGBoost效果更好,速度更快

本文深入探讨了XGBoost的优化策略,包括目标函数、梯度提升算法、防止过拟合的手段,如学习速率和采样技术,以及节点划分的精确法和近似法。XGBoost通过泰勒展开优化损失函数,采用近似算法和缓存优化提高运行效率,是大规模数据集上高效、准确的机器学习工具。
摘要由CSDN通过智能技术生成

xgboost 是一种集成学习方法,通过构建多棵决策树来实现分类和回归任务。

本文记录了xgboost的公式推导和系统实现的一些trick。
具体内容参加原论文《XGBoost: A Scalable Tree Boosting System》

模型描述

对于一棵决策树,给定以下符号表示
∣ T ∣ |T| T: 此棵树的叶子节点数
q ( x ) q(\textbf{x}) q(x): x \textbf{x} x将会被映射到的叶子节点, 故 q ( x ) q(x) q(x)的取值范围是 [ 1 , ∣ T ∣ ] [1, |T|] [1,T]
w j \textbf{w}_j wj: 第j个叶子节点的输出值。

如果将一棵决策树视为一个函数,则可以写成
f ( x ) = w q ( x ) f(\textbf{x}) = w_{q(\textbf{x})} f(x)=wq(x)

由于xgboost是使用多棵决策树,并且每棵树学习的上一棵树的残差,故xgboost的输出公式为
y i ^ = ∑ k = 1 K f k ( x i ) \hat{y_i} = \sum_{k=1}^{K}f_k(\textbf{x}_i) yi^=k=1Kfk(xi)

其中第 f k f_k fk表示第k棵决策树,xgboost会在每一次迭代中生成一棵新的决策树。

目标函数

xgboost的目标函数
L = ∑ i l ( y ^ i , y i ) + ∑ k Ω ( f k ) L = \sum_il(\hat{y}_i, y_i) + \sum_k\Omega(f_k) L=il(y^i,yi)+kΩ(fk)

Ω ( f ) = γ T + 1 2 λ ∥ w ∥ 2 \Omega(f) = \gamma T + \frac{1}{2}\lambda\|w\|^2 Ω(f)=γT+21λw2

  • 第一项用来衡量模型的分类的错误率,这里用来描述 y ^ , y \hat{y}, y y^,y之间的距离函数 l l l, 并没有指定,可以使用平方差或者其他的损失函数。
  • 第二项用于控制模型的复杂度

梯度提升算法

由于 f f f是一棵树,无法用梯度下降或者牛顿法这种方法进行优化,所以xgboost采用前向分步算法。这种算法是一种贪心算法,具体做法是从前向后,每一步只学习一个基函数及其系数,逐渐优化目标函数,也就是说xgboost每次迭代会产生一个新的决策树,并保持之前的决策树不变。

y i ( t ) y^{(t)}_i yi(t) 表示第 i i i 个样本在第 t t t 次迭代时的输出结果,则:
y i ( t ) = y i ( t − 1 ) + f t ( x i ) y_i^{(t)} = y_i^{(t - 1)} + f_t(\textbf{x}_i) yi(t)=yi(t1)+ft(xi)
则第t次迭代时,目标函数可以写成如下形式:
L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x ) ) + Ω ( f t ) L^{(t)} = \sum_{i=1}^nl(y_i, \hat y_i^{(t-1)} + f_t(\textbf{x})) + \Omega(f_t) L(t)=i=1nl(yi,y^i(t1)+ft(x))+Ω(ft)

xgboost的优化方法是需要用到泰勒二阶展开,要求损失函数 l l l 具有二阶导数,泰勒公式如下
f ( x − x 0 ) = f ( x 0 ) + ( x − x 0 ) f ′ ( x 0 ) + ( x − x 0 ) 2 2 f ′ ′ ( x 0 ) + . . . + ( x − x 0 ) n n ! f n ( x 0 ) f(x-x_0) = f(x_0) + (x - x_0)f^{\prime}(x_0) + \frac{(x-x_0)^2}{2}f^{\prime\prime}(x_0) + ...+ \frac{(x-x_0)^n}{n!}f^{n}(x_0) f(xx0)=f(x0)+(xx0)f(x0)+2(xx0)2f(x0)+...+n!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值