【一起啃书】《机器学习》第八章集成学习

news2024/11/28 0:47:49

文章目录

      • 第八章 集成学习
        • 8.1 个体与集成
        • 8.2 Boosting
        • 8.3 Bagging与随机森林
        • 8.4 结合策略
        • 8.5 多样性

第八章 集成学习

8.1 个体与集成

  集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统、基于委员会的学习等,下面是集成学习的一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来。如果集成中只包含同种类型的个体学习器,则这种集成称为同质集成,里面的个体学习器也叫做“基学习器”;如果包含的不同类型的个体学习器,则这种集成称为异质集成,里面的个体学习器也叫做“组件学习器”。

  在一般经验中,如果把好坏不等的个体学习器掺到一起,那么通常结果会是比最坏的要好一些,比最好的要坏一些,要获得好的集成,个体学习器应“好而不同”,即个体学习器要有一定的“准确性”,并且要有“多样性”,也就意味着学习器间具有差异,如下所示。

  根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法;前者的代表是Boosting,后者的代表是Bagging和“随机森林”。

8.2 Boosting

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

  Boosting算法最著名的代表是AdaBoost,如下所示

  Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过“重赋权法”来实现,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。对无法接受带权样本的学习算法,则可通过“重采样法”来实现,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得到的样本集对基学习器进行训练。需要注意的是,Boosting算法在训练的每一轮都要检查当前生成的基学习器是否满足基本条件。

  下面是西瓜数据集上的一个AdaBoost算法的例子,图中黑色粗线为集成的分类边界,黑色细线为基学习器的分类边界。

8.3 Bagging与随机森林

  如果想得到泛化能力强的集成,集成中的个体学习器应尽可能相互独立,虽然“独立”在现实任务中无法做到,但可以设法使基学习器尽可能具有较大的差异,一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器。

  Bagging是基于自助采样法,对于给定的包含 m m m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样经过 m m m次随机采样操作,就可以得到含 m m m个样本的采样集,最后也可以采样出 T T T个含 m m m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。下面是在西瓜数据集上运行Bagging算法的一个例子。

  随机森林(Random Forest)是Bagging的一个扩展变体,在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有 d d d个属性)中选择一个最优属性;而在随机森林中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含 k k k个属性的子集,然后再从这个子集中选择一个最优属性用于划分,一般情况下,推荐值 k = l o g 2 d k=log_2d k=log2d

  • 随机森林中的基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加进一步提升。
  • 随机森林的训练效率优于Bagging,因为在个体决策树的构建过程中,Bagging使用的是“确定型”的决策树,在选择属性划分时要对节点的所有属性进行考察,而随机森林使用的“随机型”的决策树则只需考察一个子集。

8.4 结合策略

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

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

  目前常用的结合策略有以下几种:

(1)平均法

  在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。

(2)投票法

  • 绝对多数投票法:若某标记得票过半数,则预测为该标记,否则拒绝预测。
  • 相对多数投票法:预测为得票最多的标记,若同时有多个标记获最高票,则从中随机选取一个。
  • 加权投票法:与加权平均法类似,为每个投票方设置权重。

(3)学习法

  当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合,比如Stacking算法,这里我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。

  Stacking算法是一种集成学习方法,它使用多个不同的基学习器对数据进行预测,然后将预测结果作为新的特征输入到一个元学习器中,从而得到最终的分类或回归结果。Stacking算法可以利用不同的基学习器的优势,提高泛化性能,也可以使用交叉验证或留一法来防止过拟合。

8.5 多样性

(1)误差-分歧分解

  误差-分歧分解是一种将集成学习的泛化误差分解为个体学习器的误差和分歧的方法,误差表示个体学习器的平均泛化误差,分歧表示个体学习器之间的不一致性或多样性。误差-分歧分解的公式如下:
