带你搞懂GBDT算法原理

GBDT是一种Boosting家族的算法,通过负梯度拟合不断优化损失函数。它利用CART回归树模型,适用于回归和分类问题。算法流程包括负梯度计算、CART树拟合和损失函数的最小化。GBDT的优点包括处理不同类型数据的能力、高预测准确性和对异常值的鲁棒性,但训练过程难以并行。
摘要由CSDN通过智能技术生成

一、引言

  在集成学习原理介绍中,简单的介绍了根据个体学习器学习方式不同划分的两大类集成学习方法,个体学习器间存在强依赖关系、必须串行生成的序列化方法,如Boosting;个体学习器间不存在强依赖关系、可同时生成的并行化方法,如Bagging。
  回顾一下Boosting算法的学习机制:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的的训练样本在后续受到更多关注,然后基于调整后的样本分布训练下一个基学习器;重复进行,直到基学习器数目达到事先指定的值T,最终将这T个基学习器加权结合。
  在Adaboost算法原理小结,介绍了Boosting家族的一个重要算法Adaboost,今天我们来看一看Boosting家族中另一个更加常用的的算法GBDT。

二、GBDT概述

  GBDT全称Gradient Boosting Decison Tree,同为Boosting家族的一员,它和Adaboost有很大的不同。Adaboost 是利用前一轮弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去,简单的说是Boosting框架+任意基学习器算法+指数损失函数。GBDT也是迭代,也使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同,简单的说Boosting框架+CART回归树模型+任意损失函数
  GBDT的思想可以用一个通俗的例子解释,假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。

三、负梯度拟合

  在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是 Ht1(x) H t − 1 ( x ) , 损失函数是 L(f(x),Ht1(x)) L ( f ( x ) , H t − 1 ( x ) ) , 我们本轮迭代的目标是找到一个CART回归树模型的弱学习器 ht(x) h t ( x ) ,让本轮的损失 L(f(x),ht(x)+Ht1(x)) L ( f ( x ) , h t ( x ) + H t − 1 ( x ) ) 最小,那么GBDT是如何实现让本轮的损失最小的呢?
  针对这个问题,大牛Freidman提出了用损失函数的负梯度来拟合本轮损失 L(f(x),ht(x)+Ht1(x)) L ( f ( x ) , h t ( x ) + H t − 1 ( x ) ) 的近似值,进而拟合一个CART回归树。第 t 轮的第 i 个样本的损失函数的负梯度表示为


rti=L(yi,ht1(xi))ht1(xi) r t i = − ∂ L ( y i , h t − 1 ( x i ) ) ∂ h t − 1 ( x i )

  利用 (xi,rti),i=1,2,,m ( x i , r t i ) , i = 1 , 2 , ⋯ , m ,我们可以拟合一棵CART回归树,得到了第 t 棵回归树,其对应的叶结点区域 Rtj,j=1,2,,J R t j , j = 1 , 2 , ⋯ , J 。其中 J J 为叶子结点的个数。
  针对每一个叶子结点里的样本,我们求出使损失函数最小,也就是拟合叶子结点最好的输出值 c t j


ctj=argmin<
  • 5
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值