VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • 集成学习之Xgboost

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)基于前面学习模型F_{m}(x)的的效果生成的,关系如下:

Fm+1(x)=Fm(x)+h(x),1<m<M

 

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

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

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

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

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

f0(x)=argminci=1mL(yi,c)

 

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

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

rti=[L(yi,f(xi)))f(xi)]f(x)=ft1(x)

 

(2.2)利用


相关教程