xgboost理论推导

xgboost王牌集成学习算法

知乎答主写的这一篇太棒了,戳这里

原论文

算法大致架构

请添加图片描述

算法流程

请添加图片描述

模型依赖关系

请添加图片描述

引出损失函数

请添加图片描述

使用泰勒展式优化损失

请添加图片描述
请添加图片描述

参数化损失函数

请添加图片描述

二次函数优化损失求极值

请添加图片描述

损失差极大化确定特征条件

请添加图片描述

结论

一般化结构分数:

注意泰勒展式推导中 g i g_i gi 含义

 Score  j = ( ∑ i ∈ j g i ) 2 ∑ i ∈ j h i + λ \text { Score }_{j}=\frac{\left(\sum_{i \in j} g_{i}\right)^{2}}{\sum_{i \in j} h_{i}+\lambda}  Score j=ijhi+λ(ijgi)2

Score ⁡ j =  节点  j  上所有样本的一阶导数之和的平方   节点  j  上所有样本的二阶导数之和  + λ \operatorname{Score}_{j}=\frac{\text { 节点 } j \text { 上所有样本的一阶导数之和的平方 }}{\text { 节点 } j \text { 上所有样本的二阶导数之和 }+\lambda} Scorej= 节点 j 上所有样本的二阶导数之和 +λ 节点 j 上所有样本的一阶导数之和的平方 

o b j o l d ∗ − o b j n e w ∗ =  Gain  = 1 2 (  Score  L +  Score  R −  Score  ) − γ = 1 2 ( ( ∑ i ∈ L g i ) 2 ∑ i ∈ L h i + λ + ( ∑ i ∈ R g i ) 2 ∑ i ∈ R h i + λ − ( ∑ i ∈ P g i ) 2 ∑ i ∈ P h i + λ ) − γ \begin{aligned} obj_{old}^*-obj_{new}^*=\text { Gain } &=\frac{1}{2}\left(\text { Score }_{L}+\text { Score }_{R}-\text { Score }\right)-\gamma \\ &=\frac{1}{2}\left(\frac{\left(\sum_{i \in L} g_{i}\right)^{2}}{\sum_{i \in L} h_{i}+\lambda}+\frac{\left(\sum_{i \in R} g_{i}\right)^{2}}{\sum_{i \in R} h_{i}+\lambda}-\frac{\left(\sum_{i \in P} g_{i}\right)^{2}}{\sum_{i \in P} h_{i}+\lambda}\right)-\gamma \end{aligned} objoldobjnew= Gain =21( Score L+ Score R Score )γ=21(iLhi+λ(iLgi)2+iRhi+λ(iRgi)2iPhi+λ(iPgi)2)γ

这即是说,结构分数增益实际上就是:

 Gain  =  左节点的结构分数 + 右节点的结构分数  −  父节点的结构分数  \text { Gain }=\text { 左节点的结构分数 + 右节点的结构分数 }-\text { 父节点的结构分数 }  Gain = 左节点的结构分数 + 右节点的结构分数  父节点的结构分数 

我们选择增益 G a i n Gain Gain 最大的点进行分枝。

损失差极大化好像和模型复杂度的超参数γ没有关系俺也不知道为啥

知道啥用了,在每个树模型生成时,虽然超参数γ不能改变树的特征选择过程,但是若信息增益值小于γ了,虽然是最优的方案,但是这个分割也不能作为树生长条件,因为信息增益减去γ小于零,没有价值,就这样限制了树模型的生长(不影响最优特征的选择),另外sklearn是先生成所有树模型,然后根据信息增益减去超参数γ的正负值进行剪枝。

在XGBoost中,我们追求一棵树整体的结构分数最大,因此XGBoost规定任意结构的分数增 益不能为负,任意增益为负的节点都会被前枝,因此可以默认有:

1 2 ( ( ∑ i ∈ L g i ) 2 ∑ i ∈ L h i + λ + ( ∑ i ∈ R g i ) 2 ∑ i ∈ R h i + λ − ( ∑ i ∈ P g i ) 2 ∑ i ∈ P h i + λ ) − γ > 0 \frac{1}{2}\left(\frac{\left(\sum_{i \in L} g_{i}\right)^{2}}{\sum_{i \in L} h_{i}+\lambda}+\frac{\left(\sum_{i \in R} g_{i}\right)^{2}}{\sum_{i \in R} h_{i}+\lambda}-\frac{\left(\sum_{i \in P} g_{i}\right)^{2}}{\sum_{i \in P} h_{i}+\lambda}\right)-\gamma>0 21(iLhi+λ(iLgi)2+iRhi+λ(iRgi)2iPhi+λ(iPgi)2)γ>0

因此:

1 2 ( ( ∑ i ∈ L g i ) 2 ∑ i ∈ L h i + λ + ( ∑ i ∈ R g i ) 2 ∑ i ∈ R h i + λ − ( ∑ i ∈ P g i ) 2 ∑ i ∈ P h i + λ ) > γ \frac{1}{2}\left(\frac{\left(\sum_{i \in L} g_{i}\right)^{2}}{\sum_{i \in L} h_{i}+\lambda}+\frac{\left(\sum_{i \in R} g_{i}\right)^{2}}{\sum_{i \in R} h_{i}+\lambda}-\frac{\left(\sum_{i \in P} g_{i}\right)^{2}}{\sum_{i \in P} h_{i}+\lambda}\right)>\gamma 21(iLhi+λ(iLgi)2+iRhi+λ(iRgi)2iPhi+λ(iPgi)2)>γ

这是说,当参数 γ \gamma γ 0 0 0 时,任意增益为负的节点都会被剪枝。当 γ \gamma γ 为任意正数 时,任意增益小于 γ \gamma γ 设定值的节点都会被剪枝。不难发现, γ \gamma γ 在剪枝中的作用 就相当于sklearn中的 m i n _ i m p u r i t y _ d e c r e a s e min\_impurity\_decrease min_impurity_decrease

计算过程举例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

致谢贪心学院李文哲老师

最优切分店选择

来自知乎
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

支持并行

在这里插入图片描述

关于预排序

为什么预排序:因为在通过结构分数计算Gain收益过程中,我们需要计算左右子树的结构分数?
假设样本值为:[ 3 , 33 , 16 ,23 ,4 ],左右子树方向条件是:> M为左节点,否则为右节点,那么我们通过排序后[ 33 , 23 , 16 , 4 , 3],那么先将第一个[33]放在左,计算一下,然后[33 , 23]放在左,[ 33 ,23 16]放在左,再然后[ 33 , 23 , 16 , 4 ] 最后比较Gain值,若不进行排序,那么需要在确定M时对于谁去左谁去右都要遍历查找一下,就会造成时间效率低的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「 25' h 」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值