回归树
GBDT由一系列的回归树组成,如下图所示(树的深度未必都要一样,下图仅为示意图)。
GBDT原理
针对每一个类别训练一系列的回归树,再累加每个类别回归树的预测值得到针对每个类别的最终的预测值。单独拿一个类别来说,训练的过程中假设需要预测的值为,实际的值为,有Loss
Function ,为参数。训练的过程就是让Loss
Function最小化的过程。最小化可以通过梯度下降完成,令Loss Function对参数求梯度有
那么,只要参数不断往梯度方向变化,Loss
Function就会减小直至收敛。即每一次迭代为
其中为学习率。
假设第一棵回归树的预测值为,对这一时刻的参数求梯度,得到,因为梯度是根据训练样本中的实际值得到的,预测未知样本时,并没有实际的,因此需要估计这一时刻的梯度,这就需要通过第二棵回归树来拟合。故利用根据训练样本求得的梯度值作为目标值,利用训练样本再训练一棵回归树,并用再求一遍梯度,之后更新参数得到。以此类推,迭代直到得到给定数目的回归树。
此时这一系列的回归树的预测值累加后得到,可以令Loss Function足够小,也就得到了一个训练好的gbdt模型。
选取不同的Loss Function可以达到不同的目的,比如对于信用模型需要分类的情形,Loss Function为Deviance,对应的梯度为
表示样本属于第个类别的概率,通过Softmax方法求得。因为有个类别,所以得到个系列的回归树,每个系列最终的预测值分别为,具体计算公式如下所示
为指示函数。也就是当预测第k个类别概率时,如果真实类别恰好为该类别,梯度为,否则为。所以后一棵树拟合的也就是之前预测值的残差。
GBDT的正则化
训练的过程可以指定需要棵回归树,新的回归树不断拟合之前的残差,在训练集上的误差可能逐渐变为0,导致过拟合。GBDT也有相应避免过拟合的方法。如
1. early stopping策略,保留一个验证集,每增添一棵树通过验证集测试误差是否下降,当增添一定数目的树时验证误差不再下降的时候,就可以终止迭代了,得到棵回归树。
2. Shrinkage,也就是减小每一棵回归树对预测值得贡献。这就对应上了公式中的学习率,,比较小的学习率会导致需要更多的回归树,也就是更大的,根据经验,最好的策略是选取较小的,,然后通过early
stopping选取。
3. 二次抽样,即在拟合一棵新的回归树时,不用完全的样本集,而仅是无放回的抽样其中的部分,通常为,对于大的数据集,抽样的比例可以小于。subsampling的方式可以避免过拟合,同样地,更小的训练集也可以更快的完成训练。