机器学习第15天:GBDT模型

 

☁️主页 Nowl

🔥专栏《机器学习实战》 《机器学习》

📑君子坐而论道,少年起而行之 

文章目录

GBDT模型介绍

Boosting

残差

GBDT的缺点

python代码实现

代码

模型参数解释

结语


GBDT模型介绍

GBDT(Gradient Boosting Decision Tree)也叫做梯度提升决策树,它的主要思想也是集成学习(由名字可以看出GBDT的弱分类器是决策树 ),即训练多个子模型,结合子模型来得到最终结果,但他们也有一些区别


Boosting

Boosting是GBDT与传统集成学习的一个主要区别

传统的集成学习训练过程中,分类器之间不会有任何联系,模型各自独立训练最后结合得出结果

而Boosting训练过程中,分类器会根据上一个分类器的结果来调整,重点关注上一个分类器的误差点,从而更好地提高模型性能


残差

我们接下来来看看分类器之间是怎么联系的,残差代表分类器预测结果与真实值的差距

假设我们有一个预测数字的任务,目标值是40,则会有这样一个过程

  • 第一个分类器预测结果为30,则残差为10
  • 第二个分类器去拟合残差,这时第二个分类器的目标值变成了10,以此类推
  • 最后得到的残差为0,完成任务

可以看到Boosting的思想是每一个分类器去拟合前一个分类器的残差,最后每个分类器的结果加起来就是真实值

GBDT的缺点

  • 由于每个分类器要等待上一个分类器的结果,故模型无法并行训练,消耗的时间可能较多

python代码实现

代码

这段代码使用的数据集是虚拟的,我们这里主要学习模型是如何构建的,在实际任务中将数据集替换为真实数据集即可

# 导入必要的库
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score# 创建虚构的数据集
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 初始化并训练GBDT模型
gbdt_model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)
gbdt_model.fit(X_train, y_train)# 预测
y_pred = gbdt_model.predict(X_test)# 评估模型性能
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

模型参数解释

  • n_estimators: 子分类器数量

  • learning_rate: 学习率

  • max_depth: 决策树最大深度

结语

GBDT是一种优化的集成学习方法,采用了拟合残差的新思想,广泛应用于分类任务和回归任务中,它还有两个优化方法:XGBoost和LightGBM,之后会做具体介绍,敬请期待

感谢阅读,觉得有用的话就订阅下本专栏吧,有错误也欢迎指出

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

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

相关文章

vivado $clog2函数

