Scikit-Learn梯度提升决策树(GBDT)

Scikit-Learn梯度提升决策树

    • 1、梯度提升决策树(GBDT)
      • 1.1、Boosting方法
      • 1.2、GBDT的原理
      • 1.3、GBDT回归的损失函数
      • 1.4、梯度下降与梯度提升
      • 1.5、随机森林与GBDT
      • 1.6、GBDT的优缺点
    • 2、Scikit-Learn梯度提升决策树(GBDT)
      • 2.1、Scikit-Learn GBDT回归
        • 2.1.1、Scikit-Learn GBDT回归API
        • 2.1.2、GBDT回归实践(加州房价预测)
      • 2.2、Scikit-Learn GBDT分类
        • 2.2.1、Scikit-Learn GBDT分类API
        • 2.2.2、GBDT分类实践(鸢尾花分类)
      • 2.3、GBDT参数调优与选择



1、梯度提升决策树(GBDT)


梯度提升决策树(GBDT)是集成学习Boosting提升中的一种重要算法。GBDT在机器学习知识结构中的位置如下:

在这里插入图片描述
梯度提升决策树(Gradient Boosting Decision Tree,GBDT)是一种迭代的决策树算法,它通过构造一组弱学习器(决策树),并把多颗决策树的结果累加起来作为最终的预测输出。该算法将决策树与集成思想进行了有效的结合

1.1、Boosting方法


我们已经知道,Bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练

与Bagging方法不同,Boosting方法在训练基分类器时采用串行的方式,各个基分类器之间有依赖

Boosting的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。预测时,根据各层分类器的结果的加权得到最终结果

在这里插入图片描述

  • Boosting:串行,将基分类器层层叠加
  • Bagging:并行,各基分类器之间无强依赖

1.2、GBDT的原理


梯度提升决策树算法的流程如下:

  • 初始化:设定一个初始预测值,通常为所有样本目标变量的均值,这个初始预测值代表了我们对目标变量的初始猜测

  • 迭代训练:GBDT是一个迭代算法,通过多轮迭代来逐步改进模型。在每一轮迭代中,GBDT都会训练一棵新的决策树,目标是减少上一轮模型的残差。残差是预测值与真实值之间的误差,新的树将学习如何纠正这些残差

    • 计算残差:在每轮迭代开始时,计算当前模型对训练数据的预测值与实际观测值之间的残差。这个残差代表了前一轮模型未能正确预测的部分

    • 拟合残差:以当前残差为新的学习目标变量,训练一棵新的决策树。这棵树将尝试纠正上一轮模型的错误,以减少残差

    • 更新模型:将新训练的决策树与之前的模型进行组合,更新预测值。具体地,将新树的预测结果与之前模型的预测结果累加,得到更新后的模型

  • 终止/集成:当达到预定的迭代次数或残差变化小于阈值时停止迭代。将所有决策树的预测结果相加,得到最终的集成预测结果。这个过程使得模型能够捕捉数据中的复杂关系,从而提高预测精度

GBDT的核心点在于不断迭代,每一轮迭代都尝试修正上一轮模型的错误,逐渐提高模型的预测性能

GBDT算法流程的数学描述参考文章:https://blog.csdn.net/u010366748/article/details/111060108

例如,使用GBDT预测年龄:

在这里插入图片描述

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

  • 第二个弱分类器(第二棵树)拟合残差10,预测值6,计算发现差距还有4岁

  • 第三个弱分类器(第三棵树)继续拟合残差4,预测值3,发现误差只有1岁了

  • 第四个弱分类器(第四课树)用1岁拟合剩下的残差,完成

最终,四个弱分类器(四棵树)的结论累加起来,得到30岁这个标准答案。实际在工程应用中,GBDT计算负梯度,使用负梯度近似残差

1.3、GBDT回归的损失函数


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

在这里插入图片描述
损失函数的负梯度计算如下:

在这里插入图片描述
可以看到,当损失函数选用均方误差损失时,每次拟合的值就是真实值减预测值,即残差

