简单例子说明XGBoost中树模型的构建过程


这里不再介绍XGBoost的原理及推导过程,推荐一些资料:

在构建树结构的过程会将涉及到的公式给出。
本文中的过程来源于视频XGBoost Part 1 (of 4): Regression – YouTube

如有错误,请指正,谢谢啦~

1. 数据集-回归问题

我们需要解决的是一个回归问题,数据如下表所示,NO是样本的编号,Drug Dosage 是特征,Drug Effective 是真实值。我们将根据这个数据集构建一个XGBoost模型。
在这里插入图片描述

2. 求一阶导数和二阶导数

这里采用的平方损失函数
在这里插入图片描述
注:后续需要用到 G a i n Gain Gain的计算公式,并定义 s i m i l a r i t y    s c o r e ( s s ) similarity \; score (ss) similarityscore(ss),同时将上面计算好的 g i g_i gi h i h_i hi带入 s s ss ss中,如下:
在这里插入图片描述

3. 构建树

  • 初始化

y i 0 = 0.5 y_i^0 = 0.5 yi0=0.5,并将样本点(实心圆)及预测值(黑色的粗线)画到二维坐标中。
在这里插入图片描述

  • 残差
    根据 s s ss ss的计算公式,其涉及到 R e s i d u a l Residual Residual,所以我们将每个样本点的残差计算出来
    在这里插入图片描述
  • 寻找最优切分点
    这里我们采用精确贪心算法进行切分
  • 首先将特征值进行排序,这里只有一个特征,我们给出的顺序刚好是排序好的,即 10, 20, 25, 35
  • 切分点选取的是相邻两个特征值的均值,所以此时我们有3个切分点,即15, 22.5, 30
  • 接下来我们将会计算三个不同的切分得到的 G a i n Gain Gain值,选择最大的 G a i n Gain Gain(增益)对应的切分点

接下来将计算3个切分点对应的增益,这里取 λ = 0 \lambda=0 λ=0.

  1. D o s a g e < 15 Dosage < 15 Dosage<15
    图中红色的虚线是切分点
    在这里插入图片描述
    这里再提一下,根据 G a i n Gain Gain的计算公式,我们只需要计算出每个结点的 s s ss ss,然后再进行相应的运算就可以得到 G a i n Gain Gain了。
    在这里插入图片描述
    我们先计算根结点的 s s ss ss

在这里插入图片描述
接下来计算叶子结点,
在这里插入图片描述
然后计算以 D o s a g e < 15 Dosage<15 Dosage<15作为切分点时的 G a i n Gain Gain
在这里插入图片描述
2. D o s a g e < 22.5 Dosage<22.5 Dosage<22.5
同样的计算方法
在这里插入图片描述
3. D o s a g e < 30 Dosage < 30 Dosage<30
在这里插入图片描述
三个切分点的 G a i n Gain Gain已经计算完成,大小关系如下:
G a i n 15 = 120.33 > G a i n 30 = 56.33 > G a i n 22.5 = 4 Gain_{15}=120.33 >Gain_{30}=56.33>Gain_{22.5}=4 Gain15=120.33>Gain30=56.33>Gain22.5=4

D o s a g e < 15 Dosage<15 Dosage<15作为切分点时的 G a i n Gain Gain最大,选择此切分点
在这里插入图片描述
此时左边结点不需要再切分,我们继续分析右边结点,这时我们可以有两个可选的切分点,同样计算不同切分点时的 G a i n Gain Gain,步骤同上

  1. D o s a g e < 22.5 Dosage < 22.5 Dosage<22.5
    在这里插入图片描述
  2. D o s a g e < 30 Dosage<30 Dosage<30
    在这里插入图片描述
    D o s a g e < 30 Dosage<30 Dosage<30时的增益最大,得到树结构如下
    在这里插入图片描述
    在工程实现中,我们可以控制树的深度,在这里将树的深度限制为2(根结点第0),所以第一棵树已经构建完成。

4. 剪枝

自底向上判断是否需要剪枝
在这里插入图片描述

  1. γ = 130 \gamma=130 γ=130
    在这里插入图片描述
    虽然这里根结点的 G a i n < γ Gain <\gamma Gain<γ,但我们没有对第一个分支进行剪枝,所以我们不会删掉这个根结点。
    在这里插入图片描述
  2. γ = 150 \gamma=150 γ=150
    此时自底向上剪枝的时候,就会剪掉整棵树,最后我们只剩下初始的预测值

在这里插入图片描述

5. 计算输出值

这里我们取 γ = 130 \gamma=130 γ=130,所以不会进行剪枝,树结构及其输出值如下:
在这里插入图片描述

6. 新的预测值

在这里插入图片描述
根据左下角的图片,我们可以看到,预测值更接近真实值了
在这里插入图片描述

7. 继续构建下一棵树

在这里插入图片描述
在这里插入图片描述
这样计算一遍,对XGBoost构建树的过程更清楚了。

最后,我参考前述提到的资料,将XGBoost的原理推导及文中的举例部分,做成了PPT,欢迎下载,提意见 XGBoos.pptx

XGBoost(eXtreme Gradient Boosting)是一种高效且灵活的梯度提升决策树(Gradient Boosting Decision Tree, GBDT)算法,由陈天奇等人在2016年提出。它的核心思想是在迭代过程中不断加入新的树,每一棵新的树都是在上一轮迭代的基础上建立,以弥补之前所有树预测的不足。其算法理论模型主要包含以下几个关键概念: 1. 梯度提升(Gradient Boosting):XGBoost是一种梯度提升算法,通过迭代地添加新的模型来逐渐提高预测准确度。每一轮迭代都会尝试减小整体模型的损失函数,也就是提升模型性能。 2. 损失函数(Loss Function):XGBoost通过定义损失函数来衡量模型预测值与真实值之间的差异。损失函数通常由两部分组成:一部分是前一轮模型预测的损失,另一部分是新加入的树模型拟合前一轮残差的损失。 3. 正则化项(Regularization Term):在XGBoost的损失函数中加入了正则化项,这包括树的复杂度以及叶子节点的权重,用于防止模型过拟合。正则化项可以控制模型的复杂度,防止在数据上过度拟合。 4. 剪枝策略(Pruning Strategy):XGBoost在建立树的过程中采用了预剪枝的策略,即在构建树的过程中提前停止分裂节点,避免树的过度生长。 5. 加速学习(Acceleration):XGBoost使用了多种方法来加速学习过程,例如高效的树结构设计、近似算法以及并行计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值