——GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值。

目录

  • ==——GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值。==
  • 1. 解释一下GBDT算法的过程
    • 1.1 Boosting思想
    • 1.2 GBDT原来是这么回事
  • 3. GBDT的优点和局限性有哪些?
    • 3.1 优点
    • 3.2 局限性
  • 4. RF(随机森林)与GBDT之间的区别与联系
  • 5. 代码实现

1. 解释一下GBDT算法的过程

GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,使用的是Boosting的思想。

1.1 Boosting思想

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

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

1.2 GBDT原来是这么回事

GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差)。当然了,它里面的弱分类器的表现形式就是各棵树。

举一个非常简单的例子,比如我今年30岁了,但计算机或者模型GBDT并不知道我今年多少岁,那GBDT咋办呢?

它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁;
接下来在第二棵树中,用6岁去拟合剩下的损失,发现差距还有4岁;
接着在第三棵树中用3岁拟合剩下的差距,发现差距只有1岁了;
最后在第四课树中用1岁拟合剩下的残差,完美。
最终,四棵树的结论加起来,就是真实年龄30岁(实际工程中,gbdt是计算负梯度,用负梯度近似残差)。

为何gbdt可以用用负梯度近似残差呢?

回归任务下,GBDT 在每一轮的迭代时对每个样本都会有一个预测值,此时的损失函数为均方差损失函数,

所以,当损失函数选用均方损失函数是时,每一次拟合的值就是(真实值 - 当前模型预测的值),即残差。此时的变量是,即“当前预测模型的值”,也就是对它求负梯度。

训练过程

简单起见,假定训练集只有4个人:A,B,C,D,他们的年龄分别是14,16,24,26。其中A、B分别是高一和高三学生;C,D分别是应届毕业生和工作两年的员工。如果是用一棵传统的回归决策树来训练,会得到如下图所示结果:

现在我们使用GBDT来做这件事,由于数据太少,我们限定叶子节点做多有两个,即每棵树都只有一个分枝,并且限定只学两棵树。我们会得到如下图所示结果:

在第一棵树分枝和图1一样,由于A,B年龄较为相近,C,D年龄较为相近,他们被分为左右两拨,每拨用平均年龄作为预测值。

此时计算残差(残差的意思就是:A的实际值 - A的预测值 = A的残差),所以A的残差就是实际值14 - 预测值15 = 残差值-1。

注意,A的预测值是指前面所有树累加的和,这里前面只有一棵树所以直接是15,如果还有树则需要都累加起来作为A的预测值。

然后拿它们的残差-1、1、-1、1代替A B C D的原值,到第二棵树去学习,第二棵树只有两个值1和-1,直接分成两个节点,即A和C分在左边,B和D分在右边,经过计算(比如A,实际值-1 - 预测值-1 = 残差0,比如C,实际值-1 - 预测值-1 = 0),此时所有人的残差都是0。残差值都为0,相当于第二棵树的预测值和它们的实际值相等,则只需把第二棵树的结论累加到第一棵树上就能得到真实年龄了,即每个人都得到了真实的预测值。

换句话说,现在A,B,C,D的预测值都和真实年龄一致了。Perfect!

A: 14岁高一学生,购物较少,经常问学长问题,预测年龄A = 15 – 1 = 14
B: 16岁高三学生,购物较少,经常被学弟问问题,预测年龄B = 15 + 1 = 16
C: 24岁应届毕业生,购物较多,经常问师兄问题,预测年龄C = 25 – 1 = 24
D: 26岁工作两年员工,购物较多,经常被师弟问问题,预测年龄D = 25 + 1 = 26
所以,GBDT需要将多棵树的得分累加得到最终的预测得分,且每一次迭代,都在现有树的基础上,增加一棵树去拟合前面树的预测结果与真实值之间的残差。

3. GBDT的优点和局限性有哪些?

3.1 优点

预测阶段的计算速度快,树与树之间可并行化计算。
在分布稠密的数据集上,泛化能力和表达能力都很好,这使得GBDT在Kaggle的众多竞赛中,经常名列榜首。
采用决策树作为弱分类器使得GBDT模型具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系。

3.2 局限性

GBDT在高维稀疏的数据集上,表现不如支持向量机或者神经网络。
GBDT在处理文本分类特征问题上,相对其他模型的优势不如它在处理数值特征时明显。
训练过程需要串行训练,只能在决策树内部采用一些局部并行的手段提高训练速度。

4. RF(随机森林)与GBDT之间的区别与联系

相同点:

都是由多棵树组成,最终的结果都是由多棵树一起决定。
RF和GBDT在使用CART树时,可以是分类树或者回归树。
不同点:

组成随机森林的树可以并行生成,而GBDT是串行生成
随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和
随机森林对异常值不敏感,而GBDT对异常值比较敏感
随机森林是减少模型的方差,而GBDT是减少模型的偏差
随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化

5. 代码实现

纸上得来终觉浅,绝知此事要躬行

GitHub:https://github.com/NLP-LOVE/ML-NLP/blob/master/Machine%20Learning/3.2%20GBDT/GBDT_demo.ipynb

