集成学习的小九九

news2024/11/19 9:23:16

        集成学习(Ensemble Learning)是一种机器学习的方法,通过结合多个基本模型的预测结果来进行决策或预测。集成学习的目标是通过组合多个模型的优势,并弥补单个模型的不足,从而提高整体性能。

集成学习的主要策略

在集成学习中,有两个主要的策略:平均法和投票法。

  • 平均法:平均法通过对多个模型的预测结果进行平均或加权平均,得到最终的预测结果。例如,对于回归问题,可以计算多个模型的预测值的平均值作为最终的预测结果;对于分类问题,可以采用投票法来进行决策。
  • 投票法:投票法通过对多个模型的预测结果进行投票,选择得票最多的类别作为最终的预测结果。例如,对于分类问题,可以将每个模型的预测结果看作一个投票,并选择得票最多的类别作为最终的分类结果。

集成学习的优势

集成学习的优势在于:

  1. 提高泛化能力:集成学习能够通过结合多个模型的预测结果,减少单个模型的偏见和方差,从而提高整体的泛化能力,降低过拟合的风险。
  2. 提高预测准确性:通过集成多个模型,可以利用各自模型的优势,弥补单个模型的不足,从而提高最终的预测准确性。
  3. 增加稳定性:集成学习能够降低模型的不确定性,提高系统的稳定性和鲁棒性,对异常数据或噪声具有较好的抗干扰能力。

集成学习分类 

目前的集成学习方法分为两类(Boosting类方法、Bagging类方法):
1)个体学习器间存在强依赖关系、必须串行生成的序列化方法,代表算法Boosting类方法;
2)个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表算法Bagging类方法;bagging类方法又可分为:bagging、随机森林等。 boosting类方法又可分为:AdaBoost、GBDT等。

Bagging类方法

个体学习器间不存在强依赖关系、可同时生成的并行化方法

Bagging类方法结构图

 

主要代表方法 

Bagging

定义是通过不同模型的训练数据集的独立性来提高不同模型之间的独立性我们在原始训练集上进行有放回的随机采样得到𝑀 个比较小的训练集并训练𝑀 个模型然后通过投票的方法进行模型集成。

Bagging方法结构图

Bagging的步骤如下:

  1. 自助采样:从原始训练集中通过有放回地随机采样生成多个不同的采样集(有些样本可能会被重复采样,有些样本可能被遗漏),每个采样集的大小与原始训练集相同。
  2. 基本模型训练:使用每个采样集独立地训练一个基本模型,可以使用相同的学习算法或不同的学习算法。每个模型都是在略有差异的数据子集上进行训练的。
  3. 预测整合:对于回归问题,通常将每个基本模型的预测结果进行平均,得到最终的预测值;对于分类问题,则进行投票,选择得票最多的类别作为最终的预测结果。

Bagging的优势在于:

  1. 减小方差:由于每个基本模型都是在不同的数据子集上训练的,因此它们之间具有一定的差异性。通过平均或投票整合多个模型的结果,可以减小模型预测的方差,提高整体的泛化能力。
  2. 抗过拟合:自助采样会引入一些随机性和变化性,从而减少模型对训练数据的过度拟合。通过构建多个模型并平均它们的预测结果,可以降低过拟合风险。
  3. 并行化处理:每个基本模型的训练是相互独立的,因此可以并行地进行训练和预测,提高训练效率。

        需要注意的是,Bagging并不能改善模型的偏差(bias),因此如果基本模型本身存在很大的偏差,Bagging可能无法有效提升性能。此外,Bagging方法可能增加模型的复杂度和计算资源消耗,因为需要构建多个模型并进行整合。因此,在使用Bagging时需要权衡集成效果和计算成本之间的平衡。

随机森林RF

 定义:Bagging的基础上再引入了随机特征进一步提高每个基模型之间的独立性在随机森林中每个基模型都是一棵决策树

随机森林简化结构图

 

