模式识别与机器学习-集成学习

集成学习

  • 集成学习思想
    • 过拟合与欠拟合
    • 判断方法
  • K折交叉验证
  • Bootstrap
  • Bagging
      • 随机森林的特点和工作原理:
  • Boosting
      • AdaBoost工作原理:
        • AdaBoost的特点和优点:
        • AdaBoost的缺点:
      • Gradient Boosting工作原理:
        • Gradient Boosting的特点和优点:
        • Gradient Boosting的变种:
  • Bagging和Boosting算法比较
      • Bagging(Bootstrap Aggregating):
      • Boosting:
      • 异同点总结:
  • Stacking

集成学习思想

集成学习的核心思想在于,组合多个弱学习器从而得到一个表现良好的学习器。
在这里插入图片描述

过拟合与欠拟合

下图左黄线为过拟合的决策边界,白线是恰到好处的决策边界。下图右第一张图和第二张图为欠拟合的结果,第三张图为恰到好处的决策边界,第四张图为过拟合的结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
通常,简单的模型偏差高、方差低;复杂的模型偏差低、方差高。

判断方法

如何判断模型是欠拟合还是过拟合呢?
欠拟合(Underfitting)和过拟合(Overfitting)是指机器学习模型在训练过程中对数据的拟合程度问题。判断模型是欠拟合还是过拟合,可以通过观察模型在训练集和验证集上的表现来进行评估。

  1. 训练集表现

    • 如果模型在训练集上表现不佳,即在训练数据上的表现很差,不能很好地拟合数据,这表明可能存在欠拟合。
    • 欠拟合情况下,模型可能无法捕捉数据中的关键特征和模式,导致训练误差较高。
  2. 验证集表现

    • 当模型在验证集(或者测试集)上的表现远远差于在训练集上的表现时,可能存在过拟合。
    • 过拟合表现为模型在训练集上表现很好,但在新数据上表现较差,无法泛化到未见过的数据。

常用的判断欠拟合和过拟合的方法包括:

  • 学习曲线:绘制模型在训练集和验证集上的表现随着训练样本数量变化的曲线。如果两者收敛且表现均不佳,则可能是欠拟合;如果训练集表现良好而验证集表现差,可能是过拟合。

  • 验证集误差和训练集误差比较:观察模型在验证集和训练集上的误差。如果模型在训练集上的误差远远小于验证集上的误差,可能是过拟合问题。

  • 模型复杂度:过度复杂的模型更容易过拟合,而过于简单的模型则更容易出现欠拟合。可以通过增加或减少模型的复杂度来解决这些问题,比如增加正则化、减少特征数量、使用更简单的模型结构等。

在这里插入图片描述

K折交叉验证

K折交叉验证(K-fold cross-validation)是一种常用的模型评估方法,用于评估模型的性能和泛化能力,尤其适用于数据集较小的情况。该方法将数据集分成K个子集(通常是相等大小),然后执行K次模型训练和验证,每次使用其中一个子集作为验证集,其余K-1个子集作为训练集。

K折交叉验证的步骤如下:

  1. 数据集分割:将数据集随机分成K个子集(通常是相等大小),每个子集称为一个fold。

  2. 模型训练和验证:进行K次循环,每次选择一个fold作为验证集,其余K-1个fold作为训练集。在每个循环中,使用训练集对模型进行训练,然后使用验证集评估模型性能。

  3. 性能评估:在每次验证过程中,记录模型的性能指标(比如准确率、精确度、召回率、F1分数等)。

  4. 性能指标的平均值:K次验证完成后,对每次验证得到的性能指标取平均值,作为模型最终的性能评估指标。

在这里插入图片描述

Bootstrap

Bootstrap方法通过对原始数据进行重采样来评估统计量的稳定性和不确定性,它能够基于有限的数据集生成估计量的抽样分布。

