sheng的学习笔记-AI-集成学习(adaboost,bagging,随机森林)

news2024/12/25 23:27:43

ai目录:sheng的学习笔记-AI目录-CSDN博客

目录​​​​​​​

集成学习

什么是集成学习

集成学习一般结构:

示意图

弱学习器

经典算法

Boosting

什么是boosting

方法图

AdaBoost 算法

AdaBoost示意图

流程解析:

错误分类率error

权重

​编辑

Adaboost 集成

算法

西瓜书的算法

其他资料补充算法 

算法解释

​编辑​编辑

Bagging

算法 

随机森林

bagging,boosting,随机森林的比较 

bagging和boosting比较

bagging和随机森林比较

组合策略

平均法

投票法

学习法

多样性增强

数据样本扰动

输入属性扰动

输出表示扰动

算法参数扰动

参考文章


集成学习

什么是集成学习

集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)等

集成学习一般结构:

先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生,例如C4.5决策树算法、BP神经网络算法等,此时集成中只包含同种类型的个体学习器,例如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,这样的集成是“同质”的(homogeneous)。同质集成中的个体学习器亦称“基学习器”(base learner),相应的学习算法称为“基学习算法”(base learning algorithm)。集成也可包含不同类型的个体学习器,例如同时包含决策树和神经网络,这样的集成是“异质”的(heterogenous)。异质集成中的个体学习器由不同的学习算法生成,这时就不再有基学习算法;相应的,个体学习器一般不称为基学习器,常称为“组件学习器”(component learner)或直接称为个体学习器

示意图

弱学习器

弱学习器常指泛化性能略优于随机猜测的学习器;例如在二分类问题上精度略高于50%的分类器。

集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对“弱学习器”(weak learner)尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。但需注意的是,虽然从理论上来说使用弱学习器集成足以获得好的性能,但在实践中出于种种考虑,例如希望使用较少的个体学习器,或是重用关于常见学习器的一些经验等,人们往往会使用比较强的学习器。

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

基学习器的误差相互独立。在现实任务中,个体学习器是为解决同一个问题训练出来的,它们显然不可能相互独立!事实上,个体学习器的“准确性”和“多样性”本身就存在冲突。一般的,准确性很高之后,要增加多样性就需牺牲准确性。事实上,如何产生并结合“好而不同”的个体学习器,恰是集成学习研究的核心

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

经典算法

Boosting

什么是boosting

Boosting是一族可将弱学习器提升为强学习器的算法

在分类问题中,它通过改变训练样本的权重学习多个分类器,并将这些分类器们进行线性组合来提高分类的能力。

通过从训练数据构建模型,然后创建第二个模型来尝试纠正第一个模型中的错误来完成的。添加模型直到完美预测训练集或添加最大数量的模型。提升学习的每一步产生弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型的生成都是依据损失函数的梯度方式,就称为梯度提升

Boosting指的是通过结合粗略和适度不准确的经验法则来产生非常准确的预测规则的一般问题。

提升学习技术的意义:如果一个问题存在弱预测模型,那么可以通过提升技术的方法得到一个强预测模型

Boosting族算法最著名的代表是AdaBoost

常见 算法:

  • AdaBoost

  • Gradient Boosting(GBDT)

  • XGboost

方法图

AdaBoost 算法

AdaBoost的核心就是求当前分类器的权重和更新样本的误差。它可以用于提高任何机器学习算法的性能。最好与弱学习器一起使用。

这意味着难以分类的样本会收到越来越大的权重,直到算法识别出正确分类这些样本的模型。

与AdaBoost一起使用的最合适也是最常见的算法是具有一层的决策树。因为这些树很短,并且只包含一个用于分类的决策,所以它们通常被称为决策树桩。

AdaBoost示意图

训练数据集中的每个实例都被加权。初始权重设置为:Weight(Xi) = 1/N

其中Xi是第i个训练实例,N是训练实例的总数。(训练实例:即用于训练模型的样本数据)

流程解析:

错误分类率error

每个实例都有自己独立的权重w,通常我们会对w进行归一化,使得w之和sum(w)=1。

使用加权之后的样本作为训练数据,以弱分类器(决策树桩)进行训练。仅支持二元(两类)分类问题,因此每个决策树桩对一个输入变量做出一个决策,并为第一类或第二类输出+1或-1值。

为训练后的模型计算错误分类率。传统的计算方式如下:

