第八章 集成学习

news2024/11/15 12:15:28

8.1 个体与集成

集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类系统、基于委员会的学习等。
下图显示出集成学习的一般结构:先产生一组个体学习器,再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生。
若集成中只包含同种类型的个体学习器,例如决策树集成中全是决策树,神经网络集成中全是神经网络,这样的集成式同质的。同质集成中的个体学习器亦称为基学习器,相应的学习算法称为基学习算法
若集成中包含不同类型的个体学习器,例如同时包含决策树和神经网络,这样的集成是异质的。这时不再有基学习算法,个体学习器一般不称为基学习器,常称为组件学习器或直接称为个体学习器。
在这里插入图片描述
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对弱学习器尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,故基学习器有时也直接称为弱学习器。集成学习把多个学习器结合起来如何能获得比最好的单一学习器更好的性能呢?
考虑一个简单的例子:在二分类任务中,假定三个分类器在三个测试样本上的表现如下图所示。√表示分类正确,×表示分类错误,集成学习的结果通过投票法产生,即少数服从多数
在a中,每个分类器都只有66.6%的精度,但集成学习达到了100%;
在b中,三个分类器没有差别,集成之后性能没有提高;
在c中,每个分类器的精度都只有33.3%,集成学习的结果变得更糟。
要获得好的集成,个体学习器应好而不同,即个体学习器要有一定的准确性,学习器不能太坏,并且要有多样性,即学习器间具有差异。
在这里插入图片描述
根据个体学习器的生成方式,目前的集成学习方法大致分为两大类。即个体学习器间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系,可同时生成的并行化方法;前者的代表是Boosting,后者的代表是Bagging的随机森林

8.2 Boosting

Boosting是一族可将弱学习器提升为强学习器的算法。
这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分析来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
Boosting族算法最著名的代表是AdaBoost
Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过重赋权法实施,即在训练过程的每一轮中,根据样本分析为每个训练样本重新赋予一个权重。
对无法接受带权样本的基学习算法,则可通过重采样法来处理,即在每一轮学习中,根据样本分布对训练集重新采样,再重采样而得的样本集对基学习器进行训练。

8.3 Bagging与随机森林

欲得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立;
现实生活中往往无法做到独立,但可以设法使基学习器尽可能具有较大的差异。
给定一个训练数据集,一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器。这样,由于训练数据不同,我们获得的基学习器可望具有比较大的差异。
然而,为获得好的集成,我们同时还希望个体学习器不能太差。如果采样出的每个子集都完全不同,则每个基学习器只用到了一小部分训练数据,甚至不足以进行有效学习,这显然无法确保产生出比较好的基学习器。未解决这个问题,我们可考虑使用相互有交叠的采样子集。

8.3.1 Bagging

Bagging是并行式集成学习方法最著名的代表。它基于之前2.2.3介绍过的自助采样法(bootstrap sampling)。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集有的样本在采样集里多次出现,有的则从未出现。
照这样,我们可采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。这就是Bagging的基本流程。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。下图给出Bagging算法的基本描述。
在这里插入图片描述
假定基学习器的计算复杂度为O(m),则Bagging的复杂度大致为T( O(m) + O(s) ),考虑到采样与投票/平均过程的复杂度O(s)很小。而T通常是一个不太大的常数,因此,训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,这说明Bagging是一个很高效的集成学习算法。
此外,与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归等任务。
自助采样过程还给Bagging带来了另一个优点:由于每个基学习器只使用初始训练集中约63.2%的样本,剩下约36.8%的样本可用作验证集来对泛化性能进行包外估计

8.3.2 随机森林

随机森林(Random Forest,简称RF)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
具体来说,传统决策树在选择划分属性时是在当前结点的属性集合中选择一个最优属性(假设有d个属性);而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若k=d,则基决策树的构建与传统决策树相同;若k=1,则是随机选择一个属性用于划分;一般情况下,推荐k = log2d
随机森林简单、容易实现、计算开销小、同时在很多现实任务中展现出强大的性能。随机森林对Bagging只做了小改动,但是与Bagging中基学习器的多样性仅通过样本扰动而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动
随机森林的收敛性与Bagging相似。随机森林的起始性能往往相对较差,特别是在集成中只包含一个基学习器时。因为通过引入属性扰动,随机森林中个体学习器的性能往往有所降低。
特别的,**随机森林的训练效率常优于Bagging,**因为在个体决策树的构建过程中,Bagging使用的是确定型决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的是随机型决策树则只需考察一个属性子集。
在这里插入图片描述

8.4 结合策略

学习器结合可能会从三个方面带来好处:
首先,从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则会减小这一风险;
第二,从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险;
第三,从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器则肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似。

8.4.1 结合策略

