集成学习:Bagging, Boosting,Stacking

目录

集成学习

一、bagging

二、boosting

Bagging  VS  Boosting

1.1 集成学习是什么?

Bagging 

Boosting

Stacking

总结


集成学习

好比人做出一个决策时,会从不同方面,不同角度,不同层次去思考(多个自我,多个价值观),这就会有多个决策结果产生,最终我们会选一种决策作为最终决策。

集成学习(Ensemble Learning):

  1. 通常一个集成学习器的分类性能会好于单个分类器,将多个分类方法聚集在一起,以提高分类的准确率。

  2. 集成学习并不算是一种学习器,而是一种学习器结合的方法。

  3. 集成学习法由训练数据构建一组基学习器,然后通过对每个基学习器的预测进行投票来产生最终预测。

  4. 集成学习中需要有效地生成多样性大的基学习器,即多样性增强(增强泛化特性,减小一次预测的方差):即对样本、特征,学习器进行扰动。

特点

集成方法是一种将几种机器学习技术组合成一个预测模型的元算法,以减小方差(bagging),偏差(boosting),或者改进预测(stacking)。

稳定学习器的集成不太有利,因为这样的集成并不会提升泛化特性。例如,决策树集成相对于kNN集成达到了较高的准确率。kNN对训练样本的扰动不敏感,因此也被称为稳定学习器(stable learner)。

集成方式

  1. 同构集成:大多数集成方法使用一个基学习算法来产生多个同构基学习器,即相同类型的学习器,这就是同构集成(homogeneous ensembles)。

  2. 异构集成:也有一些方法使用的是异构学习器,即不同类型的学习器,这就是异构集成(heterogeneousensembles)。为了使集成方法能够比任何构成它的单独的方法更准确,基学习器必须尽可能的准确和多样。

学习模式

  1. 串行:个体学习器之间存在强依赖关系,必须串行生成的序列化方法

  2. 并行:个体学习器不存在强依赖关系,可以同时生成的并行化方法

集成学习又分为两大类


一、bagging

bagging为bootstrap aggregating简写,即套袋法,过程如下,

  1. 抽取多组训练集:每个样本集都是从原始样本集中有放回的抽取n次,组成训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行m轮,得到m个训练集,训练集之间相互独立。

  2. 基学习器:每次使用一个训练集得到一个模型,m个训练集共得到m个模型。

  3. 投票:分类问题:将上步得到的m个模型采用投票的方式得到分类结果;回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

bagging本质

对一个样本空间,随机有放回的抽样出若干独立的训练样本,以此来增加样本扰动,多轮次抽样训练后形成多个估计,然后平均多个估计,达到降低一个估计的方差,也就是增强学习器的泛化特性。

二、boosting

