gbdt算法_经典算法·GBDT

1e7cfb24de71f77affec9dfa4c464911.png

Gradient Boosting Decision Tree

梯度提升树(Gradient Boosting Decison Tree,GBDT)是集成学习Boosting重要算法。该方法是针对模型的偏差进行的优化。而随机森林是基于对模型的方差进行优化。即使在集成算法中,Adaboost是利用前一轮迭代器弱学习器的误差率来更新训练集的权重。

GBDT算法中,限定了只能使用CART回归模型。一般的CART是这样的:用于分类任务时,树的分裂准则采用基尼指数,用于回归任务时,用MSE(均方误差)。前一轮迭代得到的强学习器是

,损失函数是
, 本轮迭代的目标是找到CART回归树模型的弱学习器
,让本轮的损失函数
最小。

关于损失函数拟合方法,Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合新的CART回归树。与XGBOOST的明显区别,就是这样的一阶导数与二阶导数的拟合方式。在不同任务中区别仅仅在损失函数不同导致的负梯度不同而已。

GBDT算法过程

输入:训练集样本

, 最大迭代次数
,损失函数

1) 初始化弱学习器

2) 对迭代轮数

   a)对样本

,计算负梯度:

   b)利用

拟合一颗CART回归树,得到第
颗回归树,其对应的叶子节点区域为
,其中
为回归树
的叶子节点的个数。

   c) 对叶子区域

,计算最佳拟合值

   d) 更新强学习器:

3) 得到强学习器

的表达式

GBDT回归与分类

回归算法是比较简单的,毕竟CART就是回归树。回归的问题也可以看成分类任务中一种特殊方法。分类问题的处理,类似与图像识别中的分类任务,分类任务变化成每一类别的概率值预测。

二元GBDT分类算法

对数似然损失函数为:

负梯度误差为:

各个叶子节点的最佳残差拟合值为:

上式的计算过于复杂,通常选取近似的方式:

多元GBDT分类算法

类的概率
的表达式为:

计算出第

轮的第
个样本对应类别
的负梯度误差为:

其实这里的误差就是样本

对应类别
的真实概率和
轮预测概率的差值。

一般使用近似值代替:

GBDT的正则化

模型加入正则是为了防止过拟合。GBDT的正则化主要有三种方法:

  • 第一种是正则化项,步长(learning rate),定义为
    。较小的
    意味着需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。
  • 第二种正则化的方式是通过子采样比例(subsample)。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。并且取值为(0,1]。
  • 第三种是对于弱学习器即CART回归树进行正则化剪枝。决策树的剪枝包括预剪枝与后剪枝。通过对叶子节点的控制实现正则。

GBDT优缺点

优点:

  • 可以灵活处理各种类型的数据,包括连续特征和离散特征。
  • 在相对少的调参时间情况下,预测的准确率也可以比较高。

缺点:

  • 由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。
  • 对数据异常值比较敏感。使用一些健壮的损失函数(Huber损失函数),对异常值的鲁棒性非常强。Huber损失,它是均方差和绝对损失的折中产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。损失函数如下:

对应的负梯度误差为:

有关GBDT回归于分类的真实例子,可以参考以下连接:

  • GBDT原理与Sklearn源码分析-回归篇 - SCUT_Sam - CSDN博客
  • GBDT原理与Sklearn源码分析-分类篇 - SCUT_Sam - CSDN博客
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值