十大经典预测算法(九)---GBDT

  GBDT又叫梯度提升决策树,它也属于Boosting框架。GBDT核心原理如下:

  如图所示,用GBDT预测年龄,第一轮,预测到年龄为20,它和真实值之间的残差为10,第二轮,GBDT开始预测上一轮的残差10,预测结果为6,这一轮 的残差为4,第三轮,以年龄4为预测目标,预测来的值为3,和真实值之间相差1,最后以残差1为预测目标,预测结果为1,此时残差为0,预测结束,最后把之前模型预测的结果全部相加,就得到预测的真实值为30岁

  所以,GBDT的核心原理是先用初始值预测一颗决策树,得到本轮的残差,即真实值减预测值,然后用残差作为下一轮决策树的预测对象,这时会再产生一个残差,再用这个残差作为下一轮的预测对象,以此循环迭代直到最后一轮的预测残差为0或非常小的时候就停止迭代,然后把所有轮的模型预测结果相加得到最终预测结果,GBDT核心原理如下图所示

GBDT和AdaBoost的异同

相似之处:

  都是基于Boosting思想的融合算法

  默认的基分类器都是决策树

  AdaBoost其实是GBDT的一个特例

不同之处:

  AdaBoost的基分类器可以选择更多的算法,而GBDT只能选决策树

  GBDT的模型提升方法与AdaBoost不同,AdaBoost是通过不断加强对错判数据的权重学习来提升模型的预测效果,而GBDT则是通过不断降低模型误差来(学习残差)的思想来提升模型的预测效果

  

原文地址:https://www.cnblogs.com/baoxuhong/p/10255009.html

时间: 2024-08-30 09:52:09

十大经典预测算法(九)---GBDT的相关文章

十大经典预测算法六---集成学习(模型融合算法)

模型融合算法概念 它不是具体的指某一个算法,而是一种把多个弱模型融合合并在一起变成一个强模型的思想 用模型融合算法的原因 1.单个模型容易过拟合,多个模型融合可以提高范化能力 2.单个模型预测能力不高,多个模型往往能提高预测能力 3.对于数据集过大或过小,可以分别进行划分和有放回的操作,产生不同的数据子集,然后通过数据子集训练不同的分类模型,最终合并成一个大的分类器 4.对于多个异构的特征集的时候,很难进行融合,可以考虑每个数据集构建一个分类模型,然后将多个模型融合 5.模型融合算法成功的关键在

十大经典预测算法----线性回归

回归问题就是拟合输入变量x与数值型的目标变量y之间的关系,而线性回归就是假定了x和y之间的线性关系,公式如下: 如下图所示,我们可以通过绘制绘制(x,y)的散点图的方式来查看x和y之间是否有线性关系,线性回归模型的目标是寻找一条穿过这些散点的直线,让所有的点离直线的距离最短.这条完美直线所对应的参数就是我们要找的线性回归模型参数w1,w2,w3--b 最小二乘法是一种求解回归模型参数w1,w2,w3--b的方法,线性回归模型中,能让预测值和真实值误差平方和最小的这条直线就是完美直线. y^i表示

图解十大经典机器学习算法

图解十大经典机器学习算法 弱人工智能近几年取得了重大突破,悄然间,已经成为每个人生活中必不可少的一部分.以我们的智能手机为例,看看到底温藏着多少人工智能的神奇魔术. 下图是一部典型的智能手机上安装的一些常见应用程序,可能很多人都猜不到,人工智能技术已经是手机上很多应用程序的核心驱动力. 图1 智能手机上的相关应用 传统的机器学习算法包括决策树.聚类.贝叶斯分类.支持向量机.EM.Adaboost等等.这篇文章将对常用算法做常识性的介绍,没有代码,也没有复杂的理论推导,就是图解一下,知道这些算法是

十大经典排序算法(python实现)(原创)

经典排序算法图解: 经典排序算法的复杂度: 大类一(比较排序法): 1.冒泡排序(Bubble Sort) python代码实现: 1 d0 = [2, 15, 5, 9, 7, 6, 4, 12, 5, 4, 2, 64, 5, 6, 4, 2, 3, 54, 45, 4, 44] 2 d0_out = [2, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 9, 12, 15, 44, 45, 54, 64] # 正确排序 3 4 while 1: 5 stat

一文搞定十大经典排序算法(Java实现)

本文总结十大经典排序算法及变形,并提供Java实现. 参考文章: 十大经典排序算法总结(Java语言实现) 快速排序算法—左右指针法,挖坑法,前后指针法,递归和非递归 快速排序及优化(三路划分等) 一.排序算法概述 1.定义 将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序. 2.分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间非比较类排序:不通过比较

【转】十大经典排序算法

[转]十大经典排序算法:https://www.cnblogs.com/onepixel/articles/7674659.html 0.算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序. 0.2 算法复杂度 0.3 相关概念 稳定:如果

python 十大经典排序算法

python 十大经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 关于时间复杂度: 平方阶 (O(n2)) 排序 各类简单排序:直接插入.直接选择和冒泡排序. 线性对数阶 (O(nlog2n)) 排序 快速排序.堆排序和归并排序. O(n1+§)) 排序,§

Python十大经典排序算法

现在很多的事情都可以用算法来解决,在编程上,算法有着很重要的地位,将算法用函数封装起来,使程序能更好的调用,不需要反复编写. Python十大经典算法: 一.插入排序 1.算法思想 从第二个元素开始和前面的元素进行比较,如果前面的元素比当前元素大,则将前面元素 后移,当前元素依次往前,直到找到比它小或等于它的元素插入在其后面, 然后选择第三个元素,重复上述操作,进行插入,依次选择到最后一个元素,插入后即完成所有排序. 2.代码实现 1 def insertion_sort(arr): 2 #插入

十大经典排序算法总结

前言 读者自行尝试可以想看源码戳这,博主在github建了个库,读者可以Clone下来本地尝试.此博文配合源码体验更棒哦~~~ 个人博客:Damonare的个人博客 原文地址:十大经典算法总结 这世界上总存在着那么一些看似相似但有完全不同的东西,比如雷锋和雷峰塔,小平和小平头,玛丽和马里奥,Java和javascript-.当年javascript为了抱Java大腿恬不知耻的让自己变成了Java的干儿子,哦,不是应该是跪舔,毕竟都跟了Java的姓了.可如今,javascript来了个咸鱼翻身,几