1 集成学习基础

目录

0 简述 

1 集成学习算法代表

1.1 Bagging

1.1.1 模型预测的结果组合的方式

1.2 stacking 

1.3 blending和stacking优缺点对比


0 简述 

        集成学习,典型的群殴策略,但是如何组织让彼此配合得当发挥最大的价值是一个值得思考的问题。

        集成学习是一种机器学习方法,通过结合多个基本学习器的预测结果,从而获得比单个学习器更好的泛化性能的技术。集成学习的主要思想是“三个臭皮匠,顶个诸葛亮”,即通过组合多个弱学习器来构建一个强学习器。常见的集成学习方法包括 Bagging、Boosting、Stacking 等。这些方法可以提高模型的鲁棒性、泛化能力和准确性。在实际应用中,集成学习通常能够取得比单个模型更好的性能。

        比如常见应用中对时间序列的一般会使用周期与趋势结合的方式,分别训练模型然后进行加权融合,权重大小可以根据线上的表现设定,如下图。其次为了扩展模型的多样性,在stacking策略选择第一层的学习去会使用不同类型的模型,然后对预测结果对比线性关系,把相关性较低的保留。

1 集成学习算法代表

1.1 Bagging

        通过构建多个相互独立的基学习器,然后将它们的预测结果进行平均或投票来提高整体模型的性能。Bagging 的基本思想是通过自助采样(bootstrap sampling)从原始训练集中随机抽取多个子集,然后在每个子集上训练一个基学习器,最后将这些基学习器的预测结果进行组合。

  • 第一步:在训练数据集中随机采样,对有m个样本训练集做T次的随机采样
    • 随机采样:采集固定个数的样本,有放回的采样(每采样一个样本,都将样本放回)。一般是随机采集和训练集样本数m一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容不同
  • 第二步:训练一个基模型,对不同的子集进行训练。得到T个基模型。
  • 第三步:T个基模型对测试数据进行预测,得到测试结果。
  • 第四步:将T中结果综合起来。分类任务通常使用投票的方式得出结果,回归任务用平均的方式得到结果。

1.1.1 模型预测的结果组合的方式

  1. 求均值;
  2. 求中位数;
  3. 最大值;
  4. 最小值;
  5. 众数。
  6. 通过每个模型在测试集合的表现设定权重:逆向需要根据模型评估指标进行设定。

1.2 stacking 

        上面介绍的bagging,在模型结果集成使用统计策略的思想,而stacking使用模型进行学习。甚至可以把第一层的特征也输入给stacking的第二层。

  1. 数据集划分

    • 将训练数据集划分为多个子集,通常包括训练集和验证集。
    • 通常采用交叉验证的方式进行数据集划分。
  2. 训练基学习器

    • 在每个子集上训练多个不同的基学习器,可以使用不同的算法或模型。
    • 每个基学习器对整个训练集进行训练,但预测结果仅在验证集上生成。
  3. 生成元特征

    • 对于每个基学习器,在验证集上生成预测结果,这些预测结果作为元特征。
    • 元特征可以是基学习器的原始预测结果,也可以是基学习器的概率输出或其他特征表示。
  4. 构建元学习器

    • 将基学习器的预测结果作为元特征,将真实标签作为目标,训练一个元学习器(通常是一个线性模型)来组合基学习器的预测结果。
    • 元学习器可以是线性回归、逻辑回归、神经网络等模型。
  5. 生成最终预测

    • 使用训练好的元学习器对测试集进行预测,得到最终的集成预测结果。
    • 元学习器将基学习器的预测结果组合起来,提高整体集成模型的性能。

1.3 Blending

        Blending(可译为混合)。它的思路和Stacking几乎是完全一样的,唯一的不同之就是Blending 的过程中不进行K折验证,而是只将原始样本训练集分为训练集和验证集,然后只针对验证集进行预测,生成的新训练集就只是对于验证集的预测结果,而不是对对全部训练集的预测结果。Blending 算法的流程如下图所示。

1.3 blending和stacking优缺点对比

1 blending是直接准备好一部分10%留出集只在留出集上继续预测,用不相交的数据训练不同的 Base Model,将它们的输出取(加权)平均。实现简单,但对训练数据利用少了。          

2. blending 的优点是:比stacking简单,不会造成数据穿越(所谓数据创越,就比如训练部分数据时候用了全局的统计特征,导致模型效果过分的好),generalizers和stackers使用不同的数据,可以随时添加其他模型到blender中。                

3.缺点在于:blending只使用了一部分数据集作为留出集进行验证,而stacking使用多折交叉验证,比使用单一留出集更加稳健。

4.两个方法都挺好,看偏好了,都可以尝试一下。     

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL-笔记-08.数据库编程

目录 8.1 编程基础 8.1.1 基本语法 8.1.2 运算符与表达式 1. 标识符 2. 常量 (1) 字符串常量 (2)日期时间常量 (3)数值常量 (4)布尔值常量 (5)NULL…

2024长三角快递物流展:科技激荡,行业焕发新活力

7月8日,杭州将迎来快递物流科技盛宴,这是一年一度的行业盛会,吸引了全球领先的快递物流企业和创新技术汇聚一堂。届时,会展中心将全方位展示快递物流及供应链、分拣系统、输送设备、智能搬运、智能仓储、自动识别、无人车、AGV机器…

判断前端入参是否空否则提示前端写法

vue2中 前端先声明一个变量,用于alert判断 在templeat中定义一个提示语句 然后在点击事件时判断一下是否展示

API接口知识小结

应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台系统)或后台不同系统之间的交互点。包括外部接口、内部接口&#xf…