Bootstrap的基本步骤如下:

  1. 重采样:从原始数据集中有放回地抽取样本,通常抽取的样本数量与原始数据集相同。
  2. 计算统计量:针对每个新的重抽样数据集,计算所需的统计量(例如均值、标准差等)。
  3. 构建分布:重复上述过程多次(通常是几千次),得到统计量的分布情况。
  4. 估计参数:利用重抽样得到的统计量分布,计算出置信区间、标准误差等。

Bootstrap方法的优势在于它不需要对数据假设特定的分布情况,而是利用已有的数据进行模拟重采样,从而更好地评估统计量的性质。它在样本量较小、无法进行正态分布假设或者对于复杂模型的参数估计中特别有用。

在这里插入图片描述

Bagging

在这里插入图片描述
Bagging的一个很著名的算法就是随机森林。

随机森林(Random Forest)是一种基于集成学习思想的机器学习算法,它通过构建多个决策树并集成它们的预测结果来进行分类或回归任务。随机森林的特点在于它同时运用了Bagging(自助采样)和随机特征选择的方法。

随机森林的特点和工作原理:

  1. Bagging:随机森林使用Bootstrap的方法,从原始数据集中有放回地随机抽样生成多个不同的子数据集,然后针对每个子数据集构建一个决策树模型。

  2. 随机特征选择:在构建每个决策树的过程中,随机森林会在节点分裂时随机选择一部分特征进行评估,而非使用全部特征。这样做有助于使得每个决策树之间更具差异性,增加了整体模型的多样性和鲁棒性。

  3. 合并预测:对于分类问题,随机森林会采用投票方式;对于回归问题,采用平均方式,汇总多个决策树的预测结果以得出最终结果。

随机森林的优点

  • 对于高维数据和大规模数据集有较好的处理能力。
  • 具有较高的准确性和鲁棒性。
  • 能够评估特征的重要性。
  • 对于缺失数据的处理比较鲁棒。

Out-of-Bag Error(OOB误差) 是在随机森林训练过程中一个重要的评估指标。由于Bagging采用自助采样,每个决策树的训练数据并不是全部样本,因此每个子模型(决策树)都会有一部分样本未被采样到,这些未被采样到的样本就构成了该子模型的Out-of-Bag数据集。

Out-of-Bag Error是使用未被采样到的数据进行模型评估的误差。对于每个子模型,可以利用其对应的Out-of-Bag数据集进行验证或评估模型的性能,然后将所有子模型的Out-of-Bag误差进行平均,得到随机森林的最终评估指标。

通过利用Out-of-Bag误差,随机森林能够在训练过程中对模型的泛化能力进行评估,无需额外的验证集,节省了数据并能及时发现模型的过拟合情况。

Boosting

在这里插入图片描述
AdaBoost(Adaptive Boosting)是一种Boosting集成学习方法,用于提高分类器的性能。它通过训练一系列弱分类器(例如决策树或者其他基本模型),每个分类器都针对前一个分类器分类错误的样本进行加权,从而逐步提升整体模型的准确性。

AdaBoost工作原理:

  1. 初始化样本权重:开始时,所有样本的权重都相等。

  2. 训练弱分类器:首先使用一个基本分类器(弱分类器)对数据进行训练,分类错误的样本会在下一轮中获得更高的权重。

  3. 调整样本权重:根据前一轮分类器的准确性,调整样本的权重,将分类错误的样本的权重增加,使得在下一轮训练中这些错误分类的样本更有可能被选中。

  4. 迭代训练:重复这个过程,训练出一系列弱分类器,每个分类器的权重取决于其在训练中的准确性。

  5. 组合弱分类器:最后将这些弱分类器组合起来,根据每个分类器的权重加权求和或投票方式得到最终的集成分类器。

AdaBoost的特点和优点:
  • 适应性(Adaptive):通过调整样本权重,AdaBoost能够专注于那些难以分类的样本,逐步提高整体模型的性能。

  • 高准确性:相对于单个基础分类器,AdaBoost能够提高模型的准确性,尤其在处理复杂数据集和高度非线性问题时表现优异。

