五、西瓜书——集成学习

1.个体与集成

        集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能,这对“弱学习器”(weak learner)尤为明显因此集成学习的很多理论研究都是针对弱学习器进行的而基学习器有时也被直接称为弱学习器。

        要获得好的集成个体学习器应“好而不同”,即个体学习器要有一定的“准确性”,即学习器
不能太坏,并且要有“多样性”(diversity),即学习器间具有差异 

2.Boosting         

        Boosting是一族可将弱学习器提升为强学习器的算法,这族算法的工作机制类似: 先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器: 如此重复进行直至基学习器数目达到事先指定的值 T,最终将这T个基学习器进行加权结合

        Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过“重赋权法”(re-weighting)实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重.

        对无法接受带权样本的基学习算法,则可通过“重采样法”(resampling)来处理,即在每一轮学习中根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练.

        一般而言,这两种做法没有显著的优劣差别.需注意的是,若采用“重采样法”,则可获得“重启动”机会以避免训练过程过早停止[Kohavi and Wolpert,1996],即在抛弃不满足条件的当前基学习器之后,可根据当前分布重新对训练样本进行采样,再基于新的采样结果重新训练出基学习器从而使得学习过程可以持续到预设的T轮完成。

        从偏差-方差分解的角度看,Boosting 主要关注降低偏差,因此Bosting能基于泛化性能相当弱的学习器构建出很强的集成。

3.Bagging与随机森林  

(1)Bagging    

        Bagging是针对于样本而言的,它直接基于自助采样法(bootstrap sampling),给定包含 m个样本的数据集我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过 m次随机采样操作,我们得到含 m个样本的采样集初始练集中有的样本在采样集里多次出现,有的则从未出现由式(2.1)可知初始训练集中约有 63.2%的样本出现在采样集中
        照这样,我们可采样出T个含 m 个训练样本的采样集然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合.这就是 Bagging 的基本流程在对预测输出进行结合时,Bagging 通常对分类任务使用简单投票法,对回归任务使用简单平均法.若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。

        与标准 AdaBoost 只适用于二分类任务不同,Bagging 能不经修改地用于多分类、回归等任务

        值得一提的是,自助采样过程还给Bagging 带来了另一个优点:由于每个基学习器只使用了初始训练集中约 63.2%的样本,剩下约 36.8%的样本可用作验证集来对泛化性能进行“包外估计”。

        包外样本还有许多其他用途,例如当基学习器是决策树时,可使用包外样本来辅助剪枝,或用于估计决策树中各结点的后验概率,以辅助对零训练样本结点的处理:当基学习器是神经网络时可使用包外样本来辅助早期停止,以减小过拟合风险. 

        从偏差-方差分解的角度看,Bagging 主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。

(2) 随机森林

        随机森林是针对属性而言的,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分.这里的参数k 控制了随机性的引入程度: 若令 k =d则基决策树的构建与传统决策树相同,若令k =1,则是随机选择一个属性用于划分;一般情况下,推荐值 k = log2 d

        随机森林对 Bagging 只做了小改动,但是与 Bagging 中基学习器的“多样性,仅通过样本扰动(通过对初始训练集采样)而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升.

4.结合策略

        学习器结合可能会从三个方面带来好处:

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

         

    (1)平均法

                            

 

        加权平均法的权重一般是从训练数据中学习而得,现实任务中的训练样本通常不充分或存在噪声,这将使得学出的权重不完全可靠,尤其是对规模比较大的集成来说,要学习的权重比较多,较容易导致过拟合.因此,实验和应用均显示出加权平均法未必一定优于简单平均法,一般而言在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法 

(2)投票法

  • 绝对多数投票法(majority voting):即若某标记得票过半数,则预测为该标记;否则拒绝预测
  • 相对多数投票法(plurality voting):即预测为得票最多的标记,若同时有多个标记获最高票,则从中随机选取一个
  • 加权投票法(weightedvoting)         

 

        标准的绝对多数投票法(8.24)提供了“拒绝预测”选项,这在可靠性要求较高的学习任务中是一个很好的机制,但若学习任务要求必须提供预测结果,则绝对多数投票法将退化为相对多数投票法.因此,在不允许拒绝预测的任务中,绝对多数、相对多数投票法统称为“多数投票法” 

