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

集成学习

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

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

相关文章

【已解决】 ubuntu apt-get update连不上dl.google.com

在终端使用apt-get update时,连接dl.google.com超时,一直卡在0%,原因是当前ip无法ping到google(墙)。 解决方法: dl.google.com国内可用IP 选一个,然后按以下命令操作: cd ~ vim …

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

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

【BERT】深入BERT模型2——模型中的重点内容,两个任务

前言 BERT出自论文:《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》 2019年 近年来,在自然语言处理领域,BERT模型受到了极为广泛的关注,很多模型中都用到了BERT-base或者是BE…

数据库中的锁

锁 锁冲突是针对事务的,另一个事务能不能申请上锁,是和其他事务竞争。 一个事务内部可以加很多锁,互相并不会冲突。 级联回滚调度 多个事务有依赖关系,如果一个事务回滚,那么所有事务也需要回滚。 冲突的数据加锁安…

计算机毕业设计------SSM游戏点评网站

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,网站用户管理,游戏资讯管理,游戏类型管理,城市信息管理,竞技场管理,游戏信息管理,游戏评价信息管理等功能。…

集合基础知识点

集合基础 1. 集合的由来 当 Java 程序中需要存放数据的时候,通常会定义变量来实现数据的存储,但是,当需要存储大量数据的时候该怎么办呢?这时首先想到的是数组,但是!数组只能存放同一类型的数据&#xff…

CLion中使用C/C++ Single File Execution插件编译和运行单个文件

在开发C/C程序时,尽管项目通常以组织良好的结构进行管理,但有时我们可能只需要快速测试或运行单个C或C源文件。对于这种情况,JetBrains CLion IDE提供了一个便捷的解决方案——通过安装名为“C/C Single File Execution”的插件来实现对单个源…

机器学习——主成分分析(PCA)

目录 一、特征维度约减 1. 为何要维度约减 2. 特征维度约减的概念 二、主成分分析 1. 主成分 2. 主成分的代数定义 3. 主成分的代数推导 3.1. 第一主成分 3.2. 第二主成分 4. 主成分分析算法流程 三、主成分分析算法实现 四、总结 一、特征维度约减 1. 为何要维度…

深度学习-数据基本使用

数据使用 文章目录 数据使用一、数据的获取1、图片爬虫工具2、视频爬虫工具3、复杂的爬虫工具(flickr)4、按照用户的ID来爬取图片5、对一些特定的网站进行爬(摄影网站)(图虫、500px,花瓣网等等)6、爬虫合集 二、数据整理1、数据检查与归一化2…

VS Code中文改成空格,把空行去掉

在VS Code中同时按下CtrlH使用(.*[\u4E00-\u9FA5])|([\u4E00-\u9FA5].*)正则文法匹配中文,然后按照下图操作可以把中文改成空格。 完成之后如下图: ^\s*(?\r?$)\n可以匹配空行,然后按下图操作可以把空行去掉。

使用IDEA创建maven java项目(hello word)(1.8)

参考资料: idea创建java项目_使用IDEA创建java项目(hello word)-CSDN博客 ​ 本文代码工程下载链接: https://download.csdn.net/download/xijinno1/87441597 ​ 前提:已安装好jdk,配置好环境变量。我使用的是java 8(…

车载电子电器架构 —— 电子电气系统开发角色定义

车载电子电器架构 —— 电子电气系统开发角色定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:本文12000字,深度思考者进!!! 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的…