机器学习第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.hqwc.cn/news/258636.html

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

相关文章

多功能智能遥测终端机 5G/4G+北斗多信道 视频采集传输

计讯物联多功能智能遥测终端机,全网通5G/4G无线通信、弱信号地区北斗通信,多信道自动切换保障通信联通,丰富网络接口及行业应用接口,支持水利、环保、工业传感器、控制终端、智能终端接入,模拟量/数字量/信号量采集&am…

【FPGA】Verilog:BCD 加法器的实现

0x00 XOR 运算在 2 的补码加减法中的应用 2 的补码加减法的特点是,当从某个数中减去负数时,将其转换为正数的加法来计算,并将减去正数的情况转换为负数的加法来计算,从而将所有减法运算转换为加法运算。在这种情况下,…

分享十几个适合新手练习的软件测试项目

说实话,在找项目的过程中,我下载过(甚至付费下载过)N多个项目、联系过很多项目的作者,但是绝大部分项目,在我看来,并不适合你拿来练习,它们或多或少都存在着“问题”,比如…

swagger入门

swagger入门 pom依赖 不用专门导入swagger 因为springboot已经将它集成了 org.springframework.boot spring-boot-starter com.github.xiaoymin knife4j-spring-boot-starter Swagger配置类 Configuration public class SwaggerConfig { // 创建并配置Docket Bean&#xf…

temu的产品审核结果在哪里

拼多多作为中国最大的社交电商平台之一,拥有众多商家和卖家在其平台上销售商品。为了确保平台上的商品质量和合规性,拼多多对商家所提交的商品进行审核。如果您是在拼多多的Temu平台上销售商品,想要查询您的产品审核结果,可以按照…

数据库对象介绍与实践:视图、函数、存储过程、触发器和物化视图

文章目录 一、视图(View)1、概念2、基本操作1)创建视图2)修改视图3)删除视图4)使用视图 3、使用场景4、实践 二、函数(Function)1、概念2、基本操作1)创建函数2&#xff…

C语言WFC实现绘制Lagrange插值多项式曲线的函数

前言(引用): 拉格朗日多项式插值 插值方法有许多,常用的、基本的有:拉格朗日多项式插值、牛顿插值、分段线插值、Hermite插值和三次样条插值。这里只将一下拉格朗日多项式插值法: 方法应用 通缩点说&…

思维链(CoT)提出者 Jason Wei:关于大语言模型的六个直觉

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 Jason Wei 的主页:https://www.jasonwei.net/ Jason Wei,一位于 2020 年从达特茅斯学院毕业的杰出青年,随后加盟了…

Linux学习笔记(九)MISC设备驱动

前言 misc 的意思是混合、杂项的,因此 MISC 驱动也叫做杂项驱动。也就是当我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动。 MISC 驱动其实就是最简单的字符设备驱动,通常嵌套在 platform 总线驱动中,实现复杂的驱动&#xff0…

52 代码审计-PHP项目类RCE及文件包含下载删除

目录 漏洞关键字:演示案例:xhcms-无框架-文件包含跨站-搜索或应用-includeearmusic-无框架-文件下载-搜索或应用功能-down等zzzcms-无框架-文件删除RCE-搜索或应用-unlink、eval 漏洞关键字: SQL注入: select insert update mysql_query mysql等 文件上传&#xff…

《opencv实用探索·十五》inRange二值化图像

opencv接口如下: void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);函数实现二值化功能,主要是将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色&am…

C语言入门课程之课后习题之折半查找法

目录 1解题思路: 2代码所示: 3运行代码: 4习题不难,多刷题,练思路,最重要的不是学会了一道题,而是掌握其编程思想; 1解题思路: 折半查找法(half-interval…