GBDT模型详解

这篇具有很好参考价值的文章主要介绍了GBDT模型详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GBDT算法

GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,是一种迭代的决策树算法,又叫MART(Multiple Additive Regression Tree),它通过构造一组弱的学习器(树),并把多颗决策树的结果累加起来作为最终的预测输出。该算法将决策树与集成思想进行了有效的结合。

gbdt,机器学习系列文章,python,机器学习,GBDT

Boosting核心思想

Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。

Bagging 与 Boosting 的串行训练方式不同,Bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。

gbdt,机器学习系列文章,python,机器学习,GBDT

GBDT详解

GBDT的原理

(1)所有弱分类器的结果相加等于预测值;

(2)每次都以当前预测为基准,下一个弱分类器去拟合误差函数对预测值的残差(预测值与真实值之间的误差)

(3)GBDT的弱分类器使用的是树模型

如下图所示是一个非常简单的帮助理解的示例,我们用GBDT去预测年龄:

gbdt,机器学习系列文章,python,机器学习,GBDT

第一个弱分类器(第一棵树)预测一个年龄(如20岁),计算发现误差有10岁;

第二棵树预测拟合残差,预测值6,计算发现差距还有4岁;

第三棵树继续预测拟合残差,预测值3,发现差距只有1岁了;

第四课树用1岁拟合剩下的残差,完成。

最终,四棵树的结论加起来,得到30岁这个标注答案(实际工程实现里,GBDT是计算负梯度,用负梯度近似残差)。

GBDT与负梯度近似残差

回归任务下,GBDT在每一轮的迭代时对每个样本都会有一个预测值,此时的损失函数为均方差损失函数:
l ( y i , y i ^ ) = 1 2 ( y i − y i ^ ) 2 l(y_i,\hat{y_i})=\frac{1}{2}(y_i-\hat{y_i})^2 l(yi,yi^)=21(yiyi^)2

损失函数的负梯度计算如下:
− [ ∂ l ( y i , y i ^ ) ∂ y i ^ ] = ( y i − y i ^ ) -[\frac{\partial l(y_i,\hat{y_i})}{\partial\hat{y_i}}]=(y_i-\hat{y_i}) [yi^l(yi,yi^)]=(yiyi^)

可以看出,当损失函数选用**「均方误差损失」时,每一次拟合的值就是(真实值-预测值),即残差。**

GBDT训练过程

我们来借助1个简单的例子理解一下 GBDT 的训练过程。

假设训练集只有4个人(A,B,C,D),他们的年龄分别为(14,16,24,26)。其中,A,B分别是高一和高三学生;C和D分别是应届毕业生和工作两年的员工。

我们先看看用回归树来训练,得到的结果如下图所示:

gbdt,机器学习系列文章,python,机器学习,GBDT

接下来改用 GBDT来训练。由于样本数据少,我们限定叶子节点最多为2(及每棵树都只有一个分支),并且限定树的棵树为2,最终训练得到的结果如下图所示:

gbdt,机器学习系列文章,python,机器学习,GBDT

上图中的树很好理解:A,B年龄较为相近,C,D年龄较为相近,被分为左右两支,每支用平均年龄作为预测值。

我们计算残差(即「实际值」-「预测值」),所以A的残差为:14-15=-1

这里A的「预测值」是指前面所有树预测结果累加的和,在当前情形下前序只有一棵树,所以直接是15,其他多树的复杂场景下需要累加计算作为A的预测值。

gbdt,机器学习系列文章,python,机器学习,GBDT

上图中的树就是残差学习的过程了:

把A,B,C,D的值换作残差-1、1、-1、1,再构建一棵树学习,这棵树只有两个值1和-1,直接分成两个节点:A、C在左边,B、D在右边。

这棵树学习残差,在我们当前这个简单的场景下,已经能保证预测值和实际值(上一轮残差)相等了。

我们把这棵树的预测值累加到第一棵树上的预测结果上,就能得到真实年龄,这个简单例子中每个人都完美匹配,得到了真实的预测值。

gbdt,机器学习系列文章,python,机器学习,GBDT