E = E ˉ − A ˉ E = \bar E - \bar A E=EˉAˉ
  其中, E E E是集成的泛化误差, E ˉ \bar E Eˉ是个体学习器的平均泛化误差, A ˉ \bar A Aˉ是个体学习器的平均分歧。这个公式表明,个体学习器的准确性越高、多样性越大,则集成越好。误差-分歧分解只适用于回归问题,对于分类问题则难以推广。误差-分歧分解是基于平方误差的推导,而平方误差是回归问题的常用损失函数。对于分类问题,平方误差不一定是一个合适的损失函数,因为它不能很好地反映分类错误的程度。因此,误差-分歧分解难以直接推广到分类学习任务上去。

(2)多样性度量

  • 不合度量

d i s i j = b + c m di{s_{ij}} = \frac{{b + c}}{m} disij=mb+c

   d i s i j dis_{ij} disij的值域为 [ 0 , 1 ] [0,1] [0,1],值越大则多样性越大。

  • 相关系数

ρ i j = a d − b c ( a + b ) ( a + c ) ( c + d ) ( b + d ) {\rho _{ij}} = \frac{{ad - bc}}{{\sqrt {(a + b)(a + c)(c + d)(b + d)} }} ρij=(a+b)(a+c)(c+d)(b+d) adbc

   ρ i j \rho _{ij} ρij的值域为 [ − 1 , 1 ] [-1,1] [1,1],若 h i h_i hi h j h_j hj无关,则值为0;若 h i h_i hi h j h_j hj正相关则值为正,否则为负。

  • Q Q Q-统计量

Q i j = a d − b c a d + b c {Q_{ij}} = \frac{{ad - bc}}{{ad + bc}} Qij=ad+bcadbc

   Q i j Q_{ij} Qij与相关系数 ρ i j \rho _{ij} ρij的符号相同,且 ∣ Q i j ∣ ⩾ ∣ ρ i j ∣ \left| {{Q_{ij}}} \right| \geqslant \left| {{\rho _{ij}}} \right| Qijρij

  • κ \kappa κ-统计量

κ = p 1 − p 2 1 − p 2 p 1 = a + d m p 2 = ( a + b ) ( a + c ) + ( c + d ) ( b + d ) m 2 \begin{aligned} & \kappa = \frac{{{p_1} - {p_2}}}{{1 - {p_2}}} \\ & {p_1} = \frac{{a + d}}{m} \\ & {p_2} = \frac{{(a + b)(a + c) + (c + d)(b + d)}}{{{m^2}}} \end{aligned} κ=1p2p1p2p1=ma+dp2=m2(a+b)(a+c)+(c+d)(b+d)

  其中, p 1 p_1 p1是两个分类器取得一致的概率, p 2 p_2 p2是两个分类器偶然达成一致的概率,若分类器 h i h_i hi h j h_j hj D D D上完全一致,则 κ = 1 \kappa=1 κ=1;若它们仅是偶然达成一致,则 κ = 0 \kappa=0 κ=0 κ \kappa κ通常为非负值,仅在 h i h_i hi h j h_j hj达成一致的概率甚至低于偶然性的情况下取负值。

(3)多样性度量选择

  • 不合度量(disagreement measure)是指个体分类器对同一个样本给出不同分类结果的概率。不合度量越大,表示个体分类器之间的差异越大。
  • 相关系数(correlation coefficient)是指个体分类器之间的线性相关程度。相关系数越小,表示个体分类器之间的差异越大。
  • Q-统计量(Q-statistics)是指两个分类器在同一个样本上同时正确或同时错误的概率与只有一个分类器正确的概率之差。Q统计量越小,表示个体分类器之间的差异越大。
  • κ \kappa κ-统计量( κ \kappa κ-statistics)是指两个分类器在同一个样本上达成一致的概率与偶然达成一致的概率之差。 κ \kappa κ统计量越小,表示个体分类器之间的差异越大。

(4)多样性增强

  • 数据样本扰动:给定初始数据集,可从中产生出不同的数据子集,再利用不同的数据子集训练出不同的个体学习器。
  • 输入属性扰动:从初始属性集中抽取出若干个属性子集,再基于每个属性子集训练一个基学习器。
  • 输出表示扰动:对训练样本的类标记稍作变动,或者对输出表示进行转化,又或将原任务拆解为多个可同时求解的子任务。
    生出不同的数据子集,再利用不同的数据子集训练出不同的个体学习器。
  • 算法参数扰动:通过随机设置不同的参数,产生差别较大的个体学习器。

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

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

