当前位置 博文首页 > dastu的博客:学习笔记——GBDT

    dastu的博客:学习笔记——GBDT

    作者:[db:作者] 时间:2021-09-19 19:22

    GBDT梯度提升决策树,是一种典型的boosting的集成学习算法,也就采用的加法模型,通过
    若干个基学习器的结果进行相加得到最终的结果。

    一.GBDT的训练过程

    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的分类算法

    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?

    下一篇:没有了