以上内容参考自:
Github/ML-NLP/Machine Learning/3.2 GBDT
代码补充参考for——小白:
Python科学计算——Numpy.genfromtxt
pd.DataFrame()函数解析(最清晰的解释)
iloc的用法(最简单)
scikit-learn 梯度提升树(GBDT)调参小结(包含所有参数详细介绍)

GBDT算法(最简单)相关推荐

  1. gbdt 算法比随机森林容易_机器学习(七)——Adaboost和梯度提升树GBDT

    1.Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络.对于决策树,Adaboost分类用了CART分类 ...

  2. gbdt 算法比随机森林容易_随机森林与GBDT

    Bagging策略 1.总样本数量是n个,从样本中重采样(有放回的)选出n个样本 ,会有约33.2%的样本不会被抽到 2.在所有属性上对这n个样本建立分类器(比如决策树,svm,lr) 3.重复步骤1 ...

  3. 决策树之 GBDT 算法 - 回归部分

    GBDT(Gradient Boosting Decision Tree)是被工业界广泛使用的机器学习算法之一,它既可以解决回归问题,又可以应用在分类场景中,该算法由斯坦福统计学教授 Jerome H ...

  4. 转载:GBDT算法梳理

    学习内容: 前向分布算法 负梯度拟合 损失函数 回归 二分类,多分类 正则化 优缺点 sklearn参数 应用场景 转自:https://zhuanlan.zhihu.com/p/58105824 G ...

  5. GBDT 算法:原理篇

    2019独角兽企业重金招聘Python工程师标准>>> 本文由云+社区发表 GBDT 是常用的机器学习算法之一,因其出色的特征自动组合能力和高效的运算大受欢迎. 这里简单介绍一下 G ...

  6. gbdt算法_GBDT算法原理及应用

    是新朋友吗?记得先点蓝字关注我哦- 作者介绍 知乎@王多鱼 京东的一名推荐算法攻城狮. 主要负责商品推荐的召回和排序模型的优化工作. 一.GBDT算法原理 Gradient Boosting Deci ...

  7. sklearn实现GBDT算法(分类)

    阿喽哈~小天才们,今天我们聊一聊GBDT 上一篇文章我们详细地说了GBDT算法原理,包括为什么拟合负梯度.负梯度为何可以替代残差.二分类GBDT算法公式和实例演算,感兴趣的童鞋请移步GBDT算法详解& ...

  8. catboost和xgboost_CatBoost:比XGBoost更优秀的GBDT算法

    [51CTO.com快译]互联网的算法有很多应用场景,包括推荐系统.计算广告和金融反欺诈等.许多互联网的机器学习和数据挖掘问题都可以转化为分类问题.在处理这一类分类问题的时候,最常用的方法包括逻辑回归 ...

  9. 通俗易懂理解GBDT算法原理-转

    GBDT算法深入解析 https://www.zybuluo.com/yxd/note/611571 通俗易懂理解GBDT算法原理 https://blog.csdn.net/qq_36696494/ ...

  10. GBDT算法原理深入分析

    GBDT算法原理深入分析1 https://www.zybuluo.com/yxd/note/611571 GBDT算法原理深入分析2 https://www.wandouip.com/t5i1874 ...

最新文章

  1. 特征工程学习,19项实践Tips!代码已开源!
  2. 我们学习效率为什么这么低?CMU和PITT的科学家利用BCI技术对此做了相关研究
  3. 身份证校验原理和PHP实现
  4. 职称计算机隐藏桌面图标,2018年职称计算机考试WindowsXP操作题(1)
  5. windows 系统监视器_使用Windows 7中的可靠性监视器对计算机问题进行故障排除
  6. matlab 16位灰度值转8位,在matlab中如何将灰度值为24位的转化为8?
  7. Python List reverse()方法
  8. 相对熵与交叉熵_熵、KL散度、交叉熵
  9. jupyter新建文件_Jupyter渲染网页的3种方式
  10. 代码的坏味道:控制结构嵌套太深
  11. 一次 Discuz X3.2 切换数据库后无法登录的问题排查经历
  12. ES6/ES2015核心内容-转载
  13. 分享12306抢票心得-最终篇
  14. SpringCloud Eureka 高可用
  15. pp助手|pp助手下载
  16. 微信小程序实现扫一扫功能
  17. 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈及QQ自定义分享--微信分享
  18. har2case接口脚本必备工具
  19. 初始化DirectX遇到的问题
  20. android 触摸屏干扰,一种电容触摸屏的抗干扰方法及其控制模块与流程

热门文章

  1. 通过Python将不同的附件发给不同的收件人
  2. Thinkpad X230 黑苹果macOS 10.14 和10. 15驱动AR9285网卡
  3. Fiori 实现在网页端调用摄像头扫描二维码进行识别
  4. Sqlserver 特殊字符替换
  5. docker菜鸟入门
  6. 苹果cms V10模板 仿挖片自适应电影模板
  7. 12个C语言必背实例
  8. 绘制14段米字数码管显示,显示数字和英文字母。
  9. JSP学生综合评价管理系统sqlserver数据库myeclipse开发
  10. log4cpp 详解及使用操作