回归树

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的方式可以避免过拟合,同样地,更小的训练集也可以更快的完成训练。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值