最终的预测过程是这样的:

1)A:高一学生,购物较少,经常问学长问题,真实年龄14岁,预测年龄A=15-1=14

2)B:高三学生,购物较少,经常被学弟提问,真实年龄16岁,预测年龄B=15+1=16

3)C:应届毕业生,购物较多,经常问学长问题,真实年龄24岁,预测年龄C=25-1=24

4)D:工作两年员工,购物较多,经常被学弟提问,真实年龄26岁,预测年龄D=25+1=26

综上,GBDT需要将多棵树的得分累加得到最终的预测得分,且每轮迭代,都是在现有树的基础上,增加一棵新的树去拟合前面树的预测值与真实值之间的残差。

梯度提升 vs 梯度下降

下面我们来对比一下「梯度提升」与「梯度下降」。这两种迭代优化算法,都是在每1轮迭代中,利用损失函数负梯度方向的信息,更新当前模型,只不过:

梯度下降中,模型是以参数化形式表示,从而模型的更新等价于参数的更新。
F = F T − 1 − ρ t ∇ F L ∣ F = F t − 1 L = ∑ i l ( y i , F ( x i ) ) \begin{split} &F=F_{T-1}-\rho_t\nabla_FL|_{F=F_{t-1}}\\ &L=\sum_{i}l(y_i,F(x_i)) \end{split} F=FT1ρtFLF=Ft1L=il(yi,F(xi))

梯度提升中,模型并不需要进行参数化表示,而是直接定义在函数空间中,从而大大扩展了可以使用的模型种类。
ω t = ω t − 1 − ρ t ∇ ω L ∣ ω = ω t − 1 L = ∑ i l ( y i , f ω ( ω i ) ) \begin{split} &\omega_t=\omega_{t-1}-\rho_t\nabla_{\omega}L|_{\omega=\omega_{t-1}}\\ &L=\sum_{i}l(y_i,f_{\omega}(\omega_i)) \end{split} ωt=ωt1ρtωLω=ωt1L=il(yi,fω(ωi))

gbdt,机器学习系列文章,python,机器学习,GBDT

GBDT优缺点

下面我们来总结一下 GBDT 模型的优缺点:

优点

预测阶段,因为每棵树的结构都已确定,可并行化计算,计算速度快。

适用稠密数据,泛化能力和表达能力都不错,数据科学竞赛榜首常见模型。

可解释性不错,鲁棒性亦可,能够自动发现特征间的高阶关系。

缺点

1)GBDT 在高维稀疏的数据集上,效率较差,且效果表现不如 SVM 或神经网络。

2)适合数值型特征,在 NLP 或文本特征上表现弱。

3)训练过程无法并行,工程加速只能体现在单颗树构建过程中。

随机森林 vs GBDT

相同点

1)都是集成模型,由多棵树组构成,最终的结果都是由多棵树一起决定。

2)RF 和 GBDT 在使用 CART 树时,可以是分类树或者回归树。

不同点

1)训练过程中,随机森林的树可以并行生成,而 GBDT 只能串行生成。

2)随机森林的结果是多数表决表决的,而 GBDT 则是多棵树累加之。

3)随机森林对异常值不敏感,而 GBDT 对异常值比较敏感。

4)随机森林降低模型的方差,而 GBDT 是降低模型的偏差。
可以是分类树或者回归树。

不同点

1)训练过程中,随机森林的树可以并行生成,而 GBDT 只能串行生成。

2)随机森林的结果是多数表决表决的,而 GBDT 则是多棵树累加之。

3)随机森林对异常值不敏感,而 GBDT 对异常值比较敏感。

4)随机森林降低模型的方差,而 GBDT 是降低模型的偏差。文章来源地址https://www.toymoban.com/news/detail-673523.html