随机森林的主要步骤如下:

  1. 随机采样:从原始训练集中通过有放回地随机采样得到多个不同的训练子集。每个子集的大小与原始训练集相同,但是可能包含一些重复样本和遗漏样本。
  2. 决策树训练:使用每个训练子集独立地训练一个决策树模型。在构建决策树时,对于每个节点的划分,随机选择一部分特征子集作为候选划分特征,从中选择最优特征进行划分。这样可以增加决策树之间的差异性,提高整体集成模型的多样性。
  3. 预测整合:对于回归问题,随机森林通过对多个决策树的预测结果进行平均,得到最终的预测值;对于分类问题,则进行投票,选择得票最多的类别作为最终的预测结果。

随机森林的优势在于:

  1. 高性能:随机森林在处理大规模数据时具有较好的效率和性能。通过并行训练多个决策树,可以有效利用计算资源。
  2. 鲁棒性:随机森林对于缺失值和异常值具有一定的鲁棒性,它可以处理不完整或有噪声的数据集,并且不容易过拟合。
  3. 变量重要性评估:通过随机森林,可以对特征的重要性进行评估,帮助选择最相关的特征,并进行特征选择。

        需要注意的是,随机森林的参数设置也会影响模型的性能。例如,决策树中的候选划分特征数目、每棵树的最大深度以及随机采样的次数等。合理地选择这些参数可以进一步提高随机森林的性能与泛化能力。

        总之,随机森林是一种强大的集成学习方法,可应用于回归、分类和特征选择等任务,且在许多实际问题中取得了优异的表现。

 Boosting类方法

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

Boosting类方法结构图

Boosting 类方法是一种集成学习的方法。它通过迭代地训练基本模型,并加权整合它们的预测结果来提高整体模型的性能。相比于 Bagging 类方法, Boosting 方法更注重弱分类器之间的关联。

        Boosting 的主要思想是按顺序构建多个基本模型,在每次迭代中关注前一个模型“错分”的样本,尝试对其进行更好的分类。通过不断调整样本权重,让后续模型着重处理前一个模型处理错误的样本。最终,将所有基本模型的预测结果进行加权平均得到最终的预测结果。

Boosting 的步骤如下:

  1. 初始化样本权重:将所有样本的权重初始化为相等值。
  2. 基本模型训练:迭代训练多个基本模型,每个模型都在上一个模型分类错误的样本上进行训练。
  3. 样本权重更新:根据每个基本模型对样本的分类结果,调整每个样本的权重。被错误分类的样本权重会被放大,而被正确分类的样本权重则会缩小。
  4. 集成模型整合:将所有基本模型的预测结果进行加权平均,得到最终的预测结果。

        常见的 Boosting 方法有 AdaBoost(Adaptive Boosting)、GBDT(Gradient Boosting Decision Tree)等。AdaBoost 是 Boosting 方法的经典算法之一,它通过调整样本权重来训练基本模型的分类器。GBDT 是 Boosting 方法的另一种形式,它通过训练多个决策树并加权组合它们的预测结果来提高模型性能。

Boosting 的优势在于:

  1. 高性能: Boosting 可以构建具有很强泛化性能的集成模型,对于各种各样的机器学习问题都具有较好的适应性和表现。
  2. 改善偏差: Boosting 能够有效地处理高偏差问题。通过迭代地训练基本模型,并集成它们的结果,可以不断减少模型的偏差,从而提高模型的预测准确率。
  3. 可解释性: Boosting 中的基本模型通常是简单的分类器或回归器,这使得 Boosting 方法的结果更加可解释。

        需要注意的是,Boosting 方法对数据噪声和离群值比较敏感,因此在使用时需要进行数据清洗和特征选择等预处理。同时,由于 Boosting 方法本身比较复杂,对于计算资源要求高,需要一定的时间和计算成本。

主要代表方法

AdaBoost

        AdaBoost(Adaptive Boosting)是一种著名的 Boosting 方法,旨在提高分类器的性能。它通过迭代地训练一系列弱分类器,并根据它们的分类错误情况动态调整样本权重,最终将这些弱分类器加权组合成一个强分类器。

AdaBoost 训练过程图

