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

集成学习

  • 集成学习思想
    • 过拟合与欠拟合
    • 判断方法
  • 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.mzph.cn/news/586784.shtml

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

相关文章

android 13.0 Launcher3长按app弹窗设置为圆角背景功能实现一

1.前言 在13.0的系统ROM定制化开发中,在进行一些Launcher3的定制化开发中,在使用app的弹窗的功能时,会弹出应用信息和微件之类的内容,所以在定制需求中,需要默认设置为圆角背景,接下来就来分析下相关功能的实现 如图: 2.Launcher3长按app弹窗设置为圆角背景功能实现的核…

【MYSQL】-函数

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

AcWing 1076. 迷宫问题(最短路模型)

题目链接 活动 - AcWing本课程系统讲解常用算法与数据结构的应用方式与技巧。https://www.acwing.com/problem/content/description/1078/ 来源 《信息学奥赛一本通》, kuangbin专题 , POJ3984 代码 #include <cstring> #include <iostream> #include <alg…

【网络安全常用术语解读】SCAP详解

本文主要介绍什么是SCAP&#xff0c;SCAP的产生背景是怎样的&#xff0c;SCAP有什么用途&#xff0c;有哪些组件&#xff0c;各个组件的用途是什么&#xff1f; SCAP产生背景 由于计算机和网络技术的快速发展&#xff0c;越来越多的软件和系统被应用到企业和机构中&#xff0c…

迭代归并:归并排序非递归实现解析

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《数据结构&算法》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! &#x1f4cb; 前言 归并排序的思想上我们已经全部介绍完了&#xff0c;但是同时也面临和快速排序一样的问题那就是递…

通信原理课设(gec6818) 007:语音识别

目录 1、去科大讯飞官网下载对应的sdk 2、科大讯飞文件夹的意思 3、配置ARM的录音环境 4、编程实现语音识别 我们的需求是将一个语音文件从客户端传到服务器&#xff0c;因此我们最好是选用tcp 现在市面上面常用的语音识别解决方案为&#xff1a;科大讯飞c和百度c 离…

龙芯3A5000上安装使用QQ

原文链接&#xff1a;龙芯3A5000上安装使用QQ hello&#xff0c;大家好啊&#xff01;今天我要给大家带来的是在龙芯3A5000处理器上安装使用QQ的文章。近期&#xff0c;腾讯发布了最新版本的QQ&#xff0c;值得一提的是&#xff0c;这一版本增加了对Linux系统下龙芯架构的支持。…

KG+LLM(一)KnowGPT: Black-Box Knowledge Injection for Large Language Models

论文链接&#xff1a;2023.12-https://arxiv.org/pdf/2312.06185.pdf 1.Background & Motivation 目前生成式的语言模型&#xff0c;如ChatGPT等在通用领域获得了巨大的成功&#xff0c;但在专业领域&#xff0c;由于缺乏相关事实性知识&#xff0c;LLM往往会产生不准确的…

项目记录:利用Redis实现缓存以提升查询效率

一、概述 当我们查询所有数据时&#xff0c;如果缓存中没有&#xff0c;则去数据库查询&#xff0c;如果有&#xff0c;直接查缓存的数据就行。注意定期更新缓存数据。 二、主体代码 private static final String ROOM_SCHEDULES_HASH "RoomSchedules";Overridepu…

HTML---JavaScript基础

文章目录 目录 文章目录 本章目标 一.JavaScript基础 概述 特点 JavaScript 基本机构 语法 网页中引用JavaScript的方式 二. JavaScript核心语法 变量 ​编辑 数据类型 数组 练习 本章目标 掌握JavaScript的组成掌握JavaScript的基本语法会定义和使用函数会使用工具进行…

引领手游技术潮流:武汉灰京文化的卓越技术创新与市场推广支持

在数字娱乐领域&#xff0c;手游行业正蓬勃发展&#xff0c;为数以亿计的玩家提供了丰富的娱乐选择。武汉灰京文化&#xff0c;作为该领域的佼佼者&#xff0c;以其强大的技术创新和全面的市场推广支持&#xff0c;为合作伙伴的成功铺平了道路&#xff0c;不仅提升了游戏质量&a…

TV端Web页面性能优化实践

01 背景 随着互联网技术的持续创新和电视行业的高速发展&#xff0c;通过电视观看在线视频已经逐渐成为大众的重要娱乐方式。奇异果App作为在TV设备上用户活跃度最高的应用之一&#xff0c;为广大用户提供了丰富的内容播放服务&#xff0c;除此之外&#xff0c;同样有会员运营、…

【Kubernetes】什么是 kubectl ?

什么是 kubectl &#xff1f; 1.什么是 kubectl &#xff1f;2.Kubernetes 内部结构3.Kubernetes API 的作用 1.什么是 kubectl &#xff1f; 在学习如何更有效地使用 kubectl 之前&#xff0c;您应该对它是什么以及它如何工作有一个基本的了解。从用户的角度来看&#xff0c;…

Javaweb-servlet

一、servlet入门 1.Servlet介绍 (1)什么是Servlet Servlet是Server Applet的简称&#xff0c;是用Java编写的是运行在 Web 服务器上的程序&#xff0c;它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#…

CGAL的三角网格曲面脊线和脐点的近似计算(需要微分几何学的知识)

脊线&#xff08;Ridges&#xff09;&#xff1a;在光滑曲面上&#xff0c;脊线是一种特殊的曲线。沿着这条曲线&#xff0c;曲面的一个主曲率在其曲率线上达到极值&#xff08;最大或最小&#xff09;。这意味着脊线是那些曲率发生突变的区域&#xff0c;它们在形状感知、物体…

Android Studio下载gradle失败

1、打开Android Studio设置Gradle的地方&#xff0c;点击左上角的File->Settings查看gradle存放路径 C:\Users\Administrator.gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx 2、找到正在下载的gradle版本&#xff0c;Android Studio取消下载gradle&…

Tomcat与Servlet是什么关系

Tomcat与Servlet是什么关系 Apache Tomcat和Servlet之间存在密切的关系&#xff0c;可以说它们是一对密切合作的组件。下面是它们的关系&#xff1a; Tomcat是Servlet容器&#xff1a; Tomcat是一个开源的、轻量级的Servlet容器。Servlet容器是一个Web服务器扩展&#xff0c;用…

2023.12.28 关于 Redis 数据类型 List 内部编码、应用场景

目录 List 编码方式 早期版本 现今版本 List 实际应用 多表之间的关联关系 消息队列 频道&#xff08;多列表&#xff09;消息队列 微博 Timeline 栈 & 队列 List 编码方式 早期版本 早期版本 List 类型的内部编码方式有两种 ziplist&#xff08;压缩列表&#xf…

Cisco模拟器-企业网络部署

某企业园区网有&#xff1a;2个分厂&#xff08;分别是&#xff1a;零件分厂、总装分厂&#xff09;1个总厂网络中心 1个总厂会议室&#xff1b; &#xff08;1&#xff09;每个分厂有自己的路由器&#xff0c;均各有&#xff1a;1个楼宇分厂网络中心 每个楼宇均包含&#x…

004、变量与可变性

1. 变量与可变性 在Rust中&#xff0c;变量默认是不可变的&#xff0c;这一设计是为了让你安全方便地写出复杂、甚至是并行的代码。 当然&#xff0c;Rust也提供了可使用的可变变量的方法&#xff0c;这个待会讨论。 当一个变量是不可变时&#xff0c;一旦它被绑定到某个值上面…