AdaBoost的缺点:
  • 对噪声和异常值敏感:在存在噪声和异常值的情况下,AdaBoost可能会导致过拟合,降低模型的性能。

  • 需要调节参数:AdaBoost中的弱分类器的选择和迭代次数都需要调节,对于大规模数据和复杂问题需要花费较多时间来调整参数。

Gradient Boosting工作原理:

  1. 初始化预测器:使用一个简单的模型(比如平均值)作为初始预测器,对数据做出初始预测。

  2. 计算残差:计算初始预测模型对目标的预测残差。

  3. 训练弱模型:构建一个新的模型来预测残差,即使得残差最小化的模型。通常使用决策树作为弱模型。

  4. 更新预测结果:将新模型的预测结果与前一模型的预测结果进行加权结合,更新整体模型的预测结果。

  5. 迭代训练:重复上述过程,每次训练的模型都在尝试纠正前一模型的残差,逐步提升整体模型的性能。

  6. 终止条件:可以设置迭代次数或者达到某种误差阈值时停止迭代。

Gradient Boosting的特点和优点:
  • 高准确性:Gradient Boosting能够获得较高的预测性能,在许多问题中表现优异。

  • 对异常值的鲁棒性:通过连续迭代调整预测模型,Gradient Boosting具有一定程度上的对异常值和噪声的鲁棒性。

  • 灵活性:可以使用不同的损失函数来适应不同类型的问题(如回归、分类等)。

Gradient Boosting的变种:
  1. Gradient Tree Boosting:也称为Gradient Boosted Regression Trees(GBRT)或者Gradient Boosted Machines(GBM),使用决策树作为基础模型。

  2. XGBoost:一种高效的Gradient Boosting库,通过优化算法、并行计算等技术提高了性能和速度。

  3. LightGBM:另一种基于梯度提升的框架,通过基于直方图的决策树算法来加速训练和提高效率。

Bagging和Boosting算法比较

Bagging和Boosting都是集成学习(Ensemble Learning)中常用的技术,它们旨在提高机器学习模型的性能。尽管它们都属于集成学习范畴,但在实现方式、优点和适用场景上有明显的差异。

Bagging(Bootstrap Aggregating):

原理:Bagging是一种并行的集成学习方法,通过对原始数据集进行有放回的随机抽样,构建多个子模型,然后将这些子模型的预测结果进行平均或投票来得出最终预测结果。

算法:典型的Bagging算法包括随机森林(Random Forest),它是基于决策树的一种Bagging方法。

优点

  1. 减少模型的方差(Variance),提高模型的泛化能力。
  2. 对于高方差、低偏差的模型效果更为明显。
  3. 能够处理大规模的数据集,并且对于高维特征也表现良好。

缺点

  1. 由于每个子模型是独立构建的,Bagging对于偏差较高的模型效果提升有限。

适用场景:Bagging适用于各种类型的问题,尤其是对于高方差、低偏差的模型(如决策树),它能够有效地提高模型的稳定性和准确性。

Boosting:

原理:Boosting是一种串行的集成学习方法,它通过训练一系列弱分类器(例如决策树或者其他基本模型),每次根据前一轮的结果调整数据分布,使得在前一轮分类错误的样本在下一轮获得更多的关注,最终组合这些弱分类器形成强分类器。

算法:常见的Boosting算法包括Adaboost、Gradient Boosting Machine(GBM)、XGBoost和LightGBM等。

优点

  1. 提高了模型的准确性和泛化能力。
  2. 对于各种类型的数据和模型都表现良好。
  3. 在迭代过程中逐步提升模型性能。

缺点

  1. 对于噪声数据和异常值敏感,容易导致过拟合。
  2. 训练过程可能较为耗时,特别是对于大规模数据和复杂模型。