其中error是误分类率,correct是模型正确预测的训练实例数,N是训练实例总数。例如,如果模型正确预测了100个训练实例中的68个,则错误率或误分类率为(100-68)/100或0.32 。

将以上方式修改为加权训练实例:

这是误分类率的加权和,w是训练实例i的权重,terror是训练实例i的预测误差,terror为1时是误分类,为0时是正确分类,sum是对N个实例的求和

例如,如果我们有三个训练实例,权重分别为0.01、0.5和0.2.预测值为-1、-1和-1,实例中的真实输出变量为-1、1和-1,则terror为0、1和0。误分类率将计算为:

error = (0.01*0 + 0.5*1 + 0.2*0)/(0.01+0.5+0.2) = 0.704

权重

为经过训练的模型计算阶段权值,该值为模型做出的任何预测提供权重。训练模型的阶段值计算如下:

其中stage是用于对模型的预测进行加权的阶段值,即当前阶段模型的权重,ln()是自然对数,error是模型的误分类率。阶段权重stage的作用是,更准确的模型对最终预测的权重贡献更大

stage的图像如下:横轴是error,纵轴是stage,小于0.5值为正,大于0.5值为负

其中w是特定训练实例的权重,e是数值常数,stage是弱分类器的误分类率,terror是弱分类器预测输出变量的错误训练实例,评估为:    terror = 0 if (y==p), otherwise 1

e的x方的图像如下

其中y是训练实例的输出变量,p是弱学习器的预测结果。

如果训练实例被正确分类,则权重不发生改变,如果被错误分类,则增大权重

Adaboost 集成

算法

西瓜书的算法

西瓜书的算法,解释的比较隐晦,大概看看

其他资料补充算法 

算法解释

其中exp就是e的指数,图像上面有对于w的计算,如果正确分类样本,变量取-a,值会很少,如果错误分类样本,变量取a,exp(a)值会大

从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。我们以决策树桩为基学习器,在表4.5的西瓜数据集3.0α上运行AdaBoost算法,不同规模(size)的集成及其基学习器所对应的分类边界如图8.4所示

Bagging

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

算法 

随机森林

随机森林(Random Forest,简称RF)是Bagging的一个扩展变体。

RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。

具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

这里的参数k控制了随机性的引入程度:若令k=d,则基决策树的构建与传统决策树相同;若令k=1,则是随机选择一个属性用于划分;一般情况下,推荐值k=log2d。

随机森林的收敛性与Bagging相似。随机森林的起始性能往往相对较差,特别是在集成中只包含一个基学习器时。

因为通过引入属性扰动,随机森林中个体学习器的性能往往有所降低。然而,随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差。值得一提的是,随机森林的训练效率常优于Bagging,因为在个体决策树的构建过程中,Bagging使用的是“确定型”决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的“随机型”决策树则只需考察一个属性子集。

bagging,boosting,随机森林的比较 

bagging和boosting比较

bagging和随机森林比较

组合策略

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

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

平均法

必须使用非负权重才能确保集成性能优于单一最佳个体学习器,因此在集成学习中一般对学习器的权重施以非负约束。

加权平均法的权重一般是从训练数据中学习而得,现实任务中的训练样本通常不充分或存在噪声,这将使得学出的权重不完全可靠。尤其是对规模比较大的集成来说,要学习的权重比较多,较容易导致过拟合。

因此,实验和应用均显示出,加权平均法未必一定优于简单平均法。一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。

投票法

投票法通常用于分类任务中

不同类型预测值不能混用

学习法

多样性增强

欲构建泛化能力强的集成,个体学习器应“好而不同”:个体学习器准确性越高、多样性越大,则集成越好

常见做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动。

数据样本扰动

给定初始数据集,可从中产生出不同的数据子集,再利用不同的数据子集训练出不同的个体学习器。数据样本扰动通常是基于采样法,例如在Bagging中使用自助采样,在AdaBoost中使用序列采样。此类做法简单高效,使用最广。对很多常见的基学习器,例如决策树、神经网络等,训练样本稍加变化就会导致学习器有显著变动,数据样本扰动法对这样的“不稳定基学习器”很有效;然而,有一些基学习器对数据样本的扰动不敏感,例如线性学习器、支持向量机、朴素贝叶斯、k近邻学习器等,这样的基学习器称为稳定基学习器(stable base learner),对此类基学习器进行集成往往需使用输入属性扰动等其他机制

输入属性扰动

子空间一般指从初始的高维属性空间投影产生的低维属性空间,描述低维空间的属性是通过初始属性投影变换而得,未必是初始属性