考虑输出类型: 

        

                

 (3)学习法

        Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器.在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记        

        需要注意的是,次级训练集的生成并不是基于初始的训练集,使用训练集生成很容易导致过拟合。而是采用k折交叉验证的方式,使用验证集的输出作为次级训练集。 

        次级学习器的输入属性表示和次级学习算法对 Stacking集成的泛化性能有很大影响.有研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,用多响应线性回归(Multi-response Linear Regression,简称MLR)作为次级学习算法效果较好[Ting and Witten,1999],在MLR中使用不同的属性集更佳[Seewald,2002]

        贝叶斯模型平均(Bayes Model Averaging,简称 BMA)基于后验概率来为不同模型赋予权重,可视为加权平均法的一种特殊实现.[Clarke,2003] 对Stacking 和 BMA 进行了比较,理论上来说,若数据生成模型恰在当前考虑的模型中且数据噪声很少,则 BMA 不差于 Stacking; 然而在现实应用中无法确保数据生成模型一定在当前考虑的模型中,甚至可能难以用当前考虑的模型来进行近似,因此Stacking 通常优于 BMA因为其鲁棒性比 BMA 更好而且BMA对模型近似误差非常敏感

5.多样性 

(1)误差——分歧分解

        通过数学推导可以得到模型泛化误差、基学习器的泛化误差、个体分歧值之间的关系:

         

       欲构建泛化能力强的集成,个体学习器应“好而不同,事实个体学习的“准确”性“多样性”本身就在冲突.一般的,准确性很高之后,要增加多样性就需牺牲准确性. 

(2)多样性度量

   

(3)多样性增强

  • 数据样本扰动:给定初始数据集,可从中产生出不同的数据子集,再利用不同的数据子集
    训练出不同的个体学习器.例如:图像中的数据增强手段
  • 输入属性扰动:训练样本通常由一组属性描述,不同的“子空间”(subspace,即属性子集)提供了观察数据的不同视角.显然从不同子空间训练出的个体学习器必然有所不同。
  • 输出表示扰动:此类做法的基本思路是对输出表示进行操纵,以增强多样性。可对训练样本的类标记稍作变动,如“翻转法”(Flipping Output)随机改变一些训练样本的标记:也可对输出表示进行转化,如“输出调制法”(OutputSmearing)[Breiman,2000] 将分类输出转化为回归输出后构建个体学习器,还可将原任务拆解为多个可同时求解的子任务,如ECOC 法利用纠错输出码将多分类任务拆解为一系列二分类任务来训练基学习器
  • 算法参数扰动:基学习算法一般都有参数需进行设置,例如神经网络的隐层神经元数、初
    始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。学习器时通常需使用交叉验证等方法来确定参数值,这事实上已使用了不同参数训练出多个学习器,只不过最终仅选择其中一个学习器进行使用,而集成学习则相当于把这些学习器都利用起来; 由此也可看出集成学习技术的实际计算开销并不比使用单一学习器大很多

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

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

相关文章

详解JavaScript的函数