对于.v文件在vivado中是不支持,但是可以修改为.sv或更改文件属性使用sytemverilog来支持。 /*** Math function: $clog2 as specified in Verilog-2005** clog2 0 for value 0* ceil(log2(value)) for value > 1** This implementatio…

php+mysql期末作业小项目

目录 1、登录界面 2、注册界面 3、主界面 4、学生表界面 5 、查询学生界面​编辑 6、修改学生信息界面​编辑 7、删除学生信息界面 8、添加学生信息界面 9、后台数据库​编辑 一个简单的php➕mysql项目学生信息管理系统,用于广大学子完成期末作业的参考&…

测试架构工程师需要具备哪些能力 ?

前言 相比于我们常见的研发架构师,测试架构师是近几年才出现的一个岗位,当然岗位title其实没有特殊的含义,在我看来测试架构师其实更像对某一类人的抽象称呼和对其复合能力的期待及认可。 在聊这篇文章的主题之前,先来看这样一个…

算法训练营Day4(链表)

语言 采用的Java语言,一些分析也是用于Java,请注意。 24. 两两交换链表中的节点 24. 两两交换链表中的节点 - 力扣(LeetCode) 解题 这道题就是考验链表的基础操作,但是有个语言方面的知识需要去掌握,就是|…

TCP通信

第二十一章 网络通信 本章节主要讲解的是TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 接下来会一一讲解 TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式,也有着优点和缺点…

如何在Android平板上远程连接Ubuntu服务器使用code-server代码开发

目录 1.ubuntu本地安装code-server 2. 安装cpolar内网穿透 3. 创建隧道映射本地端口 4. 安卓平板测试访问 5.固定域名公网地址 6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务…

el-table 表格多选(后端接口搜索分页)实现已选中的记忆功能。实现表格数据和已选数据(前端分页)动态同步更新。

实现效果:(可拉代码下来看:vue-demo: vueDemo) 左侧表格为点击查询调用接口查询出来的数据,右侧表格为左侧表格所有选择的数据,由前端实现分页。 两个el-table勾选数据联动更新 实现逻辑: el-…

低代码开发到底是补品还是垃圾食品?

2023,低代码彻底火了,甚至火到没有点相关经验,都不好意思出去面试的程度。 从业者对低代码的发展充满了想象,都认为未来低代码的商业价值不可估量。 据Gartner的最新报告显示,2023年全球低代码开发技术市场规模预计将…

内部文件上传以及渲染-接口API

文件上传 地址http://172.16.0.118:8090/api/pm/base/affix/upload请求类型POSTContent-Type:text/plain;charsetutf-8参数 prjData {"prjId":"", "jobId":"3031b2c8-c809-4110-8e88-22c80a9c1ec0721aca89-96a1-4346-9b6e-022331d221d1Nec…

【EMNLP 2023】面向Stable Diffusion的自动Prompt工程算法BeautifulPrompt

近日,阿里云人工智能平台PAI与华南理工大学朱金辉教授团队合作在自然语言处理顶级会议EMNLP2023上发表了BeautifulPrompt的深度生成模型,可以从简单的图片描述中生成高质量的提示词,从而使文生图模型能够生成更美观的图像。BeautifulPrompt通…

【MATLAB】MODWT分解+FFT+HHT组合算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 MODWT分解FFTHHT组合算法是一种综合性的信号处理方法,它结合了经验小波变换(Empirical Wavelet Transform,EWT)、快速傅里叶变换&#xff…

25.Oracle的回收站

oracle基础系统学习目录 01.CentOS7静默安装oracle11g 02.Oracle的启动过程 03.从简单的sql开始 04.Oracle的体系架构 05.Oracle数据库对象 06.Oracle数据备份与恢复 07.用户和权限管理 08.Oracle的表 09.Oracle表的分区 10.Oracle的同义词与序列 11.Oracle的视图 12.Oracle的…

爱智EdgerOS之深入解析如何应用爱智的视频流模块完成拉流

一、ONVIF 规范和常见视频流传输协议 ① ONVIF 规范 随着视频监控产业链的成熟,市面上陆陆续续出现了各式各样的网络摄像设备,这些设备都需要通讯协议才能进行数据传输。早期厂商都采用私有协议,但是现在厂商分工明确,有的负责生…

程序员的技术成长攻略

推荐语:偶尔在公众号看到的一篇文章,写的非常好,在此分享给各位程序员兄弟,不光是对技术成长有帮助,其他领域也是同样适用的!建议反复阅读,形成一套自己的技术成长策略。 原文地址:…

数据结构与算法:python栈和队列的用法

python的栈和队列其实都算作一个数组,栈从最后一个元素开始推出,队列从第一个元素开始推出 # pop(0)删除时间复杂度O(n) s [] #栈 q [] #队列 s.append(1)#1入栈 q.append(1)#1入队 s.pop()#出栈 q.pop(0)#出队由于从第一个元素删除需要挪动数组&…

【EI会议征稿】2024年粤港澳大湾区数字经济与人工智能国际学术会议(DEAI2024)

2024年粤港澳大湾区数字经济与人工智能国际学术会议(DEAI2024) 2024 Guangdong-Hong Kong-Macao Greater Bay Area International Conference on Digital Economy and Artificial Intelligence(DEAI2024) 2024年粤港澳大湾区数字经济与人工智能国际学术会议(DEAI2024)由广东科…

探索鸿蒙 TextInput组件

TextInput 根据组件名字,可以得知他是一个文本输出框。 声明代码👇 TextInput({placeholder?:ResourceStr,text?:ResourceStr}); placeholder: 就是提示文本,跟网页开发中的placeholder一样的 text:输入框当前的文本内容 特殊属…

ChatGPT的进化史

真正的人工智能可以变现的完全与人类一样思考时,世界会发生什么变化? ChatGPT就如它的名字一样,人类创造它最初的目的只是一个聊天机器人。聊天嘛,只要你和他对话时他的回答像人类一样自然就行了,看起来并没什么了不起…

Linux服务器磁盘占用过高解决思路

服务器在运行时,经常出现磁盘占用过高,可能有如下原因: 1、是否有产生过大的日志文件,或者大文件中的log过大,导致磁盘占用过高; 2、查看磁盘占用情况,分析哪个目录中文件占比最大; …

贝蒂的捣蛋小游戏~(C语言)

引言: 前面贝蒂已经给大家介绍了选择,循环结构~,今天贝蒂就基于这两种结构,为大家讲解一种捣蛋小游戏的设计思路和方法哦。 1.游戏要求 游戏要求: 1. 电脑⾃动⽣成1~100的随机数 2. 玩家猜数字,猜数字的过…