美文网首页
集成学习之Boosting-gbdt

集成学习之Boosting-gbdt

作者: 小小orange | 来源:发表于2018-12-08 11:34 被阅读0次

    一、什么是GBDT

    二、GBDT与传统Adaboost的不同之处

    三、GBDT的负梯度拟合

    四、GBDT算法流程

    五、GBDT工作过程实例

    六、GBDT常用损失函数

    七、算法的优缺点

    八、补充说明:几种常见的损失函数

    ***************************************************************************************************************

    一、什么是gbdt

            GBDT的全称梯度提升树算法(Gradient Boosting Decison Tree)。我们在进行模型训练时有两个原则:1.如何使L损失函数最小;2.怎样快速地使L损失函数变小。对于问1可以求导来确定,对于问2无论此时的cost function是什么,是均方差还是均差,只要它以误差作为衡量标准,残差向量比如(-1, 1, -1, 1)都是它的全局最优方向,这就是Gradient。另外,这里的决策树选取Cart树。

      二、GBDT与传统Adaboost的不同之处 

            GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同。对于Adaboost利用前一轮迭代弱学习器的误差率来更新样本的权重,利用更新后的样本来训练下一个迭代弱学习器,这样不断地迭代下去。然而,对于GBDT而言本轮的弱学习器ft-1(x), 损失函数是L(y,ft−1(x))。我们本轮迭代的目标是找到一个CART回归树模型的弱学习器ht(x),让本轮的损失函数L(y,ft(x)=L(y,ft−1(x)+ht(x))最小。也就是说,本轮迭代找到决策树,要让样本的损失尽量变得更小。

            用一个通俗的例子来讲假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。

    三、gbdt的负梯度拟合

            1.为什么进行负梯度拟合?

            GBDT的思想就是不断迭代去拟合残差,使残差不断减少。每次迭代构造的Cart树都是前一轮的残差拟合的。当GBDT损失函数为误差平方函数时,GBDT的负梯度就是拟合的是残差。但是如果损失函数不是误差平方函数的话Freidman提出了梯度提升算法:利用最速下降的近似方法,即利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。其实负梯度就是Loss Function减少最快的方向。

            2.负梯度怎样拟合残差?

            大牛Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。第t轮的第i个样本的损失函数的负梯度表示为:

             注:这里ctj是叶子节点的输出值,下一节结合具体例子来说明ctj的值。但是这里有个疑问,损失函数的最小值只能输出一个,叶子节点ctj这么多输出一个值吗? 

    四、GBDT算法流程        

            1.GBDT回归算法

            下面是GBDT回归算法的具体过程,这里没有一起说GBDT分类算法是因为其输出的类别值而不是连续值,无法用负梯度来拟合残差。所以要进行变化才能应用负梯度。

            2.GBDT二元分类算法

            GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。

            了解决这个问题,主要有两个方法,一个是用指数损失函数,此时GBDT退化为Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法。也就是说,我们用的是类别的预测概率值和真实概率值(可应用负梯度)的差来拟合损失。本文仅讨论用对数似然损失函数的GBDT分类。而对于对数似然损失函数,我们又有二元分类和多元分类的区别。

            注:正因为二分类GBDT算法输出的值是类别没有具体的值,那我们应该想办法找到一个具体的值并且还能对应到输出的类别上,这时想到预测样本x是y的概率值。把预测正确的概率值与损失函数结合到一起,即预测的概率值越大那么损失函是的值越小。又因为代价函数的值是各个样本损失函数的值加和一起,同时概率之间的同时满足需要使用乘法p(y1|x).p(y2|x)...p(y3|x),所以我们定义度数似然函数为损失函数L(y,p(y|x))=-logp(y|x),即代价函数为costFunc=-log(p(y1|x).p(y2|x)...p(yn|x))=-[logp1+logp2+...+logpn]

    五、GBDT工作过程实例

            https://www.cnblogs.com/peizhe123/p/6105696.html

    六、GBDT常用损失函数

            https://www.cnblogs.com/pinard/p/6140514.html参看链接

    七、算法的优缺点 

    八、几种常见的损失函数

            1.损失函数(loss function):定义在单个样本上的,是指一个样本的误差。

            2.代价函数(cost function):是定义在整个训练集上的,是所有样本误差的平均,也就是所有损失函数值的平均。

            3.目标函数(object function):是指最终需要优化的函数,一般来说是经验风险+结构风险,也就是(代价函数+正则化项)。

            https://www.cnblogs.com/lliuye/p/9549881.html参考链接

    相关文章

      网友评论

          本文标题:集成学习之Boosting-gbdt

          本文链接:https://www.haomeiwen.com/subject/orslqqtx.html