1.4、梯度下降与梯度提升


负梯度方向是梯度下降最快的方向。梯度下降与梯度提升两种迭代优化算法都是在每一轮迭代中,利用损失函数负梯度方向的信息,更新当前模型。但两者是完全不同的概念

梯度下降中,模型是以参数化形式表示,从而模型的更新等价于参数的更新

在这里插入图片描述

梯度提升中,模型并不需要进行参数化表示,而是直接定义在函数空间中,从而大大扩展了可以使用的模型种类

在这里插入图片描述
梯度提升与梯度下降的主要区别如下:

比较项梯度下降梯度提升
模型定义空间参数空间函数空间
优化规则 θ t \theta_t θt= θ t − 1 \theta_{t-1} θt1+ Δ θ t \Delta\theta_t Δθt f t ( x ) f_t(x) ft(x)= f t − 1 ( x ) f_{t-1}(x) f

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/355529.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GNSS边坡监测站

TH-WY1随着科技的飞速发展,各种先进的监测技术不断涌现,为边坡安全监测提供了有力保障。其中,GNSS边坡监测站以其高精度、实时性强的特点,受到了广泛关注。 GNSS边坡监测站,全称为全球导航卫星系统边坡监测站&#xf…

3D Gaussian Splatting Windows安装

0.安装C++ 编译器 https://aka.ms/vs/17/release/vs_buildtools.exe 1.下载源码 git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive 2.安装cuda NVIDIA GPU Computing Toolkit CUDA Toolkit Archive | NVIDIA Developer 3.安装COLMAP

卓越的 App UI 风格引领潮流

卓越的 App UI 风格引领潮流

【C++】哈希的概念及STL中有关哈希容器的使用

