集成学习之Xgboost

网友投稿 334 2022-06-26


XGBoost全名叫(eXtreme Gradient Boosting)极端梯度提升,或者叫极值梯度提升算法,经常被用在一些比赛中,其效果显著。它是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包。XGBoost 所应用的算法就是 GBDT(gradient boosting decision tree)的改进,既可以用于分类也可以用于回归问题中。GBDT和xgboost在竞赛和工业界使用都非常频繁,GBDT是以决策树(CART)为基学习器的GB算法,xgboost扩展和改进了GDBT,xgboost算法更快,准确率也相对高一些。现在Kaggle 大赛的情况基本是这样的,凡是非结构化数据相关,比如语音、图像,基本都是深度学习获胜,凡是结构化数据上的竞赛,基本都是 XGBoost 获胜。Xgboost可以说集成思想达到顶峰的一个模型,至少目前是这样,所以学习机器学习算法,掌握这个是很有必要的。

学习Xgboost之前,需要了解决策树,集成学习,GBDT等算法的概念,会帮助更好的去理解Xgboost。

Gradient boosting回顾

机器学习中学习算法的目标是为了优化或者说最小化loss Function, Gradient boosting的思想是迭代生多个(M个)弱的模型,然后将每个弱模型的预测结果相加,后面的模型Fm+1(x)Fm+1(x)基于前面学习模型F_{m}(x)的的效果生成的,关系如下:

Fm+1(x)=Fm(x)+h(x),1

GB算法的思想很简单,关键是怎么生成h(x)h(x)。如果目标函数是回归问题的均方误差,很容易想到最理想的h(x)h(x)应该是能够完全拟合y−Fm(x)y−Fm(x),这就是常说基于残差的学习。残差学习在回归问题中可以很好的使用,但是为了一般性(分类,排序问题),实际中往往是基于loss Function 在函数空间的的负梯度学习,对于回归问题残差和负梯度也是相同的。因此基于Loss Function函数空间的负梯度的学习也称为“伪残差”。

回顾GBDT的回归算法迭代的流程:

输入是训练集样本:T={(x,y1),(x2,y2),...,(xm,ym)}T={(x,y1),(x2,y2),...,(xm,ym)}, 最大迭代次数TT, 损失函数LL。

输出是强学习器:f(x)f(x)是一颗回归树。

1) 初始化弱学习器(估计使损失函数极小化的常数值,它是只有一个根节点的树,一般平方损失函数为节点的均值,而绝对损失函数为节点样本的中位数):

f0(x)=argminc∑i=1mL(yi,c)f0(x)=argminc∑i=1mL(yi,c)

2) 对迭代轮数t=1,2,...,T有(即生成的弱学习器个数):

(2.1)对样本i=1,2,...,m,计算负梯度(损失函数的负梯度在当前模型的值将它作为残差的估计,对于平方损失函数为,它就是通常所说的残差;而对于一般损失函数,它就是残差的近似值(伪残差)):

rti=−[∂L(yi,f(xi)))∂f(xi)]f(x)=ft−1(x)rti=−[∂L(yi,f(xi)))∂f(xi)]f(x)=ft−1(x)

(2.2)利用

GB算法的思想很简单,关键是怎么生成h(x)h(x)。如果目标函数是回归问题的均方误差,很容易想到最理想的h(x)h(x)应该是能够完全拟合y−Fm(x)y−Fm(x),这就是常说基于残差的学习。残差学习在回归问题中可以很好的使用,但是为了一般性(分类,排序问题),实际中往往是基于loss Function 在函数空间的的负梯度学习,对于回归问题残差和负梯度也是相同的。因此基于Loss Function函数空间的负梯度的学习也称为“伪残差”。

回顾GBDT的回归算法迭代的流程:

输入是训练集样本:T={(x,y1),(x2,y2),...,(xm,ym)}T={(x,y1),(x2,y2),...,(xm,ym)}, 最大迭代次数TT, 损失函数LL。

输出是强学习器:f(x)f(x)是一颗回归树。

1) 初始化弱学习器(估计使损失函数极小化的常数值,它是只有一个根节点的树,一般平方损失函数为节点的均值,而绝对损失函数为节点样本的中位数):

f0(x)=argminc∑i=1mL(yi,c)f0(x)=argminc∑i=1mL(yi,c)

2) 对迭代轮数t=1,2,...,T有(即生成的弱学习器个数):

(2.1)对样本i=1,2,...,m,计算负梯度(损失函数的负梯度在当前模型的值将它作为残差的估计,对于平方损失函数为,它就是通常所说的残差;而对于一般损失函数,它就是残差的近似值(伪残差)):

rti=−[∂L(yi,f(xi)))∂f(xi)]f(x)=ft−1(x)rti=−[∂L(yi,f(xi)))∂f(xi)]f(x)=ft−1(x)

(2.2)利用


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:LeetCode 46. 全排列(leetcode是干嘛的)
下一篇:《自拍教程62》Python adb反复断网联网测试
相关文章

 发表评论

暂时没有评论,来抢沙发吧~