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

文章目录

    • 1. 数据集-回归问题
    • 2. 求一阶导数和二阶导数
    • 3. 构建树
    • 4. 剪枝
    • 5. 计算输出值
    • 6. 新的预测值
    • 7. 继续构建下一棵树

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

  • 【机器学习】决策树(下)——XGBoost、LightGBM(非常详细)
  • https://xgboost.readthedocs.io/en/latest/tutorials/model.html
  • https://www.bilibili.com/video/BV1Ca4y1t7DS?p=11

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

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

1. 数据集-回归问题

我们需要解决的是一个回归问题,数据如下表所示,NO是样本的编号,Drug Dosage 是特征,Drug Effective 是真实值。我们将根据这个数据集构建一个XGBoost模型。
简单例子说明XGBoost中树模型的构建过程_第1张图片

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

这里采用的平方损失函数
简单例子说明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中,如下:
简单例子说明XGBoost中树模型的构建过程_第3张图片

3. 构建树

  • 初始化

y i 0 = 0.5 y_i^0 = 0.5 yi0=0.5,并将样本点(实心圆)及预测值(黑色的粗线)画到二维坐标中。
简单例子说明XGBoost中树模型的构建过程_第4张图片

  • 残差
    根据 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
    图中红色的虚线是切分点
    简单例子说明XGBoost中树模型的构建过程_第5张图片
    这里再提一下,根据 G a i n Gain Gain的计算公式,我们只需要计算出每个结点的 s s ss ss,然后再进行相应的运算就可以得到 G a i n Gain Gain了。
    简单例子说明XGBoost中树模型的构建过程_第6张图片
    我们先计算根结点的 s s ss ss

在这里插入图片描述
接下来计算叶子结点,
简单例子说明XGBoost中树模型的构建过程_第7张图片
然后计算以 D o s a g e < 15 Dosage<15 Dosage<15作为切分点时的 G a i n Gain Gain
简单例子说明XGBoost中树模型的构建过程_第8张图片
2. D o s a g e < 22.5 Dosage<22.5 Dosage<22.5
同样的计算方法
简单例子说明XGBoost中树模型的构建过程_第9张图片
3. D o s a g e < 30 Dosage < 30 Dosage<30
简单例子说明XGBoost中树模型的构建过程_第10张图片
三个切分点的 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
    简单例子说明XGBoost中树模型的构建过程_第11张图片
  2. D o s a g e < 30 Dosage<30 Dosage<30
    简单例子说明XGBoost中树模型的构建过程_第12张图片
    D o s a g e < 30 Dosage<30 Dosage<30时的增益最大,得到树结构如下
    简单例子说明XGBoost中树模型的构建过程_第13张图片
    在工程实现中,我们可以控制树的深度,在这里将树的深度限制为2(根结点第0),所以第一棵树已经构建完成。

4. 剪枝

自底向上判断是否需要剪枝
简单例子说明XGBoost中树模型的构建过程_第14张图片

  1. γ = 130 \gamma=130 γ=130
    简单例子说明XGBoost中树模型的构建过程_第15张图片
    虽然这里根结点的 G a i n < γ Gain <\gamma Gain<γ,但我们没有对第一个分支进行剪枝,所以我们不会删掉这个根结点。
    简单例子说明XGBoost中树模型的构建过程_第16张图片
  2. γ = 150 \gamma=150 γ=150
    此时自底向上剪枝的时候,就会剪掉整棵树,最后我们只剩下初始的预测值

简单例子说明XGBoost中树模型的构建过程_第17张图片

5. 计算输出值

这里我们取 γ = 130 \gamma=130 γ=130,所以不会进行剪枝,树结构及其输出值如下:
简单例子说明XGBoost中树模型的构建过程_第18张图片

6. 新的预测值

在这里插入图片描述
根据左下角的图片,我们可以看到,预测值更接近真实值了
简单例子说明XGBoost中树模型的构建过程_第19张图片

7. 继续构建下一棵树

简单例子说明XGBoost中树模型的构建过程_第20张图片
简单例子说明XGBoost中树模型的构建过程_第21张图片
这样计算一遍,对XGBoost构建树的过程更清楚了。

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

你可能感兴趣的:(算法工程师,XGBoost,机器学习,决策树)