相关文章

Mac下好用的日记、电子书阅读器、RSS订阅软件​

Mac下好用的日记笔记本、电子书阅读器和RSS订阅、播客订阅等软件推荐。我们收录到 Mac下好用的日记、电子书阅读器、RSS订阅软件​http://www.webhub123.com/#/home/detail?pLZPL-2ofIu 收录效果如下 ​也可以使用分组视图来查看各类软件网址 ​ 登录后可一键保存全部软件网址…

Java 集合 - Queue 接口

文章目录 1.Queue 接口2.LinkedList3.ArrayDeque4.PriorityQueue5.总结 队列是一种特殊的线性数据结构,在数据的尾部插入元素,在数据的头部删除元素。通常以 FIFO(先进先出)的方式存储和访问数据。Java 中提供了 Queue 接口来实现…

element-ui对话框dialog详解

效果展示 先给大家展示一下大致的样式 代码 <el-dialog draggable destroy-on-close v-model"dialogAddVisible" title"添加用户" width"35%" center><el-form :inline"true" :model"addFormInfo" status-icon …

Java中的String数据类型,String类(字符串)详解

目录 第一章、String概述1&#xff09;String是什么2&#xff09;String长什么样3&#xff09;String的构造方法(声明方式) 第二章、String类的详解1&#xff09;String底层是什么2&#xff09;字符串存储的内存原理/字符串常量池(String Constant Pool&#xff09;3&#xff0…

C语言-【指针二】-【指针运算/指针和数组】

好久不见吖&#xff0c;好啦&#xff0c;言归正传&#xff0c;这篇文章接着上篇文章的尾巴接着介绍指针相关知识哦&#xff01; 一.指针运算 &#xff08;1&#xff09;指针-整数 &#xff08;2&#xff09;指针-指针 &#xff08;3&#xff09;指针的关系运算 接下来&…

Apache Kafka - 高性能原因探究

文章目录 概述图解 概述 Kafka 的高性能主要依赖于以下几个关键因素: 分布式架构:Kafka 采用分布式集群架构,可以水平扩展到上万个节点,支持每秒处理百万级消息。持久化存储:Kafka 使用文件系统持久化存储消息,避免了数据库成为性能瓶颈,大大提高了吞吐量。顺序读写:Kafka 的…

计算机视觉:卷积核的运行过程

本文重点 我们前面从直观角度理解了卷积神经网络的卷积在特征提取的作用,本节课程我们从数学角度来看一下,卷积是如何计算的? 计算步骤 1. 将卷积核与输入图像的某一部分进行逐元素相乘。 2. 将相乘后的结果求和,得到卷积核在该部分的输出值。 3. 重复以上步骤,将卷积核…

达梦8逻辑备份导出导入dexp/dimp

逻辑导出&#xff08;dexp&#xff09;和逻辑导入&#xff08;dimp&#xff09;是 DM 数据库的两个命令行工具&#xff0c;分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成&#xff0c;联机方式是指数据库服务器正常运行过程中进行的备…

数据结构作业4-图

图数据结构的小练习&#xff1a; 文章目录 数据结构作业4-图3 对图1所示的带权无向图。&#xff08;40分&#xff09;解&#xff1a; 4 对于图1所示的带权无向图。&#xff08;20分&#xff09;解&#xff1a; 5 已知带权有向图如下图所示&#xff0c;请利用Dijkstra算法从顶点…

基于操作系统的基础IO

1.c语言中的文件输入输出 在观看本章节的时候&#xff0c;大家可以去看看之前c语言的文件输入输出的有关博客。 好那么废话不多说之间进入本章正题: 我们都知道c程序默认会打开三个输入输出流&#xff1a; stdin&#xff1a;相当于键盘 stdout&#xff1a;相当于显示器 st…

【Linux】基本指令(四)