详解 JavaScript 的函数 函数的语法格式 创建函数/函数声明/函数定义 function 函数名(形参列表) { 函数体 return 返回值; // return 语句可省略 } 函数调用 函数名(实参列表) // 不考虑返回值 返回值 函数名(实参列表) // 考虑返回值 示例代码 //定义的没有参数列表&am…

5个好玩神奇还免费的工具网站收藏不后悔-搜嗖工具箱

生命倒计时 http://www.thismuchlonger.com 这是一个相哇塞的网站,可以让我们静下心来好好想想我们来这个世界究竟为了什么,因为当我们作为命运的主宰者。敲打键盘设定好自己一生长度的时候,我们的剩余寿命已经成绝对值,一旦生命…

mysql5.7配置主从

原理: MySQL主从复制的工作原理如下:1. 主服务器产生Binlog日志当主服务器的数据库发生数据修改操作时,如INSERT、UPDATE、DELETE语句执行,主服务器会记录这些操作的日志信息到二进制日志文件中。2. 从服务器读取Binlog日志 从服务器会向主服务器发送请求,主服务器把…

Linux网络编程——socket 通信基础

Linux网络编程——socket 通信基础 1. socket 介绍2. 字节序2.1 简介2.2 字节序举例2.3 字节序转换函数 3. socket 地址3.1 通用 socket 地址3.2 专用 socket 地址 4. IP地址转换(字符串ip -> 整数,主机、网络字节序的转换 )5. TCP 通信流…

智能驾驶规划控制理论学习05-车辆运动学规划案例分析

目录 案例一——Hybrid A*(基于正向运动学) 1、基本思想 2、 实现流程 3、启发函数设计 4、分析扩张(Analytic Expansions) 5、分级规划(Hierarchical planning) 案例二——State Lattice Planning&…

Vue3快速上手(十六)Vue3路由传参大全

Vue3路由传参 一、传参的多种方式 1.1 拼接方式 这种方式适合传递单个参数的情况&#xff0c;比如点击查看详情&#xff0c;传个id这样的场景 传参&#xff1a; <RouterLink to"/person?id1" active-class"active">person</RouterLink> …

RabbitMQ相关问题

RabbitMQ相关问题 一、RabbitMQ的核心组件和工作原理&#xff1f;二、如何保证消息可靠投递不丢失的&#xff1f;三、RabbitMQ如何保证消息的幂等性&#xff1f;四、什么是死信队列&#xff1f;死信队列是如何导致的&#xff1f;五、RabbitMQ死信队列是如何导致的&#xff1f;六…

PDF 解析问题调研

说点真实的感受 &#xff1a;网上看啥组件都好&#xff0c;实际测&#xff0c;啥组件都不行。效果好的不开源收费&#xff0c;开源的效果不好。测试下来&#xff0c;发现把组件融合起来&#xff0c;还是能不花钱解决问题的&#xff0c;都是麻烦折腾一些。 这里分享了目前网上能…

数据结构 第3章 栈、队列和数组(一轮习题总结)

第3章 栈、队列和数组 3.1 栈3.2 队列3.3 栈与队列的应用3.4 数组和特殊矩阵 3.1 栈&#xff08;1 10 11 20&#xff09; 3.2 队列&#xff08;6 12 14 17&#xff09; 3.3 栈与队列的应用&#xff08;6 11&#xff09; 3.4 数组和特殊矩阵 3.1 栈 T1 栈和队列具有相同的逻辑…

一周学会Django5 Python Web开发-Django5详细视图DetailView

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计28条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

Linux-信号2

文章目录 前言一、信号是如何保存的&#xff1f;int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset (sigset_t *set, int signo);int sigdelset(sigset_t *set, int signo);int sigismember&#xff08;const sigset_t *set, int signo);int sigpen…

leetcode 长度最小的子数组

在本题中&#xff0c;我们可以知道&#xff0c;是要求数组中组成和为target的最小子数组的长度。所以&#xff0c;我们肯定可以想到用两层for循环进行遍历&#xff0c;然后枚举所有的结果进行挑选&#xff0c;但这样时间复杂度过高。 我们可以采用滑动窗口&#xff0c;其实就是…

NoSQL--1.虚拟机网络配置

目录 1.初识NoSQL 1.1 NoSQL之虚拟机网络配置 1.1.1 首先&#xff0c;导入预先配置好的NoSQL版本到VMware Workstation中 1.1.2 开启虚拟机操作&#xff1a; 1.1.2.1 点击开启虚拟机&#xff1a; 1.1.2.2 默认选择回车CentOS Linux&#xff08;3.10.0-1127.e17.x86_64) 7 …

同样是证书,NPDP和PMP有什么区别?

PMP和NPDP的区别是啥&#xff1f; PMP、NPDP证书考哪个更有用&#xff1f;还是两个都考&#xff1f; PMP和NPDP哪个更适合现在及以后发展&#xff1f; PMP和NPDP这两哪个含金量更高&#xff1f; 一&#xff0c;关于PMP和NPDP PMP和NPDP都是美国PMI/PDMA的专业考试&#xf…

C语言中的分支和循环语句:从入门到精通

分支和循环语句 1. 前言2. 预备知识2.1 getchar函数2.2 putchar函数2.3 计算数组的元素个数2.4 清屏2.5 程序的暂停2.6 字符串的比较 3. 结构化3.1 顺序结构3.2 分支结构3.3 循环结构 4. 真假性5. 分支语句&#xff08;选择结构&#xff09;5.1 if语句5.1.1 语法形式5.1.2 else…

Stable Cascade又升级了,现在只需要两个模型

Stable Cascade这个模型&#xff0c;大家如果还有印象的话&#xff0c;是需要下载三个模型的&#xff0c;分别是Stage_a,Stage_b和Stage_c,如果全都下载下来&#xff0c;需要20多个G&#xff0c;但是最近使用ComfyUI做尝试的时候&#xff0c;发现官方的案例中已经没有用到单独的…

数据审计 -本福德定律 Benford‘s law (sample database classicmodels _No.6)

数据审计 -本福德定律 Benford’s law 准备工作&#xff0c;可以去下载 classicmodels 数据库资源如下 [ 点击&#xff1a;classicmodels] 也可以去我的博客资源下载 文章目录 数据审计 -本福德定律 Benfords law 前言一、什么是 本福德定律&#xff1f;二、数学公式三、应用…

单细胞Seurat - 降维与细胞标记(4)

本系列持续更新Seurat单细胞分析教程&#xff0c;欢迎关注&#xff01; 非线形降维 Seurat 提供了几种非线性降维技术&#xff0c;例如 tSNE 和 UMAP&#xff0c;来可视化和探索这些数据集。这些算法的目标是学习数据集中的底层结构&#xff0c;以便将相似的细胞放在低维空间中…

Grpc项目集成到java方式调用实践

背景&#xff1a;由于项目要对接到grcp 的框架&#xff0c;然后需要对接老外的东西&#xff0c;还有签名和证书刚开始没有接触其实有点懵逼。 gRPC 是由 Google 开发的高性能、开源的远程过程调用&#xff08;RPC&#xff09;框架。它建立在 HTTP/2 协议之上&#xff0c;使用 …