AdaBoost 的主要步骤如下:

  1. 初始化样本权重:将所有样本的权重初始化为相等值。
  2. 基本分类器训练:在每次迭代中,使用当前样本权重训练一个弱分类器(例如决策树、神经网络等)。
  3. 分类器权重计算:根据当前分类器在训练集上的分类错误率计算其对应的权重。
  4. 样本权重更新:根据分类器的权重和分类结果,调整样本的权重。被错误分类的样本权重会增加,而被正确分类的样本权重会减小。
  5. 终止条件判断:如果达到预设的迭代次数或分类错误率已满足要求,则停止迭代;否则返回第2步。
  6. 强分类器整合:将每个弱分类器的预测结果进行加权组合,得到最终的预测结果。

AdaBoost 的特点包括:

  1. 自适应调整:AdaBoost 根据每个基分类器的表现自适应地调整样本权重,使其更加关注容易被错分的样本。
  2. 集成模型权重:通过对每个弱分类器的分类错误率计算其权重,能有效地决定其在最终结果中的贡献程度。
  3. 顺序训练:AdaBoost 每次迭代都在前一轮的错误样本上进行训练,以此增强模型对错误样本的学习能力。

AdaBoost 在实际应用中表现出了良好的性能和泛化能力。然而,它也存在一些限制,比如对离群值、噪声和标签错误比较敏感,需要进行数据预处理和异常值处理。此外,AdaBoost 的计算复杂度较高,因为需要训练多个基本分类器并动态调整样本权重。

总体而言,AdaBoost 是一种强大的集成学习方法,广泛应用于分类问题,并且对于处理二分类和多分类任务都具有很好的效果。

GBDT

GBDT(Gradient Boosting Decision Tree)是一种基于梯度提升的集成学习方法,它通过训练多个决策树并加权组合它们的预测结果来提高模型性能。

GBDT 的主要步骤如下:

  1. 初始化模型:将整体模型的初始预测值设为一个常数,通常是目标变量的均值。
  2. 迭代训练决策树:在每次迭代中,训练一个新的决策树来拟合上一轮模型的残差(实际值与当前预测值之间的差异)。
  3. 更新模型预测:将新训练的决策树的预测结果乘以一个较小的学习率,并将其加入到总体模型的预测值中。
  4. 终止条件判断:重复进行第2步和第3步,直到达到预设的迭代次数或满足其他终止条件。

GBDT 的特点包括:

  1. 梯度提升:GBDT 通过迭代地拟合上一轮模型的残差来逐步改进模型的预测效果,这是一种贪心算法。
  2. 决策树集成:GBDT 中使用的基本模型是决策树,每次迭代都会训练一个新的决策树来捕捉模型的残差信息。
  3. 学习率控制:通过引入学习率,可以控制每个决策树对最终模型的贡献程度,避免过拟合。

GBDT 在实际应用中具有广泛的适用性和优势:

  1. 高预测性能:GBDT 能够很好地拟合复杂的非线性关系,并在各种类型的数据集上取得较高的预测准确率。
  2. 特征自动选择:GBDT 可以通过决策树的特性自动选择重要的特征,避免了手动特征工程的繁琐过程。
  3. 处理异构数据:GBDT 能够有效地处理混合类型的数据,包括连续型、离散型和类别型特征。
  4. 处理缺失值:GBDT 能够处理部分特征缺失的情况,不需要对缺失值进行额外的处理。

需要注意的是,由于 GBDT 是一种串行算法,不能进行并行计算,因此在大规模数据集上的训练速度相对较慢。此外,GBDT 对异常值和噪声比较敏感,可能会导致过拟合现象,因此在使用时需要进行数据清洗和调参等操作。

总的来说,GBDT 是一种强大而广泛应用的集成学习方法,适用于回归和分类问题,并在业界和学术界都有广泛的应用。

XGBoost

 XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升决策树的集成学习算法,它是GBDT的一种改进和扩展版本。XGBoost 在性能和扩展性上进行了优化,被广泛应用于机器学习和数据挖掘任务中。