目录 &#x1f348;一.sort指令&#x1f348; &#x1f349;二.uniq指令&#x1f349; &#x1f34a;三.wc指令&#x1f34a; &#x1f34b;四.which指令&#x1f34b; &#x1f34e;五.whereis指令&#x1f34e; &#x1f34f;六.top指令&#x1f34f; &#x1f350;七…

【玩转 Cloud Studio】腾讯Cloud Studio 云端开发环境上手体验

目录 1、Cloud Studio简介 2、功能体验 3、Cloud Studio优点 4、总结 1、Cloud Studio简介 Cloud Studio&#xff08;云端 IDE&#xff09;是基于浏览器的集成式开发环境&#xff0c;为开发者提供了一个稳定快速的云端工作站。用户在使用 Cloud Studio 时无需安装&#xff0c;只…

【LCD应用编程】绘制点、线、矩形框

之前获取LCD屏幕参数信息时了解到&#xff0c;LCD屏是 FrameBuffer 设备&#xff0c;操作 FrameBuffer 设备 其实就是在读写 /dev/fb0 文件。除此之外&#xff0c;LCD屏上包含多个像素点&#xff0c;绘制点、线、矩形框本质是在修改这些像素点的颜色。 目录 1、定义 lcd_color…

VS+Qt — Vistual Studio 2022+Qt6安装教程以及解决Qt Vistual Studio Tools下载慢和VS无法打开.ui进行设计的问题

目录 Vistual Studio 2022下载 Qt下载 Qt Vistual Studio Tools下载 方法1 方法2 方法3 方法4 Vistual Studio 2022配置Qt6 创建Qt项目 若VS无法打开.ui进行设计 Vistual Studio 2022下载 以前因为安装库的关系&#xff0c;已经下载过VS2022了&#xff0c;详细请看这…

C++ 学习 ::【基础篇:05】:C++ 函数重载认识及使用、简单介绍:C++ 支持函数重载的原因

本系列 C 相关文章 仅为笔者学习笔记记录&#xff0c;用自己的理解记录学习&#xff01;C 学习系列将分为三个阶段&#xff1a;基础篇、STL 篇、高阶数据结构与算法篇&#xff0c;相关重点内容如下&#xff1a; 基础篇&#xff1a;类与对象&#xff08;涉及C的三大特性等&#…

CSS之基础扫盲

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 目录 文章目录 二、CSS基础语法 2.1 CSS引入方式 2.1.1 内部样式 2.1.2 外部样式 2.1.3 内联样式 2.2 CSS选择器 2.2.1 标签选择器 2.2.2 类选择器 2.2.3 id选择器 2.2.4 通配符选择器 2.2…

HNU-操作系统OS-实验Lab7

OS_Lab7_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf (学号 202108010XXX) 实验目的 理解操作系统的同步互斥的设计实现;理解底层支撑技术:禁用中断、定时器、等待队列;在ucore中理解信号量(semaphore)机制的具体实现;理解管程机制,在ucore内…

动力电池管理系统(BMS)

BMS技术 目录 BMS技术 一、BMS简介 二、BMS主要功能 1、参数检测 2、剩余电量&#xff08;SOC&#xff09;估计 3、充放电控制 4、热管理 5、均衡控制 6、故障诊断 7、信息监控 8、参数标定 9、CAN总线接口 三、BMS架构组成 1、BMS的拓扑架构 1、1集中式架构的B…

JavaEE进阶(5/27)Spring Boot

目录 1.认识Spring Boot 2.Spring Boot的优点 3.SpringBoot项目创建 4.resource文件夹 和test文件夹 5.使用一个Spring Boot项目 1.认识Spring Boot Spring Boot 中的Boot 是启动引导的意思 如果Spring相比于普通java开发是从走演变到了汽车&#xff0c;那么Spring boot 相比…

【博客历程】比起方法和技巧,我更想谈质量与坚持

【博客历程】比起方法和技巧&#xff0c;我更想谈质量与坚持 文章目录 【博客历程】比起方法和技巧&#xff0c;我更想谈质量与坚持[toc]我的第一篇博客为什么坚持写博客为什么选择CSDN何为质量未来 还没准备好&#xff0c;等我怎样怎样时再 还在犹豫什么时候开始&#xff0c;…