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

集成学习

  • 集成学习思想
    • 过拟合与欠拟合
    • 判断方法
  • K折交叉验证
  • Bootstrap
  • Bagging
      • 随机森林的特点和工作原理:
  • Boosting
      • AdaBoost工作原理:
        • AdaBoost的特点和优点:
        • AdaBoost的缺点:
      • Gradient Boosting工作原理:
        • Gradient Boosting的特点和优点:
        • Gradient Boosting的变种:
  • Bagging和Boosting算法比较
      • Bagging(Bootstrap Aggregating):
      • Boosting:
      • 异同点总结:
  • Stacking
  • 一些作业题
    • 1.模型复杂度过低/过高通常会导致Bias和Variance怎样的问题?
    • 2.怎样判断、怎样缓解过拟合/欠拟合问题?
    • 3.比较Bagging和Boosting算法的异同
    • 4.简述Adaboosting的流程
    • 5.随机森林更适合采用哪种决策树?(A)
    • 6.基于树的Boosting更适合采用哪种决策树?(B)
    • 7.如果对决策树采用Bagging方式进行集成学习,更适合采用哪种方法对决策树的超参(如,树的深度) 进行调优?(B)

集成学习思想

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

过拟合与欠拟合

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

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

判断方法

如何判断模型是欠拟合还是过拟合呢?
欠拟合(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

在这里插入图片描述

一些作业题

1.模型复杂度过低/过高通常会导致Bias和Variance怎样的问题?

模型复杂度过高:偏差低,方差高
模型复杂度过低:偏差高,方差低

2.怎样判断、怎样缓解过拟合/欠拟合问题?

根据训练集和测试集的表现来判断是否过拟合/欠拟合:如果训练集上精度不佳,则是欠拟合。如果训练集表现良好,测试集表现不佳则是过拟合。
解决方法:
欠拟合:增加模型复杂度,延长训练时间,增加特征。
过拟合:降低模型复杂度,减少特征,增加训练样本数,及时停止训练迭代。

3.比较Bagging和Boosting算法的异同

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

4.简述Adaboosting的流程

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

  2. 训练第一个弱分类器

    • 使用原始数据集训练一个基本分类器(通常是一个简单且弱的分类器)。
    • 根据分类器的性能对样本进行权重调整,增加分类错误的样本的权重,减少分类正确的样本的权重。
  3. 迭代训练弱分类器

    • 对于每次迭代(每轮训练一个新的弱分类器):
      • 根据样本权重分布,重新对训练数据进行抽样。
      • 使用新的样本权重分布训练另一个基本分类器。
      • 调整样本权重,增加前一轮分类错误的样本的权重。
  4. 组合弱分类器

    • 对每个弱分类器赋予一个权重,权重与分类器的性能相关。
    • 通过加权投票或加权求和将所有弱分类器的预测结果组合成最终的集成分类器。
  5. 结束条件

    • 可以通过设置迭代次数或者达到一定的性能阈值来确定停止训练的条件。

5.随机森林更适合采用哪种决策树?(A)

  • A.性能好,深度较深
  • B.性能弱,深度较浅

6.基于树的Boosting更适合采用哪种决策树?(B)

  • A.性能好,深度较深
  • B.性能弱,深度较浅

7.如果对决策树采用Bagging方式进行集成学习,更适合采用哪种方法对决策树的超参(如,树的深度) 进行调优?(B)

  • A.交又验证
  • B.包外估计

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

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

相关文章

【机器学习合集】深度生成模型 ->(个人学习记录笔记)

深度生成模型 深度生成模型基础 1. 监督学习与无监督学习 1.1 监督学习 定义 在真值标签Y的指导下,学习一个映射函数F,使得F(X)Y 判别模型 Discriminative Model,即判别式模型,又称为条件模型,或条件概率模型 生…

Linux驱动开发简易流程

推荐视频: 正点原子【第四期】手把手教你学 Linux之驱动开发篇 小智-学长嵌入式Linux&Android底层开发入门教程 能力矩阵 基础能力矩阵 熟悉c/c、熟悉数据结构 熟悉linux系统,Shell脚本,Makefile/cmake/mk 文件IO、多线程、竞争、并发…

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

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

nginx+keepalived实现七层负载

目录 一、部署nginx01、nginx02 二、keepalived配置(抢占模式、master- backup模式) 三、测试 四、非抢占模式(backup-backup模式) nginx01 11.0.1.31nginx0211.0.1.32虚拟IP(VIP)11.0.1.30 一、部署ngin…

Android实验:contentprovider 实验+SQLite 数据库的实现

目录 SQLite实验目的实验内容实验要求项目结构代码实现结果展示 SQLite SQLite 是一个开源的嵌入式关系数据库,实现了自给自足的、无服务器的、配置无需的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库系统不同,…

虚拟化技术和云计算的关系

1、云计算底层就是虚拟化技术。 (1)常见的虚拟化技术:VMware(闭源的,需要收费)、XEN、KVM (2)大部分公司用的虚拟化方案:XEN、KVM 2、虚拟化的历史 (1&am…

鸿蒙 Window 环境的搭建

鸿蒙操作系统是国内自研的新一代的智能终端操作系统,支持多种终端设备部署,能够适配不同类别的硬件资源和功能需求。是一款面向万物互联的全场景分布式操作系统。 下载、安装与配置 DevEco Studio支持Windows系统和macOS系统 Windows系统配置华为官方推…

LSTM中文新闻分类源码详解

LSTM中文新闻分类 一、导包二、读取数据三、数据预处理1.分词、去掉停用词和数字、字母转换成小写等2.新闻文本标签数值化 三、创建词汇表/词典1.data.Field()2.空格切分等3.构建词汇表/词典使用训练集构建单词表,vectorsNone:没有使用预训练好的词向量,而是使用的是…

AI人工智能大模型讲师叶梓《基于人工智能的内容生成(AIGC)理论与实践》培训提纲

【课程简介】 本课程介绍了chatGPT相关模型的具体案例实践,通过实操更好的掌握chatGPT的概念与应用场景,可以作为chatGPT领域学习者的入门到进阶级课程。 【课程时长】 1天(6小时/天) 【课程对象】 理工科本科及以上&#xff0…

亚信安慧AntDB数据库引领数字时代通信创新

在数字经济与实体经济深度融合的时代,通信行业正迎来前所未有的新机遇。特别是在中国信通院的预测中,2027年5G专网市场规模预计将达到802亿元,呈现出显著的增长态势,年复合增长率高达42%。 亚信安慧AntDB数据库一直致力于紧跟科技…

【JVM】一篇通关JMM内存模型

JMM内存模型 1. 原子性1-1. 问题分析1-2. 问题解决 2. 可见性2-1. 问题分析2-2. 问题解决 3. 有序性3-1. 问题分析3-2. 问题解决 4. CAS与原子性5. synchronized 优化 1. 原子性 很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java…

【模拟电路】常见电学定律 戴维宁定理、诺顿定理、基尔霍夫定律

一、戴维宁定理 二、诺顿定理 三、基尔霍夫定律 一、戴维宁定理 任何复杂电路可以等效为一个电压源和一个电阻器组成 德维宁定理(Thevenin’s Theorem)是电路理论中的一个基本定理,它提供了一种简化复杂线性电路的方法。德维宁定理的主要思…

【网络安全】网络隔离设备

一、网络和终端隔离产品 网络和终端隔离产品分为终端隔离产品和网络隔离产品两大类。终端隔离产品一般指隔离卡或者隔离计算机。网络隔离产品根据产品形态和功能上的不同,该类产品可以分为协议转换产品、网闸和网络单向导入产品三种。 图1为终端隔离产品的一个典型…

机器学习系列13:通过随机森林获取特征重要性

我们已经知道通过 L1 正则化和 SBS 算法可以用来做特征选择。 我们还可以通过随机森林从数据集中选择相关的特征。随机森林里面包含了多棵决策树,我们可以通过计算特征在每棵决策树决策过程中所产生的的信息增益平均值来衡量该特征的重要性。 你可能需要参考&…

用IDEA创建/同步到gitee(码云)远程仓库(保姆级详细)

前言: 笔者最近在学习java,最开始在用很笨的方法:先克隆远程仓库到本地,再把自己练习的代码从本地仓库上传到远程仓库,很是繁琐。后发现可以IDEA只需要做些操作可以直接把代码上传到远程仓库,也在网上搜了些…

2023年03月22日_腾讯2022年财报解读

文章目录 1 - 腾讯营收增长停滞2 - 腾讯游戏业务低迷3 - 小程序和视频号拉动广告增长4 - 腾讯云和金融科技表现不佳5 - 营销费用减半6 - 裁员但福利上涨 2023年03月22日 今天晚上呢 腾讯披露了2022年第四季度和全年的财报 看过之后呢不禁要说 腾讯在2022年真的是过得不容易啊…

简单vlan划分和dhcp中继(Cisco Packet Tracer模拟)

文章目录 1. 前言2. 功能实现2.1. dhcp服务器接入2.2. 学校web服务器2.3. 设置学校dns服务器2.4. 设置线路冗余2.5. 配置ac。 1. 前言 在这里我们的计网作业是使用思科的Cisco Packet Tracer进行对校园网的简单规划,这里我对校园网进行了简单的规划,功能…

IDEA JAVA Spring Boot运行Hello World(1.8)

参考资料: Spring Boot运行Hello World - 知乎https://blog.csdn.net/weixin_44005516/article/details/108293228(解决bug)SpringBoot入门第一章:Hello World-java教程-PHP中文网 (仅参考如何运行程序)java 8安装教程 java 8安装教程_java8安装-CSDN博…

数据结构(五)——初识线性表

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉 在csdn获奖荣誉: 🏆csdn城市之星2名 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ …

C#语言发展历程(1-7)

一、类型发展 C#1中是没有泛型的 在C#2中在逐渐推出泛型。C#2还引入了可空类型。 示例:C#泛型(详解)-CSDN博客 1 C#3:引入了匿名类型、和隐式的局部变量(var) 匿名类型:我们主要是使用在LIN…
最新文章