算法梳理之GBDT

1.GBDT算法思想

GBDT是集成学习Boosting算法中的一种,它与Adaboost相比,Adaboost算法利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去,GBDT也是一轮一轮迭代弱学习器,使用前向分布算法,但是它限定弱学习器只能是决策树(CART回归树)。决策树分为两大类,回归树和分类树。

CART决策树既可以用于分类也可以用于回归,决策树分为分类树和回归树,分类树的衡量标准是最大熵,回归树的衡量标准是最小化均方差,所以GBDT中的树都是回归树不是分类树,这点对理解GBDT相当重要。

通俗的例子解释:

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

2.前向分布算法

对于一个加法模型
在这里插入图片描述
其中b(x ; γm)为基函数,γm为基函数的参数,βm为基函数的系数。
在给定训练数据及损失函数L( y, f(x) )的条件下,学习加法模型 f(x)成为经验风险极小化即损失函数极小化问题:
在这里插入图片描述
前向分布算法:就是对于加法模型,从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,就可以简化优化的复杂度,也就是每步只需优化如下损失函数:
在这里插入图片描述
前向分布算法的具体算法流程如下:
在这里插入图片描述

3.负梯度拟合

提升树利用加法模型与前向分步算法实现学习的优化过程,当损失函数是平方损失和指数损失函数时,每一步优化很简单,但对一般损失函数而言,每一步的优化并不容易。大牛Freidman提出了梯度提升算法(gradient boosting),其关键是利用损失函数的负梯度在当前模型的值作为回归问题提升树算法中的残差的近似值,拟合一个回归树(用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树)。第t轮的第i个样本的损失函数的负梯度表示为: 在这里插入图片描述在这里插入图片描述

4.GBDT常用损失函数

(1)GBDT分类算法的损失函数

(a)指数损失函数(Adaboost算法),表达式如下:
在这里插入图片描述
(b)对数损失函数:分为二元分类和多元分类,具体损失函数见下一节

(2)GBDT回归算法的损失函数

(a)均方差,最常用,损失函数表达式为:
在这里插入图片描述
(b)绝对损失,损失函数表达式为:
在这里插入图片描述
对应负梯度误差为:
在这里插入图片描述
(c)Huber损失,它是均方差和绝对损失的折衷产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。损失函数如下:
在这里插入图片描述
对应的负梯度误差为:
在这里插入图片描述
(d)分位数损失,它对应的是分位数回归的损失函数,表达式为:

在这里插入图片描述
其中θ为分位数,需要我们在回归前指定。对应的负梯度误差为:

在这里插入图片描述
对于Huber损失和分位数损失,主要用于健壮回归,也就是减少异常点对损失函数的影响。

5.GBDT回归算法流程

在这里插入图片描述

6.GBDT分类算法

GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差。为了解决这个问题,主要有两个方法,一个是用指数损失函数,此时GBDT退化为Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法。也就是说,我们用的是类别的预测概率值和真实概率值的差来拟合损失。

(1)二元GBDT分类算法:
在这里插入图片描述
(2)多元GBDT分类算法:
在这里插入图片描述

7.GBDT的正则化(防止过拟合)

第一种,步长(learning rate),对于弱学习器的迭代加上正则化项 v 。0< v <=1。对于同样的训练集学习效果,较小的ν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。
在这里插入图片描述
第二种,通过子采样比例(subsample),取值为(0,1]。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在 [0.5, 0.8] 之间。
第三种对于弱学习器即CART回归树进行正则化剪枝。

8.GBDT的优缺点

GBDT主要优点:

(1) 可以灵活处理各种类型的数据,包括连续值和离散值。

(2) 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。

(3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

GBDT的主要缺点有:由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来 达到部分并行。
本文主要是参考 慕哥9229398 的文章,总结的很好,附上链接:http://www.imooc.com/article/257225

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值