适用场景:Boosting适用于需要较高精度的问题,尤其在处理分类和回归问题时表现优异。它在数据集相对较小、特征维度不是很高、并且对准确性要求较高的情况下效果显著。

异同点总结:

  • 并行 vs 串行:Bagging是并行的集成学习方法,而Boosting是串行的。
  • 数据处理方式:Bagging通过随机抽样构建多个模型,Boosting通过逐步迭代训练一系列弱分类器并进行加权。
  • 对模型的改进方式:Bagging减少方差,Boosting减少偏差。
  • 对异常值和噪声的敏感性:Boosting相对于Bagging更加敏感。

选择Bagging还是Boosting取决于具体问题和数据集的性质。通常,对于复杂数据和模型,Boosting更有优势;对于简单模型和需要减少方差的情况,Bagging可能更合适。

Stacking

在这里插入图片描述

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

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

相关文章

轻松实现iphone截图传电脑

目录 摘要 引言 用户登录工具和连接设备 生成截图 摘要 本篇博文介绍了克魔助手这款工具,解决了iPhone与Windows系统下图片传输的烦恼。通过连接同一Wi-Fi,使用克魔助手轻松实现了iPhone截图传输到电脑上的便捷操作。用户只需简单地下载并安装克魔助…

C#高级 08Json操作

1.概念 Json是存储和交换文本信息的语法。类似于XML。Json比XML更小、更快、更易解析。Json与XML一样是一种数据格式。Json是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。Json采取完全独立于语言的文本格式, 但是也使用了类似于C语言的习惯。这些特性使…

基于Python的B站排行榜大数据分析与可视化系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本文介绍了一项基于Python的B站排行榜大数据分析与可视化系统的研究。通过网络爬虫技术,系统能够自动分析B站网址,提取大量相关文本信息并存储在系统中。通过对这些信息进行…

四.消息队列

目录 1 .消息队列概述 2.消息队列的特点 3.ftok函数 3 创建消息队列-msgget( ) 3.1发送消息-msgsnd( ) 3.2 接收消息-msgrcv( ) 4 消息队列的控制 1 .消息队列概述 消息队列是一种进程间通信的机制,允许不同进程在系统中传递数据。它们通常由内核维护&#x…

PEGASUS模型介绍

PEGASUS介绍 概述 模型论文为Pre-training with Extracted Gap-sentences for Abstractive Summarization,简称为PEGASUS。面向的情况主要是因为目前预训练语言任务主要为MLM和NSP任务,即为掩码预测任务和下一句预测任务,没有面向生成式文本…

普中STM32-PZ6806L开发板(HAL库函数实现-USART1 printf+scanf/gets)

简介 实现printfscanf/gets通过USART1 的发送接收。 电路原理图 板载USB CH340串口电路原理图主芯片串口引脚图 我的板子板子自带串口坏掉了, 所以使用USB转TTL线, 连接如下 电路原理图 实物图 其他知识 scanf是以空白符(空格、制表符、换行等等)为结束标志的,当遇到空白符…

Unity坦克大战开发全流程——开始场景——开始界面

开始场景——开始界面 step1:设置UI 反正按照这张图拼就行了 step2:写脚本 前面的拼UI都是些比较机械化的工作,直到这里写代码的时候才真正开始有点意思了,从这里开始,我们就要利用面向对象的思路来进行分析&#xff1…

AJAX:整理3:原生AJAX的相关操作

注意AJAX的步骤 // 1.创建对象 const xhr new XMLHttpRequest()// 2.初始化 设置 请求方法 和 url xhr.open("GET", "http://localhost:9090/server")// 3.发送 xhr.send()// 4.事件绑定 处理服务端返回的结果 // readyState 是xhr对象中的属性&#xff…

超维空间S2无人机使用说明书——51、基础版——使用yolov8进行目标跟踪

