XGBOOST下一棵树的输入是什么?

最近研究XGBOOST,发现看完大篇理论推导之后根本不知道训练完一棵树后,下一棵树的输入是什么。

我想到了提升树(Boosting Tree),以平方误差损失函数为例,训练完一棵树后,只需要计算训练值\hat{y}和实际值y的残差,再对残差进行拟合就可以了。也就是说,假如我需要生成三棵树,第一棵树的拟合目标是

Tree_{1}=fit(x_{train}, y_{train})

预测输出

\hat{y_{1}}=Tree_{1}.predict(x_{train})

第二棵树的拟合目标是

Tree_{2}=fit(x_{train}, y_{train} - \hat{y_{1}})

\hat{y_{2}}=Tree_{2}.predict(x_{train})

第三课树的拟合目标是

Tree_{3}=fit(x_{train}, y_{train} - (\hat{y_{1}}+\hat{y_{2}}))

\hat{y_{3}}=Tree_{3}.predict(x_{train})

最终的预测值就是\hat{y}=\hat{y_{1}}+\hat{y_{1}}+\hat{y_{3}}

而梯度提升树(GDBT),则是拟合损失函数的负梯度在当前模型的值,假设也是三棵树,损失函数为L(y, \hat{y})

第一棵树的拟合目标是

Tree_{1}=fit(x_{train}, y_{train})

预测输出

\hat{y_{1}}=Tree_{1}.predict(x_{train})

此时需要计算第一棵树的损失函数,即L_{1}=L(y, \hat{y_{1}}),损失函数是关于\hat{y}_{1}的函数,计算该损失函数对\hat{y}_{1}的导数的相反数(负梯度)在Tree1上的值。

假设某一损失函数L=(y-\hat{y})^2,某一样本输入x_{i}的标签y_{i}=2,那么此时该样本的损失函数为L_{i}=(2-\hat{y}_{i})^2,其负梯度为-2(\hat{y}_{i}-2),它就是下一轮样本x_{i}的输入

综上所述,第二棵树的拟合目标是

Tree_{2}=fit(x_{train},-\frac{\partial L(y,\hat{y}_{1})}{\partial \hat{y_{1}}})

预测输出

\hat{y_{2}}=Tree_{2}.predict(x_{train})

第三棵树的拟合目标

Tree_{3}=fit(x_{train},-\frac{\partial L(y,\hat{y}_{1}+\hat{y}_{2})}{\partial (\hat{y_{1}}+\hat{y_{2}})})

预测输出

\hat{y_{3}}=Tree_{3}.predict(x_{train})

最终的预测值就是\hat{y}=\hat{y_{1}}+\hat{y_{1}}+\hat{y_{3}}

接下来就是XGBOOST了,

第一棵树的拟合目标是

Tree_{1}=fit(x_{train}, y_{train})

预测输出

\hat{y_{1}}=Tree_{1}.predict(x_{train})

那么最关键的,第二棵树的拟合目标是什么?是残差?还是一阶导数?还是二阶导数?其实我也不知道。我先把陈博士的图放上来

我个人的看法是,拟合是从很多种映射的集合中,找到某一映射使得损失函数最小。我们真正的关注点和目标是构造出损失函数,并让它取到最小值。看一下上图的目标函数,f_{t}是未知的,是需要求得的树结构。而\hat{y}_{i}^{(t-1)}g_ih_i是已知的,我们可以说是拟合\hat{y}_{i}^{(t-1)}g_ih_i,也可以说是拟合\hat{y}_{i}^{(t-1)}(因为g_ih_i可由它求出),拟合什么东西不重要,重要的是使得损失函数最小。

就比如我在上面的提升树中,我可以说我下一轮的输入是

Tree_{2}=fit(x_{train}, \hat{y_{1}})

这和拟合

Tree_{2}=fit(x_{train}, y_{train} - \hat{y_{1}})

是等价的

因为我进入到前者的算法后,做的第一件事情就是算y_{train} - \hat{y_{1}}的值,然后构造出损失函数。后者作为残差更直观一些罢了。

因此,在XGBOOST中,我可以选择拟合

Tree_{2}=fit(x_{train}, \hat{y_{1}})

然后在内部算法中,算出g_ih_i,构造出损失函数,并最小化。“输入”只是一个形式。

 

 

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
决策是一种广泛应用的机器学习算法,用于分类和回归任务。它通过对输入数据进行递归的二分切分,构建一棵树结构来进行预测。决策的生成包括两个步骤:决策生成和决策剪枝。在决策生成过程中,算法会尽可能地生成一个大的决策,以最好地拟合训练数据。在决策剪枝过程中,算法会使用验证数据集对已生成的进行剪枝,并选择最优的子作为最终的结果,剪枝的标准通常是通过最小化损失函数来确定的。 而Xgboost是一种基于决策的集成学习算法,特别适用于分类和回归任务。Xgboost通过构建多颗决策,并将它们组合起来,形成一个强大的预测模型。Xgboost在决策生成过程中使用了一种称为梯度提升(Gradient Boosting)的技术,可以逐步地改进每一颗决策的预测能力。它通过优化目标函数来选择每一步生成的决策,使得模型的性能不断提升。Xgboost算法的核心思想是通过加权求和的方式,将多棵决策的预测结果进行组合,以获得更准确的预测结果。Xgboost在训练和预测速度上也具有很大的优势,因此被广泛应用于数据科学和机器学习领域。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [决策、GBDT与Xgboost详解](https://blog.csdn.net/hywel_xue/article/details/84145810)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值