XGBoost 在GBDT的基础上引入了以下几个创新点:

  1. 正则化:引入了正则化项,控制模型复杂度,减少过拟合风险。
  2. 分裂节点的方法:采用近似贪心算法,通过使用Hessian矩阵的二阶导数信息,提高了分裂节点的效率和准确性。
  3. 优化目标函数:使用了更加灵活的目标函数,可以根据具体问题调整代价函数,适应不同的任务需求。
  4. 并行化处理:支持多线程并行计算,加快了模型训练的速度。

XGBoost的特点和优势包括:

  1. 高效性能:XGBoost在内部实现上进行了许多优化,使用了稀疏特征存储、缓存块和并行计算等技术,使得其在大规模数据集上的训练速度更快。
  2. 准确性:XGBoost通过使用正则化和近似贪心算法等技术,能够更好地拟合复杂的非线性关系,提供更准确的预测结果。
  3. 可解释性:XGBoost能够输出特征的重要性信息,帮助用户进行特征选择和模型解释。
  4. 支持多种任务:XGBoost不仅适用于回归和分类问题,还可以处理排序、排名、推荐系统等其他类型的机器学习任务。

总之,XGBoost是一种强大而灵活的梯度提升算法,具有优秀的性能和广泛的应用领域。无论在竞赛中还是实际应用中,XGBoost都展现出了卓越的效果,并成为了机器学习领域中最受欢迎的算法之一。

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

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

相关文章

docker 部署 xxl-job SpringBoot 整合 xxl-job 执行任务

概述 XXL-JOB是一个轻量级的分布式任务调度平台,具有以下特点: 调度模块:负责管理调度信息,发出调度请求,支持可视化和动态的操作,监控调度结果和日志,支持执行器Failover 执行模块&#xff1…

地产三维实景vr展示的功能及特点

随着科技的不断发展,VR(虚拟现实)技术也越来越成熟。VR技术的广泛应用,已经逐渐渗透到各个领域,其中引人注目的就是虚拟展馆。虚拟展馆是一种利用VR技术构建的线上展示空间,让观众可以在家中就能参观展览,带来了极大地…

ctfshow萌新计划web1-5(正则匹配绕过)

目录 web1 web2 web3 web4 web5 web1 题目注释相当于已经审计了代码 存在一个对id的检测,并且告诉我们flag在id100 这里讲三个方法 (1)payload:?id10*100 (2)使用or来绕过 payload:?…

Jetpack:005-文本组件的扩展

文章目录 1. 概念介绍2. 使用方法2.1 可以选择的文本2.2 可以点击的文本2.3 多种形式的文本 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中文本组件的使用方法,本章回中主要介绍 文本组件的扩展。闲话休提,让我们一起Talk Android Jetpack吧…

【深度学习实验】循环神经网络(二):使用循环神经网络(RNN)模型进行序列数据的预测

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. RNN模型 a. 初始化__init__ b. 前向传播方法forward 2. 训练和预测 a. 超参数 b. 创建模型实例 c. 模型训练 d. 预测结果可视化 3. 代码整合 经验是智慧之父…

云服务器带宽对上传下载速度的影响

简单来说就是 云服务器收到数据代表入&#xff0c;带宽大小 < 10时&#xff0c;入带宽大小10 带宽大小 > 10时&#xff0c;出入带宽上限 等于实际购买时候的大小

2023Linux C/C++全栈开发知识技术合集(基础入门到高级进阶)

C/Linux服务器开发」别名可以叫「C后台开发」,目前BAT里面都是有大量的C开发岗位&#xff0c;鹅厂在c后台开发岗都是急需。虽然岗位对技术要求难度系数较高&#xff0c;但是有大厂情结的朋友们还是可以冲一冲的。 很多有c/c语言基础的朋友&#xff0c;在面试后台岗的时候都会有…

Response Status Code 301、302

目录 Information Django redirect Influence Information HTTP状态码301、302和304分别表示以下情况&#xff1a; codeinformation301&#xff08;Moved Permanently&#xff09; 永久重定向。当请求的资源已经被永久地移动到了一个新的URI时&#xff0c;服务器会返回这个…

登录认证,登录校验

一、基础登录功能 1.Controller层 import com.itheima.pojo.Emp; import com.itheima.pojo.Result; import com.itheima.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework…