其主要思想是将弱分类器组装成一个强分类器。在PAC(概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。

Adaboost

Adaboost是一种基于boost思想的一种自适应的迭代式算法。通过在同一个训练数据集上训练多个弱分类器(weak classifier),然后把这一组弱分类器集成起来,产生一个强分类器(strong classifier)。

特点

(1) 每次迭代改变的是样本的分布,而不是重复采样

(2) 样本分布的改变取决于样本是否被正确分类:总是分类正确的样本权值低,总是分类错误的样本权值高(通常是边界附近的样本)

(3) 最终的结果是弱分类器的加权组合

Bagging  VS  Boosting

 

 

(1) 样本选择上

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

(2) 样例权重

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

(3) 预测函数

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

(4) 计算方式

Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

1.1 集成学习是什么?

集成学习(Ensemble Learning)是集合多个学习算法以提高模型的效果,是机器学习中重要的一类方法。很多高阶机器学习模型(随机森林、XGBoost)和深度学习都包含了集成学习思想。

图片

那么集成学习到底是什么呢?集成学习其实是一类机器学习的算法,你可以把它理解为一种训练思路,而并不是某一个单独的算法。集成学习的一个关键点就在于它集合了多个学习算法。如果我们有了多个模型,每个模型有它各自的多样性,通过集成学习,我们能够得到一个更好的精度。

1.2 集成学习有哪些分支?

集成学习在我们的日常生活是十分常见的,比如投票选班长或者通过多次摇骰子来进行投票,其实都体现了集成学习的思想。常见的集成学习类型有 Bagging、Boosting、Stacking 三种。这里会逐一为大家介绍这三种集成学习的类型。

Bagging 

我们在学习机器学习基础的时候,在教材中,比如周志华的西瓜书,都会讲到 Bagging 这种集成学习的类型。Bagging 基于“民主”的集成思路,并行训练多个模型。这里的“民主”是什么意思呢?是每个机学习器都是相互平等的。而正是由于我们的机器学习的平等独立的特性,才使得 Bagging 能够进行并行的训练,不需要做串行的训练。Bagging 的用法是在训练过程中训练多个模型,然后对预测结果进行集成。Bagging 的优点是可以减少误差中的方差项(variance),它能够降低模型预测结果的误差。它的缺点是增加了时间的开销,且需要模型具备多样性,由于是并行训练,它需要有较大的计算资源,而如果我们的模型不具备多样性的话,最终得到的结果也会不尽如人意。

关键点:多个模型如何保证多样性?

方法1:每次采样得到参与训练的样本(行采样)

方法2:每次采样得到参与训练的字段(列采样)

方法3:每次对模型的超参数进行修改

Boosting

Boosting 基于“精英”筛选的思路,串行训练多个模型。“精英”指它不是一个“民主”的,而是一个筛选的过程,类似于进化的过程。Boosting 在其训练过程中,它的模型是基于上一轮的模型进行继续拟合的,模型与模型之间是串行的过程,它们之间是相互依赖的。Boosting 的优点是可以减少偏差(bias),它主要是减少误差中的偏差项。而由于在它在进行训练的过程中,是不断的学习上一轮模型的残差的,所以 Boosting 其实是容易过拟合的。

关键点:如何基于上一轮模型进行继续学习?

方法1:对错误样本调整权重

方法2:拟合上一轮模型预测值的误差

Stacking

Stacking 是基于“标签”学习的思路,堆叠多个模型。Stacking 通过交叉验证的方法对训练集进行训练和预测,并以此进行二次学习。它的优点是能够结合不同类型的模型来完成学习,它的缺点是它的时间开销是非常大的,并且非常容易过拟合。

关键点:模型如何利用交叉验证训练?

什么是交叉验证呢?交叉验证(Cross Validation)是在竞赛的过程中经常会用到的一种操作。在竞赛的过程中,具体的数据集有 train set 和 test set,在 train set 上构建一个模型,在 test set 上做一个预测,然后去提交打分。原始的数据集可能只有这两部分。但是在进行训练的过程中,我们可能还会划分一部分出来,我们会把 train set 再拆分成一个 training set 和一个 validation set,也就是说我们会划分出一个验证集出来,因为有了验证集我们就可以做一个 Stacking。无论是竞赛的过程中,还是在机器学习的学习过程中,一个关键点是验证集应该如何划分。验证集主要有两种划分方法。第一种是 hold out 流出法,或者称为按照比例进行划分的流出法,比如说 75% 的比例进行训练,25% 的比例进行验证。第二种是 KFold,KFold 是指我们在进行具体的数据划分的时候,可以把数据集划分成 k 份。比如我们将数据集划分成 5 份,我们首先将第 1 份看作验证集,其他 4 份看作训练集,记作 fold 1,然后将第 2 份看作验证集,其他 4 份看作训练集,记作 fold 2,以此类推,我们可以循环 5 次,最终得到 5 个模型。

那么我们来看一看如图所示的 Stacking 的思路,它与我们的交叉验证有什么样的共同点和区别呢?

图片

5 折交叉验证

在此模型进行训练的过程中,仍是将我们的数据集划分成 5 份,蓝色部分是训练集,橙色部分是验证集。训练了一个模型之后,我们可以对它的验证集进行预测。当训练完全部的五个模型之后,我们可以将模型预测的结果进行拼接。也就是说,一个模型的具体的预测结果是可以拆分成两部分的,一部分是对验证集的预测结果,另一部分是对测试集的预测结果,我们可以将验证集的预测结果拼接到一起,这个拼接到一起的预测结果与我们的原始训练集的维度是一样大的,这个特征叫做 out-of-fold 特征,它是可以当做一个新的特征的。在具体的操作过程中,我们可以得到模型对训练集的预测结果,以及对测试集的预测结果,这样就相当于是新增加了一类的特征,这一类的特征我们是可以用来做新的建模的。一个模型通过 5 折交叉验证可以增加一个特征,如果是 n 个模型,就可以增加 n 个特征。那么我们在进行二次学习的时候,就可以用我们的新的模型去将我们的 n 个特征和我们的真实标签再去进行一个二次学习。这就是一个基础的 Stacking 的思路。

总结

Bagging 是从数据的角度得到多样性。

Boosting 是一个串行的过程,也就是串行的迭代。

图片

Stacking 就是做一个二次学习,我们将 K-NN,Decision Tree 以及 SVM 的预测结果进行一个二次学习,再用一个模型对它的预测结果进行具体的学习。

图片

 

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

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

相关文章

15-数据结构-二叉树的遍历,递归和非递归

简介: 本文主要是代码实现,二叉树遍历,递归和非递归(用栈)。主要为了好理解,直接在代码处,加了详细注释,方便复习和后期默写。主要了解其基本思想,为后期熟练应用…

光伏电站、变电站、等直流系统电参量测量仪器怎么选型

安科瑞虞佳豪 壹捌柒陆壹伍玖玖零玖叁 应用场景 工作拓扑图 功能 ①对电能参数进行采样计量和监测,逆变器或者能量管理系统(EMS)与之进行通讯,根据实时功率及累计电能实现防逆流、调节发电量、电池充放电等功能; ②…

uniapp使用sqlite 数据库

uniapp使用sqlite 数据库 傻瓜式使用方式,按步骤,即可使用。 1.开启sqlite 在项目中manifest.json该文件中配置 2.封装数据库的调用方法 const sqlName "zmyalh" //定义的数据库名称 const sqlPath "_doc/zmyalh.db" //定义数…

three.js(九):内置的路径合成几何体

路径合成几何体 TubeGeometry 管道LatheGeometry 车削ExtrudeGeometry 挤压 TubeGeometry 管道 TubeGeometry(path : Curve, tubularSegments : Integer, radius : Float, radialSegments : Integer, closed : Boolean) path — Curve - 一个由基类Curve继承而来的3D路径。 De…

mysql 查看 、设置缓冲池 buffer_pool

Mysql 存储引擎 MyIsam 和 Innodb 引擎 myIsam 存储引擎: 只缓存索引,不缓存数据,对应的键缓存参数为 key_buffer_size show variables like ‘key_buffer_size’; set global key_buffer_sizexxxx; 或者 my.ini my.cnf [server] key_buffer…

Mac下Docker Desktop安装命令行工具、开启本地远程访问

Mac系统下,为了方便在terminal和idea里使用docker,需要安装docker命令行工具,和开启Docker Desktop本地远程访问。 具体方法是在设置-高级下, 1.将勾选的User调整为System,这样不用手动配置PATH即可使用docker命令 …

2023第七届蓝帽杯 初赛 web LovePHP

LovePHP 直接给了源码。 network查看到,PHP版本是7.4.33 题目要求我们GET一个my_secret.flag参数,根据PHP字符串解析特性,PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事: 删…

飞腾PSPA可信启动--1 非对称加密

最近计划在梳理下飞腾安全平台架构PSPA,就先从可信启动开始吧。有一些基础的密码学知识,各位在研究可信固件的时候可能会有一些不解,为了便于大家理解,编了几个小故事,希望能够帮助大家理清其中的各种关系。目前可信启…

【人工智能】—_逻辑回归分类、对数几率、决策边界、似然估计、梯度下降

文章目录 逻辑回归分类Logistic Regression ClassificationLogistic Regression: Log OddsLogistic Regression: Decision BoundaryLikelihood under the Logistic ModelTraining the Logistic ModelGradient Descent 逻辑回归分类 考虑二分类问题,其中每个样本由一…

【AI辅助办公】PDF转PPT,移除水印

PDF转PPT 将PDF上传链接即可转换成PPT。​​​​​​ ​​​​​​​ https://www.camscanner.com/pdftoppthttps://www.camscanner.com/pdftoppt​​​​​​​​​​​​​​移除水印 第一步:打开视图-宏 第二步:输入宏名(可以是人以文字…

「快学Docker」Docker容器安全性探析

「快学Docker」Docker容器安全性探析 引言容器安全性威胁Docker容器安全性目录容器镜像安全性主机与容器隔离访问控制运行时监控与防御网络安全性Docker容器安全性最佳实践 总结 引言 在当今快速发展的软件开发和部署领域,容器化技术已经成为一种不可或缺的工具。然…

【App端】uni-app使用百度地图api和echarts省市地图下钻

目录 前言方案一:echarts百度地图获取百度地图AK安装echarts和引入百度地图api完整使用代码 方案二:echarts地图和柱状图变形动画实现思路完整使用代码 方案三:中国地图和各省市地图下钻实现思路完整使用代码 前言 近期的app项目中想加一个功…

中小企业想出圈,媒介盒子教你9个营销技巧

无论是企业还是品牌营销人员,要想脱颖而出,必须从品牌意识、品牌思维、品牌策略和品牌战术多个维度做好品牌运营。盒子总结的9个品牌营销新趋势,拿走不谢!01 和名导明星合作企业品牌明星化能树立较高的知名度和美誉度,…

Rabbitmq消息积压问题如何解决以及如何进行限流

一、增加处理能力 优化系统架构、增加服务器资源、采用负载均衡等手段,以提高系统的处理能力和并发处理能力。通过增加服务器数量或者优化代码,确保系统能够及时处理所有的消息。 二、异步处理 将消息的处理过程设计为异步执行,即接收到消息…

OpenGL-入门-BMP像素图glReadPixels(2)保存显示的界面

用glReadPixels保存显示的界面 #include <GL/glut.h> #include <iostream> #include <fstream> #include <vector>// Save pixel data as BMP image void saveBMP(const std::string& filename, int width, int height, const std::vector<GLu…

多项式求逆

已知 F F F&#xff0c;求 G G G 考虑倍增 F ( x ) ∗ H ( x ) ≡ 1 ( m o d x n / 2 ) F(x) * H(x) \equiv 1 \pmod{x^{n/2}} F(x)∗H(x)≡1(modxn/2) F ( x ) ∗ G ( x ) ≡ 1 ( m o d x n / 2 ) F(x) * G(x) \equiv 1 \pmod{x^{n/2}} F(x)∗G(x)≡1(modxn/2) 假设 H H…

Shell编程之流程控制

目录 if判断 case语句 for循环 while循环 if判断 语法&#xff1a; if [ 条件判断表达式 ] then 程序 elif [ 条件判断表达式 ] then 程序 else 程序 fi 注意&#xff1a; [ 条件判断表达式 ]&#xff0c;中括号和条件判断表达式之间必须有空格。if&#xff0c;elif…

自然语言处理(NLP)是什么?

NLP(自然语言处理) 和 Phoebe Liu 的简介 您有没有和聊天机器人互动过&#xff1f;或者您是否向虚拟助手&#xff0c;例如 Siri、Alexa 或您车上的车载娱乐系统发出过某些请求&#xff1f;您使用过在线翻译吗&#xff1f;我们大多数人都曾与这些人工智能 (AI) 互动过&#xff…

某人事系统架构搭建设计记录

首发博客地址 https://blog.zysicyj.top/ 先大致列一下基础情况 架构必须是微服务 场景上涉及大量查询操作&#xff0c;分析操作 存在临时大量写入的场景 并发并不高 对高可用要求较高&#xff0c;不能挂掉 对安全要求高 要能过等保测试等三方测试 使用人数并不多&#xff0c;十…

git rebase和merge区别

一、概述 merge和rebase 标题上的两个命令&#xff1a;merge和rebase都是用来合并分支的。 这里不解释rebase命令&#xff0c;以及两个命令的原理&#xff0c;详细解释参考这里。 下面的内容主要说的是两者在实际操作中的区别。 1.1 什么是分支 分支就是便于多人在同一项目…