回归树

来源:互联网 发布:苦瓜知乎道理 编辑:程序博客网 时间:2024/06/08 08:13

GBDT由一系列的回归树组成,如下图所示(树的深度未必都要一样,下图仅为示意图)。

这里写图片描述

GBDT原理

针对每一个类别训练一系列的回归树,再累加每个类别回归树的预测值得到针对每个类别的最终的预测值。单独拿一个类别来说,训练的过程中假设需要预测的值为f(xi),实际的值为yi,有Loss Function L(yi,f(xi))f(xi)为参数。训练的过程就是让Loss Function最小化的过程。最小化可以通过梯度下降完成,令Loss Function对参数f(xi)求梯度有 

gf(x)=L(yi,f(xi))f(xi)

那么,只要参数f(xi)不断往梯度方向变化,Loss Function就会减小直至收敛。即每一次迭代为 

f(xi)t+1=f(xi)tηgf(x)(1)

其中η为学习率。

假设第一棵回归树T1的预测值为f(xi)0,对这一时刻的参数f(xi)0求梯度,得到gf(x)0,因为梯度是根据训练样本中的实际值yi得到的,预测未知样本时,并没有实际的yi,因此需要估计这一时刻的梯度gf(x)0,这就需要通过第二棵回归树来拟合。故利用根据训练样本求得的梯度值gf(x)0作为目标值,利用训练样本再训练一棵回归树T2,并用T2再求一遍梯度g,之后更新参数得到f(xi)1。以此类推,迭代直到得到给定数目的回归树。

此时这一系列的回归树T1,T2,...,Tn的预测值累加后得到f(xi)n,可以令Loss Function足够小,也就得到了一个训练好的gbdt模型。

选取不同的Loss Function可以达到不同的目的,比如对于信用模型需要分类的情形,Loss Function为Deviance,对应的梯度为 

I(yi=Gk)pk(xi)

pk表示样本xi属于第k个类别的概率,通过Softmax方法求得。因为有K个类别,所以得到K个系列的回归树,每个系列最终的预测值分别为f1(x),f2(x),...,fK(X),具体计算公式如下所示 

pk(x)=efk(x)Kl=1efl(x)

I()为指示函数。也就是当预测第k个类别概率时,如果真实类别恰好为该类别,梯度为1pk(xi),否则为pk(xi)。所以后一棵树拟合的也就是之前预测值的残差。

GBDT的正则化

训练的过程可以指定需要M棵回归树,新的回归树不断拟合之前的残差,在训练集上的误差可能逐渐变为0,导致过拟合。GBDT也有相应避免过拟合的方法。如 
1. early stopping策略,保留一个验证集,每增添一棵树通过验证集测试误差是否下降,当增添一定数目的树时验证误差不再下降的时候,就可以终止迭代了,得到M棵回归树。 
2. Shrinkage,也就是减小每一棵回归树对预测值得贡献。这就对应上了公式(1)中的学习率η0<η<1,比较小的学习率会导致需要更多的回归树,也就是更大的M,根据经验,最好的策略是选取较小的η(η<0.1),然后通过early stopping选取M。 
3. 二次抽样,即在拟合一棵新的回归树时,不用完全的样本集,而仅是无放回的抽样其中的部分,通常为12,对于大的数据集,抽样的比例可以小于12。subsampling的方式可以避免过拟合,同样地,更小的训练集也可以更快的完成训练。

0 0
原创粉丝点击