到了这里,关于GBDT模型详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 模型训练:逻辑回归、KNN、朴素贝叶斯、LDA、支持向量机、GBDT、决策树

    常用的分类预测模型:逻辑回归、KNN、朴素贝叶斯、LDA、SVC、GBDT、决策树 如果需要了解相关原理的话,可以另行百度,这里只讲解训练流程,废话不多说,直接开始讲解训练流程 这里用的数据就是一个普通的 DataFrame 数据,样式大概如下 第一列不需要,后面读取数据的时候

    2024年02月05日
    浏览(33)
  • Python实现Stacking回归模型(随机森林回归、极端随机树回归、AdaBoost回归、GBDT回归、决策树回归)项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解 ),如需 数据+代码+文档+视频讲解 可以直接到文章最后获取。 1.项目背景 Stacking通常考虑的是异质弱学习器(不同的学习算法被组合在一起),stacking学习用元模型组合基础模型。stacking 的概念是学习几个不

    2024年02月01日
    浏览(35)
  • Python实现GBDT(梯度提升树)分类模型(GradientBoostingClassifier算法)并应用网格搜索算法寻找最优参数项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解 ),如需 数据+代码+文档+视频讲解 可以直接到文章最后获取。 1.项目背景 GBDT是Gradient Boosting Decision Tree(梯度提升树)的缩写。GBDT分类又是建立在回归树的基础上的。 本项目应用GBDT算法实现多分类模型。

    2024年02月13日
    浏览(33)
  • 集成学习之GBDT算法详解

    先说一下提升树(Boosting Decision Tree):通过拟合残差的思想来进行提升,残差 = 真实值 - 预测值,例如: 某人年龄为100岁,预测其年龄 第一次预测结果为80岁,残差为100-80=20 第二次预测以残差20为目标,预测结果为16岁,残差为4 第三次预测以残差4为目标,预测结果为3.2,残差

    2024年01月17日
    浏览(29)
  • 独孤九剑第九式-AdaBoost模型和GBDT模型

    💐 文章适合于所有的相关人士进行学习💐 🍀 各位看官看完了之后不要立刻转身呀🍀 🌿 期待三连关注小小博主加收藏🌿 🍃 小小博主回关快 会给你意想不到的惊喜呀 🍃 各位老板动动小手给小弟点赞收藏一下,多多支持是我更新得动力!!! 上一次在第八式中我们讲解

    2024年02月10日
    浏览(23)
  • 排序算法经典模型: 梯度提升决策树(GBDT)的应用实战

    目录 一、Boosting训练与预测 二、梯度增强的思想核心 三、如何构造弱学习器和加权平均的权重 四、损失函数 五、梯度增强决策树 六、GBDT生成新特征 主要思想 构造流程 七、梯度增强决策树以及在搜索的应用 7.1 GDBT模型调参 7.1.1 框架层面参数 n_estimators subsample 7.1.2 分类/回

    2024年01月25日
    浏览(25)
  • 大数据分析案例-基于GBDT梯度提升决策树算法构建数据科学岗位薪资预测模型

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章 大数据分析案例合集

    2024年02月07日
    浏览(34)
  • GBDT算法原理以及实例理解(含Python代码简单实现版)

    GBDT 的全称是 Gradient Boosting Decision Tree ,梯度提升树,在传统机器学习算法中,GBDT算的上是TOP前三的算法。 想要理解GBDT的真正意义,那就必须理解GBDT中的 Gradient Boosting 和 Decision Tree 分别是什么? 1. Decision Tree:CART回归树 首先, GBDT使用的决策树是CART回归树 ,无论是处理回

    2024年02月02日
    浏览(28)
  • 集成学习——Boosting算法:Adaboost、GBDT、XGBOOST和lightGBM的简要原理和区别

    Boosting算法是通过串联的方式,将一组弱学习器提升为强学习器算法。它的工作机制如下: (1)用初始训练集训练出一个基学习器; (2)依据基学习器的表现对训练样本分布进行调整,使得之前做错的训练样本在之后中得到最大的关注; (3)用调整后的样本分布进行下一

    2024年02月16日
    浏览(29)
  • 梯度提升树(GBDT)原理

    梯度提升树(GBDT)原理 GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其实都是指的同一种算法,本文统一简称GBDT。GBDT在BAT大厂中也有广泛的应用,假如要选择3个最重要的机器学习算法

    2023年04月13日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包