对数值型输出hi(x)∈R,最常用的结合策略是使用平均法。
在这里插入图片描述在这里插入图片描述
一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。

8.4.2 投票法

对分类任务来说,学习器hi将从类别标记集合{c1, c2, …, cN}中预测出一个标记,最常用的结合策略是使用投票法。为便于讨论,我们将hi在样本x上的预测输出表示为一个N维向量。其中hji(x)是hi在类别标记cj上的输出。
在这里插入图片描述
在这里插入图片描述
即预测为得票最多的标记,若同时有多个标记获最高票,则从中随机选取一个
在这里插入图片描述

8.4.3 学习法

当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。Stacking是学习法的典型代表。这里我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。
Stacking先从初始数据集训练出初级学习器,然后生成一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。Stacking算法描述如下图所示:
在这里插入图片描述

8.5多样性

8.5.1 误差-分歧分解

之前提到过:欲构建泛化能力强的集成,个体学习器应好而不同。
误差-分歧分解明确指示出:个体学习器准确性越高、多样性越大,则集成越好。

8.5.2 多样性度量

顾名思义,多样性度量是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度。典型做法是考虑个体分类器的两两相似/不相似性。以下介绍几个多样性度量:
在这里插入图片描述

8.5.3 多样性增强

在集成学习中需有效地生成多样性大地个体学习器。如何增强多样性呢?一般思路是在学习过程中引入随机性,常见做法主要是数据样本,输入属性,输出表示,算法参数扰动。
1、数据样本扰动
给定初始数据集,可从中产生出不同地数据子集,再利用不同的数据子集训练出不同的个体学习器。数据扰动通常是基于采样法。
2、输入样本扰动
训练样本通常由一组属性描述,不同的子空间(即属性子集)提供了观察数据的不同视角。显然,从不同子空间训练出的个体学习器必然有所不同。著名的随机子空间算法就依赖于输入属性扰动,该算法从初始属性集中抽取出若干个属性子集,再基于每个属性子集训练一个基学习器。算法如下图所示。
对包含大量冗余属性的数据,在子空间中训练个体学习器不仅能产生多样性大的个体,还会因属性数的减少而大幅节省时间开销,同时,由于冗余属性多,减少一些属性后训练出的个体学习器也不至于太差。若数据只包含少量属性,或者冗余属性很少,则不宜使用输入属性扰动法。
在这里插入图片描述
3、输出表示扰动
此类做法的基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如 “翻转法"随机改变一些训练样本的标记;也可对输出表示进行转化,如 “输出调制法”将分类输出转化为回归输出后构建个体学习器;还可将原任务拆解为多个可同时求解的子任务,如ECOC法利用纠错输出码将多分类任务拆解为一系列二分类任务来训练基学习器。

4、算法参数扰动
基学习算法一般都有参数需进行设置,例如神经网络的隐层神经元素、初始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。

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

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

相关文章

Redis实战——分布式锁

目录 1 一人一单并发安全问题 2 分布式锁的原理和实现 2.1 什么是分布式锁? 2.2 分布式锁的实现 1 一人一单并发安全问题 之前一人一单的业务使用的悲观锁,在分布式系统下,是无法生效的。 理想的情况下是这样的:一个线程成功…

计算机中数的表示和运算

定点数 编程时需要确定小数点位置难以表示两个大小相差较大的数存储空间利用率低 这种用二进制来表示十进制的编码方式,叫作BCD 编码(Binary-Coded Decimal)。 浮点数 小数点的位置可以左右移动的数 规格化浮点数: IEEE 754规格化的尾数…

基于Java+Swing+Mysql实现《黄金矿工》游戏

基于JavaSwingMysq实现《黄金矿工》游戏一、系统介绍二、功能展示三、其他系统一、系统介绍 《黄金矿工》游戏是一个经典的抓金子小游戏,它可以锻炼人的反应能力。。该游戏中,可以通过“挖矿”获得积分,游戏道具:有3瓶药水&#…

cubeIDE开发, 如何结合FreeRTOS开发STM32程序

一、STM32CubeIDE使用内置的FreeRTOS 不同于STM32CubeIDE使用像RTThread这些第三方物联网系统,STM32CubeIDE在安装时就已经在MiddleWare中间件一栏直接支持了FreeRTOS操作系统。 既然STM32CubeIDE已经把FreeRTOS深度整合到了自家的系统中,所以移植及使用…

深度学习中的正则化——L1、L2 和 Dropout

正则化是一组技术,可以防止神经网络中的过度拟合,从而在面对来自问题域的全新数据时提高深度学习模型的准确性。 在本文中,我们将介绍最流行的正则化技术,称为 L1、L2 和 dropout。 文章目录1. 回顾:过拟合2.什么是正则…

