当前位置:   article > 正文

深入理解XGBoost_xgboost分类器

xgboost分类器

深入理解XGBoost

1. 背景

XGBoost(eXtreme Gradient Boosting)是一种优秀的集成学习算法,通过串行训练弱分类器并使用梯度提升的方式不断优化模型性能。它在Kaggle比赛等机器学习竞赛中广泛应用,并取得了很好的效果。

2. 原理

2.1 梯度提升

梯度提升是一种基于残差的方法,通过反复迭代,在当前模型的残差上拟合新的弱分类器,并将其加入到当前模型中。假设我们有一个由 n n n 个样本和 d d d 个特征组成的数据集 D = { ( x i , y i ) } i = 1 n D=\{(x_i,y_i)\}_{i=1}^n D={(xi,yi)}i=1n,其中 x i ∈ R d x_i\in\mathbb{R}^d xiRd 表示第 i i i 个样本的特征, y i ∈ R y_i\in\mathbb{R} yiR 表示第 i i i 个样本的标签。我们希望求解一个回归模型 f ( x ) f(x) f(x),使得对于任意输入的样本 x x x,都能够输出其对应的标签值 y ^ \hat{y} y^

  • 初始化模型为常数值: f 0 ( x ) = 1 n ∑ i = 1 n y i f_0(x)=\frac{1}{n}\sum_{i=1}^ny_i f0(x)=n1i=1nyi
  • 对于每一次迭代 m m m,计算模型在训练集上的残差: r i m = y i − f m − 1 ( x i ) r_{im}=y_i-f_{m-1}(x_i) rim=yifm1(xi)
  • 拟合一个新的弱分类器 h m ( x ) h_m(x) hm(x),使得其能够最小化当前模型的残差,即: min ⁡ h m ∑ i = 1 n ( r i m − h m ( x i ) ) 2 \min_{h_m}\sum_{i=1}^n(r_{im}-h_m(x_i))^2 minhmi=1n(rimhm(xi))2
  • 更新模型: f m ( x ) = f m − 1 ( x ) + α m h m ( x ) f_m(x)=f_{m-1}(x)+\alpha_mh_m(x) fm(x)=fm1(x)+αmhm(x),其中 α m \alpha_m αm 是当前步长。

2.2 XGBoost

XGBoost采用了梯度提升的方法,但在拟合弱分类器时,使用了一些优化技巧来提高模型性能。

2.2.1 梯度和二阶导数

为了更好地拟合样本的残差,我们需要计算样本残差的一阶导数和二阶导数。对于任意的损失函数 L ( y , y ^ ) L(y,\hat y) L(y,y^),其在第 i i i 个样本处的一阶导数和二阶导数分别为:

g i = ∂ L ( y i , y ^ i ) ∂ y ^ i , h i = ∂ 2 L ( y i , y ^ i ) ∂ y ^ i 2 g_i=\frac{\partial L(y_i,\hat y_i)}{\partial \hat y_i}, h_i=\frac{\partial^2 L(y_i,\hat y_i)}{\partial \hat y_i^2} gi=y^iL(yi,y^i),hi=y^i22L(yi,y^i)

在回归任务中,常用的损失函数包括均方误差(MSE)和平均绝对误差(MAE)。

2.2.2 正则化

为了避免过拟合,我们可以对模型进行正则化,其中包括L1正则化和L2正则化。对于第 m m m 次迭代时的弱分类器 h m ( x ) h_m(x) hm(x),其带有L1和L2正则化的目标函数为:

min ⁡ h m ∑ i = 1 n [ g i m h m ( x i ) + 1 2 h i m 2 + γ 1 ∣ w ∣ + 1 2 γ 2 w 2 ] \min_{h_m}\sum_{i=1}^n[g_{im}h_m(x_i)+\frac{1}{2}h_{im}^2+\gamma_1|w|+\frac{1}{2}\gamma_2w^2] hmmini=1n[gimhm(xi)+21him2+γ1w+21γ2w2]

其中 γ 1 \gamma_1 γ1 γ 2 \gamma_2 γ2 分别表示L1和L2正则化参数, w w w h m ( x ) h_m(x) hm(x)中的所有权重。

2.2.3 树的结构

XGBoost采用一种特殊的树结构,称为CART树。在每次迭代中,我们需要选择每个节点的最优分裂点和最优特征,以保证生成的树具有较好的泛化能力。

  • 对于特征 j j j 和阈值 s s s,我们可以将节点划分为左右两个子节点:

I L = { i ∣ x i j ≤ s } , I R = { i ∣ x i j > s } gain ( I ) = 1 2 [ gain ( I L ) + gain ( I R ) − γ 2 − gain 2 ( I L ) + gain 2 ( I R ) − gain 2 ( I ) 2 ]

IL={i|xijs},IR={i|xij>s}gain(I)=12[gain(IL)+gain(IR)γ2gain2(IL)+gain2(IR)gain2(I)2]
IL={ixijs},IR={ixij>s}gain(I)=21[gain(IL)+gain(IR)γ22gain2(IL)+gain2(IR)gain2(I)]

其中 gain ( I ) \text{gain}(I) gain(I) 表示当前节点的增益, γ 2 \gamma_2 γ2 是L2正则化参数。

  • 在构建树的过程中,我们需要使用深度优先搜索(DFS)算法选择所有节点的最优分裂点和最优特征。

2.3 XGBoost的预测

在XGBoost的预测过程中,首先根据训练好的决策树,对每个样本进行预测,然后将所有决策树的输出进行加权平均或投票,得到最终的预测结果。

3. 应用

XGBoost被广泛应用于分类、回归等领域,并在多个机器学习竞赛中获得了优异的成绩。例如,在Kaggle比赛中,XGBoost被应用于房价预测、信用评级等任务,并取得了很好的效果。

4. 总结

XGBoost是一种基于梯度提升的集成学习算法,采用了一些优化技巧来提高模型性能,如损失函数的梯度和二阶导数、正则化和特殊的树结构。XGBoost在分类、回归等领域具有很好的应用价值,被广泛应用于机器学习竞赛等任务中。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/461091
推荐阅读
相关标签
  

闽ICP备14008679号