ChatGLM2-6B微调实践-QLora方案

ChatGLM2-6B微调实践-QLora方案 环境部署Lora微调项目部署准备数据集修改训练脚本adapter推理模型合并与量化合并后的模型推理 参数调优微调过程中遇到的问题参考&#xff1a; 环境部署 申请阿里云GPU服务器&#xff1a; CentOS 7.6 64Anaconda3-2023.07-1-Linux-x86_64Pytho…

为什么力扣中std::sort的cmp函数不加static会出错?

今天在力扣上做题的时候出现了一个有意思的错误 题目&#xff1a;1005.K 次取反后最大化的数组和 错误信息&#xff1a;error: reference to non-static member function must be called sort(nums.begin(),nums.end(),cmp); 我自定义了sort的cmp函数&#xff0c;但是出错了…

计算时间复杂度

时间复杂度与语句被重复执行的次数息息相关。 一、单层循环 单层循环大致可以分为两种&#xff0c;一种是循环体内的语句不影响循环条件的判定。另一种就是循环体内的语句会影响循环条件的判定。 1、循环体内的语句不影响循环条件的判定 这种情况十分常见且简单&#xff0c…

Configuration Change派发到App进程

整体时序 // DisplayContent.java boolean updateDisplayOverrideConfigurationLocked(Configuration values,ActivityRecord starting, boolean deferResume,ActivityTaskManagerService.UpdateConfigurationResult result) {int changes 0;boolean kept true;mAtmService.d…

VUEX全网最详细讲解之一

目录 一.Vuex简介 二.vuex的存值取值 测试结果 三.vuex异步请求 测试结果 ​编辑 ​编辑 一.Vuex简介 Vuex 是一个用于 Vue.js 应用程序的状态管理模式和库。它以集中式存储管理应用的所有组件的状态&#xff0c;并提供可预测的状态变化。Vuex 主要解决了多个组件之间共享…

Springboot——集成jodconverter做文档转换

文章目录 前言jodconverter 简介下载安装 libreoffice代码演示1、创建springboot项目工程并引入依赖2、配置3、准备一个docx模板4、编写测试代码 运行后的样式linux 环境下安装 libreoffice 前言 公司项目开发中&#xff0c;早期使用docx4j进行word转pdf&#xff0c;出现了很多…

嵌入式养成计划-39----C++静态成员--继承--多继承

九十一、静态成员 静态成员变量是属于类的变量&#xff0c;而不是属于类的对象的。它们在类的所有实例中是共享的。它们具有类范围的生命周期&#xff0c;因此与全局变量有一些相似之处。 在数据成员前static ----->静态数据成员 在成员函数前static ------>静态成员函…

接口自动化测试 —— 工具、请求与响应

1.工具介绍 postman &#xff1a;很主流的API测试工具&#xff0c;也是工作里面使用最广泛的研发工具。 JMeter&#xff1a; ApiPost&#xff1a; 2.安装postman&#xff1a; 安装好直接打开&#xff0c;不用注册。 二、通信模式&#xff1a; 1、同步通信&#xff1a; …

【走方格的方案数】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 #include <iostream> using namespace std; int func(int m,int n) {if(m1||n1){return mn;}return func(m-1,n)func(m,n-1); } int main() {int m, n;while (cin >>m >>…

word行距怎么设置?专业排版,让文档更具吸引力!

Microsoft Word是最常用的文字处理工具之一&#xff0c;广泛用于学术写作、商务沟通和文档编辑。掌握Word的基本功能是高效使用它的关键。本文将介绍word行距怎么设置的3种方法&#xff0c;以确保您的文档格式清晰、易读&#xff0c;让您的文档更具吸引力&#xff01; 方法1&am…

C++ 命名空间-----namespace(超详细解析,小白必看系列)

目录 一、前言 &#x1f34e;什么是C 二、关键字 三、命名空间&#xff08;重点&#xff09; &#x1f350;C语言--命名冲突 &#x1f349;C--命名空间的定义 &#x1f353;C--命名空间的使用 四、C输入&输出 五、共勉 一、前言 既博主学过C语言后又一新的语言&a…