XGBoost

1. 目标函数:

假设有XGBoost模型中由 k k k棵树组成,则可以预测值可以由K棵树的预测结果相加得出,第 k k k棵树模型表示为 f k ( x ) f_k(x) fk(x)

1.1 树的复杂度

树模型的复杂度主要有以下三种:

  1. 叶子结点个数
  2. 树的深度
  3. 叶节点的值(假设预测值为1000,每棵树的值预测值在100到200之间,此时只需要10棵树左右,如果降低叶子结点的值,则需要更多的树拟合目标值。因此树的复杂度略有降低。)

2 目标函数的表示

叠加式训练,在构建第 k k k课树的时候,前 k − 1 k-1 k1棵树是已知的。假设目前我们要构建第 k k k棵树,第 j j j棵树对样本 x i x_i xi的预测值记为 f j ( x i ) f_j(x_i) fj(xi),前 k − 1 k-1 k1棵树对样本 x i x_i xi预测值为 y ^ ( i ) k − 1 \hat{y}_{(i)}^{k-1} y^(i)k1
在这里插入图片描述
在这里插入图片描述
现在要求最小的loss值
在这里插入图片描述
因为前 k − 1 k-1 k1棵树的结果和复杂度已知,故当训练第 k k k棵树的样本时,我们最小化的目标为:
在这里插入图片描述
总结一下:我们的目标函数为:
在这里插入图片描述

2.1 泰勒函数近似目标函数

在这里插入图片描述
在这里插入图片描述
代入泰勒函数:
在这里插入图片描述
其中,红框中的部分均为已知部分,故而不参与后期的优化过程,
在这里插入图片描述
因此,最后的目标函数变为:
在这里插入图片描述

3. 如何参数化当前树的函数?

在这里插入图片描述
也就是,如何表示第 i i i个样本的表达式 f k ( x i ) f_k(x_i) fk(xi)?在此,需要定义几个变量:

  1. 叶节点的权重。
    在这里插入图片描述
  2. 样本的位置 q ( x i ) q(x_i) q(xi)
    如果样本落在第二个节点上,那么该值可以表达为 w 2 w_2 w2,假设1,3 值落在节点1上;2,5 值落在节点3上;4落在2节点上,则可以表示为:
    在这里插入图片描述
    所以, f k ( x i ) = w q ( x i ) f_k(x_i)=w_{q(x_i)} fk(xi)=wq(xi)
  3. 为了去掉 w q ( x i ) w_{q(x_i)} wq(xi)中下标的函数,需要定义变量 I j I_j Ij,表示第 j j j个节点中有哪些样本?
    在这里插入图片描述
  4. 定义树的复杂度
    树的复杂度 = 叶节点的个数 + leaf value,即:
    在这里插入图片描述
    λ \lambda λ γ \gamma γ代表不同复杂度项的惩罚力度。

w q ( x ) w_{q(x)} wq(x)的表示方法:

  1. 按照样本顺序:
    在这里插入图片描述
  2. 按照叶节点的顺序:
    在这里插入图片描述
    所以,目标函数可以表示为:
    在这里插入图片描述
    在这里插入图片描述
    其实就是一个一元二次函数的最值问题了,(T是叶节点的个数):
    在这里插入图片描述

接下来的问题就是,从所有可能的树结构中寻找一棵树,这棵树的obj*值最小。

4. 寻找树

在这里插入图片描述
在决策树中,我们的目标函数其实是entropy,但是在XGBoost中,目标函数其实就变成了Obj*。

假设目前树的形状为:
在这里插入图片描述
在这里插入图片描述

设下一步可能的划分为,以特征1构造下一个分支节点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来遍历该子树下的所有特征,选出一个能够让 o b j n e w ∗ − o b j o l d ∗ obj_{new}^*-obj_{old}^* objnewobjold最大的就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值