【并发编程】AQS ReentrantLock 底层实现原理

一、概述 synchronized上锁机制是通过对象头来实现的,通过锁升级的过程来完成加锁。(https://blog.csdn.net/zhangting19921121/article/details/106002751) 但是synchronized锁升级的过程犹如一个黑盒,我们无法掌控。因此&…

常见的损失函数

1. 损失函数、代价函数与目标函数 损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误差。   代价函数(Cost Function):是定义在整个训练集上的,是所有样本误差的平均…

07_openstack之安全组与浮动IP

目录 一、环境准备 二、浮动IP 1、浮动IP介绍 2、创建和分配浮动IP 三、安全组 1、安全组介绍 2、创建安全组 3、给云主机绑定安全组 一、环境准备 部署openstack私有云环境:02_openstack私有云部署_桂安俊kylinOS的博客-CSDN博客 创建项目和用户&#xf…

Mac电脑系统降级至10.15 Catalina(2020末代intel)

目录起因前期准备降级系统步骤&#xff08;联网&#xff09;选定开机阶段需要按的快捷键进入简化的macOS激活锁页面macOS实用工具页面抹除磁盘安装降级系统Catalina关于从U盘重装系统相关参考博客起因 这部分碎碎念可以不看> < 20年7月买mac是为了找工作&#xff0c;找到…

[附源码]计算机毕业设计校园商铺Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计药品仓库及预警管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

libcef.dll文件丢失怎么办?丢失对电脑有什么影响?

提到电脑中的系统文件可能大家都是不太了解的&#xff0c;毕竟平时使用电脑的时候也接触不到那些复杂的文件&#xff0c;最多大家只会使用电脑上面的各种功能&#xff0c;不过虽然接触不到但是大家也要适当的了解一下&#xff0c;就比如libcef.dll文件丢失了就会造成电脑系统出…

Word2Vec详解

Word2Vec 基本思想&#xff1a;通过训练将每一个词映射成一个固定长度的向量&#xff0c;所有向量构成一个词向量空间&#xff0c;每一个向量&#xff08;单词)可以看作是向量空间中的一个点&#xff0c;意思越相近的单词距离越近。 如何把词转换为向量&#xff1f; 通常情况…

用Python做个学生管理系统,这不简简单单

前言 最近因为疫情&#xff0c;各大高校都开始放假了&#xff0c;要不就是回家上网课 我朋友的老师真有趣&#xff0c;硬是要我朋友做个学生管理系统打包成exe文件发给他&#xff0c;才能回家 这不就找上我来了&#xff0c;我写完就顺便发篇文章咯 准备工作 环境准备 Pyth…

Java基于springboot+vue的保健用品销售购物商城系统 前后端分离

随着人们生活水平的提高&#xff0c;人们对日常的保健工作也越来越重视&#xff0c;如何拥有一个更加健康的体魄成为当下很多人的一个追求&#xff0c;尤其是我国当下人口老龄化验证&#xff0c;老人因为身体机能的下降所以也要经常补充一些蛋白核矿物质。当下的年轻人也因为生…

【Java】ArrayList扩容规则

文章目录初始大小扩容规则总结初始大小 ArrayList的初始大小由你选定的构造函数决定&#xff0c;如果你使用无参构造函数&#xff0c;那么初始大小为0&#xff0c;是一个空数组。 而如果你选用有参数的构造函数&#xff0c;那么初始大小为你输入的大小 因此如果问你ArrayLis…

[附源码]计算机毕业设计基于springboot的4s店车辆管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

货架穿梭车控制方案

穿梭车控制系统结构示意图 系统组成结构示意图穿梭车服务端模块 PLC设备输出的控制客户端4个电机动作的开关量信号 共8个开关量信号&#xff0c;PNP电路接口,接线端子Q3.0&#xff5e;Q3.7&#xff1b;每个继电器由两个开关量的值共同作用&#xff0c;其控制表如下&#xff1a…

黑马程序员课程SpringMVC听课笔记

目录 SpringMVC概述 入门案例 使用Servlet技术开发web程序流程 使用SpringMVC技术开发web程序流程 导入pom.xml文件 UserController SpringMvcConfig ServletContainersInitConfig POST请求中文乱码处理 代参数GET请求 请求参数与传递 普通参数&#xff1a;请求参数名…

python -- PyQt5(designer)中文详细教程(一)Qt的基本功能

在介绍PyQt5中文详细教程前&#xff0c;如有需要安装PyQt5的同学可以在此 PyQt5安装详细教程_M_Q_T的博客-CSDN博客参考安装&#xff0c;里面有详细的安装内容。 下一章内容python -- PyQt5&#xff08;designer&#xff09;中文详细教程(二)菜单和工具栏 ​​​​​​​http:…