引言:为了提高yolo识别的质量,提高了yolo的版本,改用yolov8进行物体识别,同时系统兼容了低版本的yolo,包括基于C的yolov3和yolov4,以及yolov7。 简介,为了提高识别速度,系统采用了G…

Vue小练习--任务列表

这是一个非常实用的例子,主要实用的是v-model、v-on、v-for指令,javaScript的数组也会涉及一些,javaScript数组方法有很多,本文使用的添加元素和删除元素非常实用,可以记下来。 设计思路 很多例子看起来很难&#xf…

使用Google OSV工具扫描依赖安全漏洞

安全漏洞是软件工程化能力的试金石 2021年年底,Log4j的漏洞陆续被公开。因为该框架被大量的开源软件依赖,所以,漏洞影响面非常大。 面对这个漏洞,我们遇到的第一个问题是:如何知道我们哪些工程使用了Log4j?…

用python画最简单的图案,用python画小猫简单代码

本篇文章给大家谈谈用python画小猫简单100行代码,以及用python画最简单的图案,希望对各位有所帮助,不要忘了收藏本站喔。 Source code download: 本文相关源码 from turtle import * #两个函数用于画心 defcurvemove():for i in range(200): …

电池充电器、监控器和控制器AD7284WBSWZ、LT8490EUKJ、LTC4162EUFD-FAD、LTC4162IUFD-LAD【电源管理】

1、AD7284WBSWZ 8通道锂离子电池监控系统 IC 64LQFP AD7284 8通道锂离子电池监控系统包括对堆叠式锂离子电池进行通用监控所需的全部功能。AD7284具有支持四到八个电池管理单元的多路复用单元电压和辅助模数转换器 (ADC) 测量通道。设计人员可以使用四个辅助ADC输入通道进行温…

lag-llama源码解读(Lag-Llama: Towards Foundation Models for Time Series Forecasting)

Lag-Llama: Towards Foundation Models for Time Series Forecasting 文章内容: 时间序列预测任务,单变量预测单变量,基于Llama大模型,在zero-shot场景下模型表现优异。创新点,引入滞后特征作为协变量来进行预测。 获得…

Power Apps 学习笔记 - IOrganizationService Interface

文章目录 1. IOrganization Interface1.1 基本介绍1.2 方法分析 2. Entity对象2.1 Constructor2.2 Properties2.3 Methods 3. 相关方法3.1 单行查询 Retrive3.2 多行查询 RetriveMultiple3.3 增加 Create3.4 删除 Delete3.5 修改 Update 1. IOrganization Interface 1.1 基本介…

rax3000m刷openwrt固件

rax3000m刷机过程(nand版本) 刷机准备文件https://www.123pan.com/s/X5m9-6Ynj.html提取码:VtBW 接线关系:路由器lan口接电脑 1.上传配置开启ssh的配置文件(登录路由器后台管理界面在找到配置管理,上传配置文件rax3…

[NCTF 2022] web题解

[NCTF 2022]calc 考点:python环境变量注入 打开题目,F12有hint 访问一下得到源码 app.route("/calc",methods[GET]) def calc():ip request.remote_addrnum request.values.get("num")log "echo {0} {1} {2}> ./tmp/log…

【Unity美术】Unity工程师对3D模型需要达到的了解【一】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

后端程序员React初接触1

后端程序员React初接触 学习react基础与相关库的使用学习 包括react基础 路由 组件库等等 react是用于构建用户界面的JavaScript库 发送请求获取数据处理数据操作dom呈现页面(react帮忙操作dom) 数据渲染为视图 有facebook打造并开源 解决的问题 dom操…

集群部署篇--Redis 哨兵模式

文章目录 前言一、哨兵模式介绍:1.1 介绍:1.2 工作机制: 二、哨兵模式搭建:2. 1 redis 主从搭建:2.2 setinel 集群搭建:2.2.1 配置: sentinel.conf :2.2.2 运行容器:2.2.…