Xgboost模型

一.Xgboost简介

1.Xgboost是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包之一,比常见的工具包快10倍以上,他是GB方法里的完全加强版本,也是基于残差优化的算法,希望建立K个回归树,使得树群的预测值尽量接近真实值(准确率)而且有尽量大的泛化能力。

2.Xgboost相对于GBDT的优点:        

(1)传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。        

(2)传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。并且xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。        

(3)xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性。

(4)列抽样(column subsampling)。xgboost借鉴了随机森林的做法,支持列抽样(随机取一定的列),不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。      

(5)对缺失值的处理。对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向。      

(6)xgboost工具支持并行。xgboost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。

二.Xgboost的原理和一些疑问

1.Xgboost的每次优化时的目标函数是下面的式子:

可以看出其目标函数一方面要考虑到损失函数L的计算,另一方面要控制模型复杂度,防止过拟合,我们每步会构造最佳的模型     。

2.Xgboost的基本过程和GBDT基本是一样的,都是通过构造多个基分类器来达到使目标函数最小的目的,每步针对以上有正则限制的损失函数去找到最佳的分类器。接下来我们从三个角度进行考虑:              

     (1).由于为令新加的     使损失函数L值往更小的方向走,所以需要计算L值与        相关的导数式,导数式该怎么引入那?        

     (2).这个        正则项表达式该怎么表示那?              

     (3).每次在构造基分类器时候,如何找到最佳的分裂点?即找到分割方案?

三.疑问解答 - 问题一

我门会将损失函数中的L部分进行二阶泰勒展开:

由于二阶泰勒展开的计算式子是:      

对应的将L式子内的式子,进行二阶泰勒展开后为(其中yi是已知的实际值):  

   

对应的假定我们令一阶导数为g,二阶导数为h,整个目标函数式子可以改写为:

四.疑问解答 - 问题二

1.我们一般使用复杂度来表示正则项,对复杂度的定义是使用下式:

其中主要分为两部分,T代表了叶子节点总数、     代表了叶子节点得分L2正则化项,    和     是我们另外设定的参数,这样举个例子,下面的树对应的复杂度值即为右式,叶子节点数为3。

2.经过上面的正则项定义,我们可以将目标函数展开成:

3.接下来我们进行两个替换:      

替换之后目标函数值为:

4.接下来对目标函数对w求导,并令其为0,可以得到:

     

将该式子代入可以得到新的目标式:

五.疑问解答 - 问题三

1.到目前为止,我们已经得到最终的目标函数:    

 我们称此式为打分函数,打分函数越小,说明结构越好(其中   越大越好)。

2.比如下面的树,其对应的打分值在右侧(G、H是分到结点位置的阶导数之和)。

3。接下来考虑问题3:每次怎么去寻找合适的分裂结点进行结点分割。

寻找分割点是使用下面的式子(γ是进行分割之后所产生的代价,多了个叶子):        

借助打分函数,每次尝试对树中的每个结点增加一个分割,看看目标函数经过分割之后能够获得的增益Gain,方法是:从左到右扫描就能得到所有分割的梯度H和GL、GR,代入公式就可以得到分割方案下的分数值。

代码范例

猜你喜欢

转载自blog.csdn.net/maqunfi/article/details/82219906
今日推荐