d′小于初始属性数d。Ft包含d'个随机选取的属性,Dt仅保留Ft中的属性。

训练样本通常由一组属性描述,不同的“子空间”(subspace,即属性子集)提供了观察数据的不同视角。显然,从不同子空间训练出的个体学习器必然有所不同。著名的随机子空间(random subspace)算法]就依赖于输入属性扰动,该算法从初始属性集中抽取出若干个属性子集,再基于每个属性子集训练一个基学习器,算法描述如图8.11所示。对包含大量冗余属性的数据,在子空间中训练个体学习器不仅能产生多样性大的个体,还会因属性数的减少而大幅节省时间开销,同时,由于冗余属性多,减少一些属性后训练出的个体学习器也不至于太差。若数据只包含少量属性,或者冗余属性很少,则不宜使用输入属性扰动法。

输出表示扰动

此类做法的基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如“翻转法”(Flipping Output)随机改变一些训练样本的标记;也可对输出表示进行转化,如“输出调制法”(Output Smearing)将分类输出转化为回归输出后构建个体学习器;还可将原任务拆解为多个可同时求解的子任务,如ECOC法利用纠错输出码将多分类任务拆解为一系列二分类任务来训练基学习器。

算法参数扰动

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

例如“负相关法”(Negative Correlation)显式地通过正则化项来强制个体神经网络使用不同的参数。对参数较少的算法,可通过将其学习过程中某些环节用其他类似方式代替,从而达到扰动的目的,例如可将决策树使用的属性选择机制替换成其他的属性选择机制。值得指出的是,使用单一学习器时通常需使用交叉验证等方法来确定参数值,这事实上已使用了不同参数训练出多个学习器,只不过最终仅选择其中一个学习器进行使用,而集成学习则相当于把这些学习器都利用起来;由此也可看出,集成学习技术的实际计算开销并不比使用单一学习器大很多

参考文章

机器学习  作者:周志华

https://baijiahao.baidu.com/s?id=1714358199247317942&wfr=spider&for=pc

6.集成学习 - 二、 Boosting - 《AI算法工程师手册》 - 书栈网 · BookStack

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

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

相关文章

