当前位置 博文首页 > dastu的博客:学习笔记——GBDT
GBDT梯度提升决策树,是一种典型的boosting的集成学习算法,也就采用的加法模型,通过
若干个基学习器的结果进行相加得到最终的结果。
GBDT通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进
行训练。对弱分类器的要求一般是足够简单,并且是低方差和高偏差的。因为训练的过程是通
过降低偏差来不断提高最终分类器的精度。
GBDT的基学习器一般为cart树,也就意味着每一轮迭代都产生一颗cart树(针对分类问题有
不同,后面讨论)。因为单颗cart树是一个弱学习器,方差稳定且精度不会太高,如果基分类器是强学习器,则会导致过拟合的问题。
GBDT每一轮训练都会用上一轮训练得到的残差来作为目标,来训练出新一轮的cart树,也就是残差拟合。比如一个人身高170,前t-1轮训练得到的强学习器预测结果是150,那么新一轮训练的cart目标是拟合170-150=20,将会拟合这个20的差值。
训练过程如下图所示。
假设第t轮训练的弱学习器为 h t ( x ) h_t(x) ht?(x),强学习器为 f t ( x ) f_t(x) ft?(x)。
模型一共运行T轮,其中第t轮中对样本i的预测结果为: f t ( x i ) = f t ? 1 ( x i ) + h t ( x i ) f_t(x_i)= f_{t-1}(x_i)+h_t(x_i) ft?(xi?)=ft?1?(xi?)+ht?(xi?)
样本i在第t轮的损失函数为: L ( y i , f t ( x i ) ) = L ( y i , f t ? 1 ( x i ) + h t ( x i ) ) L(y_i,f_t(x_i))=L(y_i,f_{t-1}(x_i)+h_t(x_i)) L(yi?,ft?(xi?))=L(yi?,ft?1?(xi?)+ht?(xi?))
样本i在第t轮损失函数的负梯度为: r t i = ? L ( y i , f t ? 1 ( x i ) ) ? f t ? 1 ( x i ) r_{ti}= \frac{\partial L(y_i,f_{t-1}(x_i))}{\partial f_{t-1}(x_i)} rti?=?ft?1?(xi?)?L(yi?,ft?1?(xi?))?
用 ( x i , r t i ) (x_i,r_{ti}) (xi?,rti?)作为样本来训练这一轮的cart树,而不再是原来的 ( x i , y i ) (x_i,y_i) (xi?,yi?)。
gbdt 无论用于分类还是回归一直都是使用的CART 回归树。不会因为我们所选择的任务是分类任务就选用分类树,这里面的核心是因为gbdt 每轮的训练是在上一轮的训练的残差基础之上进行训练的。这里的残差就是当前模型的负梯度值 。这个要求每轮迭代的时候,弱分类器的输出的结果相减是有意义的。残差相减是有意义的。而对于分类问题来说,类别A-类别B是没有意义的。
二分类问题
GBDT的分类算法很大程度上参考了逻辑回归的分类算法。
GBDT二分类算法的优化目标是学习得到一个最优的线性模型,通过线性模型来计算概率,从而计算损失,而不是直接学习得到最优的概率值。逻辑回归也是学习wx+b中的w,b,本质上也是线性模型,最后在外部加上sigmoid激活函数来转换成概率。
当我们学习到第t个弱学习器为 h t ( x ) h_t(x) ht?(x),强学习器为 f t ( x ) f_t(x) ft?