目录 前言一、unordered系列关联式容器1.1 标准库中的unordered_set1.1.1 unordered_set的介绍1.1.2 unordered_set的常用接口说明1.1.2.1 unordered_set对象的常见构造1.1.2.1.1 [无参构造函数](https://legacy.cplusplus.com/reference/unordered_map/unordered_map/)1.1.2.1…

探索序列到序列模型:了解编码器和解码器架构的强大功能

目录 一、说明 二、什么是顺序数据? 三、编码器解码器架构的高级概述: 3.1 编码器和解码器架构的简要概述: 3.2 训练机制:编码器和解码器架构中的前向和后向传播: 四、编码器解码器架构的改进: 4.1.…

Spring自定义标签体系和应用

我们知道&#xff0c;在使用Dubbo框架时&#xff0c;需要指定配置文件中的application、protocol、registry、provider、service等服务器端和客户端的配置项&#xff0c;典型的配置方法如下所示。通过这些配置项&#xff0c;我们可以基于Spring容器来启动Dubbo服务。 <!-- …

SpringBoot 实现RequestBodyAdvice封装统一接受类功能

一、相关往期文章 SpringBootVue实现AOP系统日志功能_aop的vue完整项目 Spring AOP (面向切面编程&#xff09;原理与代理模式—实例演示_面向切面aop原理详解 二、需求分析 按照一般情况&#xff0c;统一接受类可以像以下的方式进行处理&#xff1a; 如果不想使用 Request…

Shiro721 反序列化漏洞(CVE-2019-12422)

目录 Shiro550和Shiro721的区别 判断是否存在漏洞 漏洞环境搭建 漏洞利用 利用Shiro检测工具 利用Shiro综综合利用工具 这一篇还是参考别的师傅的好文章学习Shiro的反序列化漏洞 上一篇也是Shiro的反序列化漏洞&#xff0c;不同的是一个是550一个是721&#xff0c;那么这…

【vue scrollTo 数据无限滚动 】

vue数据无限滚动 参考来源 Vue3 实现消息无限滚动的新思路 —— 林三心不学挖掘机 vue3代码 <template><div class"scroll-container" ref"scrollRef"><div v-for"(item, index) in list" :key"index" style"hei…

网络协议安全:TCP/IP协议栈的安全问题和解决方案

「作者简介」:北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖Web安全、系统安全等12个知识域的一百多个知识点,持续更新。 这一章节我们需要知道TCP/IP每…

【Git】--Part3--远程操作 配置 标签管理

1. 远程仓库 Git 是分布式版本控制系统&#xff0c;同⼀个 Git 仓库&#xff0c;可以分布到不同的机器上。怎么分布呢&#xff1f; 最早&#xff0c;肯定只有⼀台机器有⼀个原始版本库&#xff0c;此后&#xff0c;别的机器可以 “克隆” 这个原始版本库&#xff0c;⽽且每台机…

JavaSE 面向对象程序设计初级 静态static 包package 常量final 代码块 代码实操理论内存原理详解

目录 static(静态) 静态的特点 应用示例 静态变量 静态方法 注意事项 内存图 重新认识main方法 包 什么是包 使用导包在什么时候 final关键字 常量 命名规范 细节&#xff08;重点&#xff09; 权限修饰符 代码块 局部代码块 构造代码块 静态代码块 个人号…

vue中实现百度地图全国与省市地图切换

前言 本文主要是用于示例全国地图&#xff0c;点击省市地图直接跳转到该省市地图并展示&#xff0c;可以拓展在地图上显示标记点&#xff08;本文未做示例&#xff09;&#xff0c;后续有完整代码&#xff0c;但是由于需要与本来项目业务代码进项分割&#xff0c;可能会有些问题…

多模态大模型面对误导性问题:看懂图片也会答错,一骗就中招

多模态大语言模型&#xff08;MLLMs&#xff09;因其在视觉理解和推理方面的突出表现&#xff0c;例如生成详细的图像描述和回答复杂的问题等&#xff0c;逐渐成为近期AI研究的热点。 然而&#xff0c;Bunny 团队的最新研究发现&#xff0c;尽管许多MLLMs对视觉内容能够正确理…

RocketMQ快速入门:集成spring, springboot实现各类消息消费(七)附带源码

0. 引言 rocketmq支持两种消费模式&#xff1a;pull和push&#xff0c;在实际开发中这两种模式分别是如何实现的呢&#xff0c;在spring框架和springboot框架中集成有什么差异&#xff1f;今天我们一起来探究这两个问题。 1. java client实现消息消费 1、添加依赖 <depen…

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后&#xff0c;终于通过聆讯&#xff0c;方舟云康控股有限公司(以下简称&#xff0c;方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是&#xff0c;亏损的难…

Python日志管理利器:如何高效管理平台日志

一、为什么需要日志管理&#xff1f; 日志是应用程序的重要组成部分&#xff0c;它记录了应用程序的运行状态、错误信息以及用户交互等关键信息。良好的日志管理可以帮助开发人员及时发现和解决问题&#xff0c;提高应用程序的稳定性和可靠性。 项目在本地开发调试时&#xf…

vscode字符多行自动增长插件。

多行字符自动增长插件CharAutoIncre 当你使用shiftalt选中了多行,并输入了’1’,这时这几行都变成了’1’. 这时你可以选中&#xff08;shift左键&#xff09;为’1’的这几行, 接下来按下shiftaltq此时’1’变为了’12345’自增长的样式。 同时本插件支持字符’a-z,A-Z’。 目…

【知识图谱】基于neo4j开发的信息化文档分析系统(源码)

一、项目介绍 一款全源码&#xff0c;可二开&#xff0c;可基于云部署、私有部署的企业级知识库云平台&#xff0c;一款让企业知识变为实打实的数字财富的系统&#xff0c;应用在需要进行文档整理、分类、归集、检索、分析的场景。 为什么建立知识库平台&#xff1f; 助力企业…

IDEA中 pom.xml 设置自动提示

IDEA中 pom.xml 自动提示 IDEA中 pom.xml 自动提示设置如下&#xff1a; file–>Settings–>Build,Execution…–>Build Tools–>Maven–>Repositories 会看到类似表格的画面&#xff0c;内容是你的maven地址&#xff0c;选中后&#xff0c;右边有个Update的按…