「Qt Widget中文示例指南」如何实现一个滑动条(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 滑动条示例展示了如…

618在即!「企业商城」作战攻略曝光,解锁电商化采购新模式

“618”购物狂欢大促即将到来,凡是大促,必为商机。 当前,618正在成为拉动品牌销量增长的重要战役,这已经是很多商家的共识。 网上商城交易采购组织形式公开透明、成本低、效率高的优势凸显,逐渐成为各企业采购的主流模…

苹果电脑压缩视频的软件,苹果电脑怎么压缩视频文件大小

在数字时代的浪潮中,视频已成为我们日常生活和工作中不可或缺的一部分。然而,视频文件的大小也在不断攀升,给存储和传输带来了不小的挑战。因此,视频压缩技术应运而生,成为解决这一问题的关键。本文将详细介绍视频压缩…

Java17 --- redis7缓存双写一致性

一、缓存双写一致性 如果redis中有数据:需要和数据库中的值相同。如果redis中没有数据:数据库中的值要是最新值,且准备回写redis。只读缓存。读写缓存:①、同步直写策略:写数据库后也同步写redis缓存,缓存…

ChatGPT的问题与回复的内容导出(Chorme)

我给出两种方式,第一种方式无使用要求,第二种方式必须安装Chorme 个人更推荐第二种方式 第一种方式:使用chatgpt自带的数据导出 缺点:会将当前未归档的所有聊天记录导出,发送到你的电子邮箱中 第二种方式&#xff1a…

C语言 | Leetcode C语言题解之第155题最小栈

题目: 题解: //单调栈 单调递减 typedef struct {//正常 stackint stack[10000];int stackTop;//辅助 stackint minStack[10000];int minStackTop; } MinStack;MinStack* minStackCreate() {MinStack* newStack (MinStack *) malloc(sizeof(MinS…

【Git】多人协作 -- 详解

一、多人协作(1) ⽬前,我们所完成的工作如下: 基本完成 Git 的所有本地库的相关操作,git 基本操作,分支理解,版本回退,冲突解决等等。 申请码云账号,将远端信息 clone…

C++通过VS2022使用Conan2.0安装fmt库实现控制台彩色打印

Conan是一个开源的C/C包管理器,用于管理和构建C/C项目的依赖关系。它允许开发人员轻松地集成第三方库、工具和资源到他们的项目中,并管理这些依赖项的版本、构建选项和配置。 Conan官方提供了对应的VS2022扩展插件,通过这个插件再搭配VS2022…

路由控制和策略路由

文章目录 一、路由控制(1)、前言1.1.1-路由策略 (2)、正反掩码和通配符1.2.1-通配符 (3)、ACL1.3.1-ACL步长1.3.2-步长的作用1.3.3-TCP/UDP端口号 实验1:实验2: 二、前缀列表实验1:2.1.1-前缀列表的表达式2…

一平台一张图,撑起危化生产“安全伞”

安全生产是永恒的主题,是一切工作的基础。 风险辨识不到位、特种作业不合规、隐患治理不彻底、应急能力不匹配……如何从消除事故隐患、从根本上解决问题?随着新一代信息技术和安全生产的深度融合,安全生产的管理方式也在发生深刻变化。 提前…

SQL Server入门-SSMS简单使用(2008R2版)-1

环境: win10,SQL Server 2008 R2 参考: SQL Server 新建数据库 - 菜鸟教程 https://www.cainiaoya.com/sqlserver/sql-server-create-db.html 第 2 课:编写 Transact-SQL | Microsoft Learn https://learn.microsoft.com/zh-cn/…

百数私有化本地部署技术解析,附带独家优惠政策

数据驱动的时代,数据安全性对于每个企业来说都至关重要。私有化本地部署作为一种高效的数据管理方式,越来越受到企业的青睐。然而,高昂的部署费用常常让企业望而却步。 作为一家深耕办公领域10年的低代码公司,百数以本地化部署起…

监控局域网电脑屏幕的办法,最简单的三种方法,好用!

在现代企业管理和家庭教育环境中,对局域网内电脑屏幕进行有效监控成为了保障信息安全、提升工作效率和监督行为规范的重要手段。 监控局域网电脑屏幕不仅可以帮助管理者了解员工的工作状态,确保资源的合理使用,还能在一定程度上预防潜在的网…

AI绘画Stable Diffusion 挽救渣图的神器—Loopback Scaler脚本,你值得拥有!

大家好,我是向阳 今天这篇文章就是围绕着开局的这两张原图开始的。 在Stable diffusion甚至当前所有的AI画图工具里面,AI生成内容随机性都是一个很大的问题。 我们经常遇到一张图构图不错但是脸崩了,又或者人物形象不错但是背景画得崩了这…

海南云亿商务咨询有限公司抖店开店怎么样?

在数字化浪潮席卷全球的今天,电商行业日新月异,其中抖音电商以其独特的短视频直播模式,迅速崛起成为电商领域的新贵。海南云亿商务咨询有限公司,作为抖音电商服务的佼佼者,凭借专业的团队和丰富的经验,致力…

人体关键点检测-基于Gradio完成应用开发

前言 本次分享将带领大家从 0 到 1 完成一个人体姿态估计任务,覆盖数据准备、模型训练、推理部署和应用开发的全流程,项目将采用以PaddlePaddle为核心的飞桨深度学习框架进行开发,并总结开发过程中踩过的一些坑,希望能为有类似项…

通过nginx转发后应用偶发502bad gateway

序言 学习了一些东西,如何才是真正自己能用的呢?好像就是看自己的潜意识的反应,例如解决了一个问题,那么下次再碰到类似的问题,能直接下意识的去找到对应的信息,从而解决,而不是和第一次碰到一样…

重生奇迹MU召唤术师简介

出生地:幻术园 性 别:女 擅 长:召唤幻兽、辅助魔法&攻击魔法 转 职:召唤巫师(3转) 介 绍:从古代开始流传下来的高贵的血缘,为了种族纯正血缘的延续及特殊使用咒术的天赋&…

那些年你用过的iOS开发工具

版权说明 本文转载于《程序员》杂志 2014 年 6 月刊。 前言 从苹果发明 iPhone 起,AppStore 上的一个又一个类似 flappy bird 的一夜暴富的故事刺激着大量开发者加入移动开发大军。随着这些开发者出现的,还有大量方便 iOS 开发者的各种工具。这些工具…

琪朗护眼大路灯推荐入手吗?书客、琪朗、雷士落地灯测评大比拼!

护眼大路灯现在的风越来越大,它是一种能够改善光线质量的工具,通过光源的设计、技术的调校、防眩光的设计等,利用LED全光谱光源的高能效、长寿命光色稳定性的优点,搭载专研的护眼黑科技技术,以及采用防眩光设计&#x…