串联超前及对应matlab实现

串联超前校正它的本质是利用相角超前的特性提高系统的相角裕度。传递函数为:下面将以一个实际的例子,使用matlab脚本,实现其校正后的相位裕度≥60。

在VSCode中调试其他软件执行的python文件

在VSCode中调试其他软件执行的python文件 0. 实际场景 我有一段python代码想在Metashape中运行,但是又想在中间某一步停下来查看变量值。由于Metashape的python环境不容易在vscode中配置,所以直接用vscode调试单个文件的方式无法实现这个想法。还好&am…

Java 四大名著之一,豆瓣9.7,Java神作重磅上市

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

PG修改端口号与error: could not connect to server: could not connect to server 问题解决

刚开始学习PG修改端口号之后数据库端口号没变。 修改端口号:/usr/local/pgsql/data中的postgresql.conf中 修改后并不能直接生效需要重启PG: /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile restart重启后新…

R语言--图形绘制

一&#xff0c;绘制简单图形 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb) 具体参数请参考R语言中的绘图技巧1&#xff1a;plot()函数参数汇总_r语言plot参数设置-CSDN博客 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb,col#…

【上岗认证】错题整理记录

目录 &#x1f31e;一、阶段1&#xff1a;编码规范 &#x1f30a;编码规范考试-CC &#x1f31e;二、阶段2&#xff1a;开发基础 &#x1f30a;C/C &#x1f30a;数据库&#xff08;Oracle/MySql&#xff09; &#x1f31e;三、阶段3&#xff1a;测试基础 &#x1f30a;…

智慧校园研究新发展

随着新兴信息技术出现&#xff0c;智慧校园研究发展出新的样态。智慧校园研究新进展主要体现在信息化背景下的未来教育理论发展&#xff0c;以新一代人工智能技术为代表的新兴技术应用&#xff0c;以及“人—技”协作的个性化学习创新。 智慧校园是未来教育的重要入口&#xff…

WPS的JS宏如何设置Word文档的表格的单元格文字重新编号

希望对Word文档中的表格进行统一处理&#xff0c;表格内的编号&#xff0c;有时候会出现紊乱&#xff0c;下一个表格的编号承接了上一个表格的编号&#xff0c;实际需要重新编号。 当表格比较多时&#xff0c;手动更改非常麻烦&#xff0c;而且更改一遍并不能完成&#xff0c;…

vue2—— mixin 超级详细!!!

mixin Mixin是面向对象程序设计语言中的类&#xff0c;提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类 Mixin类通常作为功能模块使用&#xff0c;在需要该功能时“混入”&#xff0c;有利于代码复用又避免了多继承的复杂 vue中的mixin 先来看一下官方定义 mi…

echarts特殊处理(滚动条、legend分页、tooltip滚动)

当图表数据量过大时&#xff0c;为了使用者能够有更好的体验&#xff0c;对于大数据量的图表处理&#xff1a; 1、当x轴数据过多不能完全展示时&#xff0c;需要添加滚动条&#xff1a;option设置dataZoom字段 dataZoom: [{ // 这部分是关键&#xff0c;设置滚动条type: slide…

实验案例二:配置Trunk,实现相同VLAN的跨交换机通信

实验环境 公司的员工人数已达到 100 人&#xff0c;其网络设备如图12.13所示&#xff0c;现在的网络环境导致广播较多网速慢&#xff0c;并且也不安全。公司希望按照部门划分网络&#xff0c;并且能够保证一定的网络安全性 其网络规划如下、 PC1和 PC3为财务部&#xff0c;属于…

西湖大学赵世钰老师【强化学习的数学原理】学习笔记-1、0节

强化学习的数学原理是由西湖大学赵世钰老师带来的关于RL理论方面的详细课程&#xff0c;本课程深入浅出地介绍了RL的基础原理&#xff0c;前置技能只需要基础的编程能力、概率论以及一部分的高等数学&#xff0c;你听完之后会在大脑里面清晰的勾勒出RL公式推导链条中的每一个部…

Json数据概念及C# 环境下的序列化、反序列化操作

什么是Json&#xff1f; JSON的全称是JavaScript Object Notation&#xff0c;是一种轻量级的数据交换格式&#xff0c;主要用于数据的序列化和交互。常用于Web中&#xff0c;其他领域也经常出现JSON的身影。 与xml相比&#xff0c;更快&#xff0c;更小&#xff0c;更容易解析…

RCE复习(ctfhub上)

一、rce漏洞概述 在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理&#xff0c;若应用对用户的输入过滤不严&#xff0c;容易产生远程代码执行漏洞或系统命令执行漏洞。 二、常见RCE漏洞函数 1.系统命令执行函数 system()&#xff1a;能将…

C++模板超详解

目录 一、了解什么是泛性编程 二、模版 1.函数模版 1.1 函数模板概念 1.2 函数模板格式 1.3 函数模板的原理 1.4 函数模板的实例化 1.5 模板参数的匹配原则 2.类模板 2.1 类模板的定义格式 2.2 类模板的实例化 3. 非类型模板参数 4. 模板的特化 4.1 概念 4.2 …

股票分红扣税!详解现金分红、送红股和转增股本

股票分红 股票分红指的是上市公司根据其盈利情况&#xff0c;按照股东持有的股份比例&#xff0c;向股东分配利润的方式。股票分红需要满足一定的前提条件 1、公司必须存在可供分配的利润&#xff0c;公司在过去的经营活动中已经实现了盈利&#xff0c;并且这些盈利在缴纳了企…
最新文章