集成学习算法笔记

一、引言

在机器学习和数据分析领域,集成学习算法因其能够显著提高模型预测性能而备受关注。然而,任何算法在应用过程中都不可避免地会遇到一些挑战和问题,集成学习算法也不例外。其中,最为常见且关键的两大问题便是欠拟合(Underfitting)与过拟合(Overfitting)。

欠拟合,指的是模型在训练数据上都无法获得良好的性能,即模型无法充分学习到数据的内在规律和特征。这通常是由于模型复杂度不足、特征选择不当或训练数据不足等原因导致的。欠拟合的模型在应用于新数据时,往往无法给出准确的预测结果,从而限制了其在实际应用中的性能。

与欠拟合相反,过拟合则是模型在训练数据上表现优异,但在新数据或测试数据上性能急剧下降的现象。过拟合通常是由于模型复杂度过高、训练数据中的噪声过多或模型训练过度等原因造成的。过拟合的模型虽然能够完美地拟合训练数据,但却无法适应新数据的分布和变化,因此在实际应用中往往效果不佳。
在集成学习算法中,如何有效地解决欠拟合和过拟合问题,是提高模型预测性能的关键所在。针对这两个问题,研究者们提出了多种策略和方法,如Boosting技术通过逐步增强学习来解决欠拟合问题,Bagging技术则通过创建多个子集并训练独立模型来降低过拟合风险。

分类算法

在机器学习算法(分类算法)中,将算法分为两类:

弱分类器:逻辑回归算法、决策树算法

强分类器:

相当于弱分类器算法而言称呼,往往是多个弱分类器算法组成的,

集成学习算法常见两类:

Bagging 算法:袋子

使用多个软分器算法构建多个模型,使用每个模型进行预测,共同决定预测结果

(典型算法:随机森林

Boosting 算法:提升

选择某个弱分类器的算法,逐步优化算法模型,逐步提升Boosting,最终获取最佳算法模型

(典型算法:梯度提升树

二、随机森林 

概述

随机森林(Random Forest)是一种集成学习方法,它基于决策树,通过构建多个决策树并将它们的预测结果结合起来,从而提高了预测的准确性和稳定性。在随机森林中,“随机”和“森林”两个词都有其特定的含义。

“随机”的含义 在随机森林中,“随机”主要体现在两个方面:

随机选择样本:对于每一棵决策树,都从原始数据集中随机有放回地抽取一部分样本作为该决策树的训练集。这种做法称为自助法(bootstrap sampling),它允许训练集中有重复的样本,同时也可能有一些样本没有被选中。通过这种方法,每棵决策树都基于一个略有不同的训练集进行训练,从而提高了整个模型的泛化能力。

随机选择特征:在构建决策树的每个节点时,不是考虑所有的特征,而是从所有特征中随机选择一部分特征(例如,选择所有特征的平方根数量),然后基于这些随机选择的特征来找到最佳的分裂点。这种做法进一步增加了每棵决策树之间的差异,提高了整个模型的多样性。

“森林”的含义 在随机森林中,“森林”指的是由多棵决策树组成的集合。这些决策树都是基于随机选择的样本和随机选择的特征进行训练的。每棵决策树都会对其输入的数据进行预测,并产生一个分类或回归的结果。然后,这些结果会被结合起来(例如,通过投票或平均),以产生最终的预测结果。

假设我们有一个数据集,用于预测一个植物是否属于某个特定的物种。这个数据集包含了许多样本,每个样本都有多个特征(如叶子的形状、颜色、大小等)。

随机选择样本:对于第一棵决策树,我们从原始数据集中随机选择一部分样本(可能有重复)作为训练集。对于第二棵决策树,我们再次随机选择一部分样本(可能与第一棵树的训练集不同)。这样,每棵决策树都是基于一个略有不同的训练集进行训练的。

随机选择特征:在构建第一棵决策树的每个节点时,我们随机选择一部分特征(例如,选择所有特征的一半),然后基于这些特征来找到最佳的分裂点。对于第二棵决策树,我们同样随机选择一部分特征(可能与第一棵树选择的特征不同)。这样,每棵决策树在构建过程中都考虑了不同的特征组合。

森林:我们重复上述过程,构建多棵决策树(例如,100棵)。这些决策树共同组成了随机森林。当我们需要预测一个新的样本时,我们将它输入到每一棵决策树中,得到每棵树的预测结果。然后,我们通过投票(对于分类问题)或平均(对于回归问题)的方式,将这些预测结果结合起来,得到最终的预测结果。

算法步骤:

1.用N来表示训练用例(样本)的个数,M表示特征数目。

2.输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。

3.从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。

4.对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。

5.每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后会被采用)。

 

随机森林的优缺点:

优点:

  • 对于很多种资料,它可以产生高准确度的分类器;
  • 它可以处理大量的输入变数;
  • 它可以在决定类别时,评估变数的重要性;
  • 在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计;
  • 它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度;
  • 它提供一个实验方法,可以去侦测variable interactions;
  • 对于不平衡的分类资料集来说,它可以平衡误差;
  • 它计算各例中的亲近度,对于数据挖掘、侦测离群点(outlier)和将资料视觉化非常有用; 使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料;
  • 学习过程是很快速的

缺点:

  • 对噪声和异常值敏感,受到噪声和异常值影响的时候可能会导致模型的性能下降。
  • 难以解释和理解。与简单的线性模型相比随机森林的决策边界更加难以理解。
  • 参数调整复杂。随机森林的性能受到多个参数的影响,比如树的数量、每棵树的最大深度、每个节点分裂所需的最小样本数等。
  • 可能不是最优解,对于某些特定的问题,其他的机器学习算法可能较为合适。

 

与其他分类器一样,森林分类器必须拟合(fit)两个数组: 保存训练样本的数组(或稀疏或稠密的)X,大小为 [n_samples, n_features],和 保存训练样本目标值(类标签)的数组 Y,大小为 [n_samples]:

>>> from sklearn.ensemble import RandomForestClassifier
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = RandomForestClassifier(n_estimators=10)
>>> clf = clf.fit(X, Y)

 

三、梯度提升树

梯度提升树(Gradient Boosting Decision Tree,简称GBDT)是一种基于梯度提升(Gradient Boosting)框架的决策树算法。它的核心思想是通过迭代地构建多棵决策树,每棵树都尝试去纠正前一棵树的预测错误,从而逐渐提高模型的预测性能。

基本原理

集成学习:梯度提升树属于集成学习中的提升(Boosting)方法,它通过迭代训练多个弱学习器(在GBDT中通常为决策树),并将它们组合成一个强学习器来提高预测性能。
梯度提升:在提升方法中,每个新的学习器都针对前一个学习器的错误进行训练,以逐步减小预测误差。梯度提升是提升方法的一种实现,它利用损失函数的负梯度来指导每个新学习器的训练方向。
决策树:在GBDT中,每个弱学习器都是一个决策树。决策树是一种易于理解和实现的分类和回归方法,它通过递归地将数据集划分为更小的子集来生成一个树形结构。

算法步骤

初始化:首先,GBDT使用一个简单的学习器(如均值或众数)对训练数据进行初步预测,并计算预测值与真实值之间的残差。
迭代训练:然后,GBDT开始迭代训练多个决策树。在每次迭代中,它使用当前的残差作为目标变量来训练一个新的决策树。这个新的决策树将尝试拟合当前的残差,从而逐步减小预测误差。
更新预测:每个新的决策树训练完成后,GBDT都会将其预测结果与前一个模型的预测结果相加,得到新的预测值。同时,GBDT也会更新残差,以便在下一轮迭代中继续训练新的决策树。
重复迭代:GBDT会重复上述迭代过程,直到达到预设的迭代次数或满足其他停止条件(如验证集上的性能开始下降)。
输出结果:最后,GBDT将所有决策树的预测结果进行加权融合(通常使用等权融合),得到最终的预测结果。

GBDT优缺点 

优点:

  • 对混合型数据的自然处理(异构特征)
  • 强大的预测能力
  • 在输出空间中对异常点的鲁棒性(通过具有鲁棒性的损失函数实现)

缺点:

  • 可扩展性差(此处的可扩展性特指在更大规模的数据集/复杂度更高的模型上使用的能力,而非我们通常说的功能的扩展性;GBDT 支持自定义的损失函数,从这个角度看它的扩展性还是很强的!)。由于提升算法的有序性(也就是说下一步的结果依赖于上一步),因此很难做并行.

 GradientBoostingClassifier 既支持二分类又支持多分类问题。 下面的例子展示了如何训练一个包含 100 个决策树弱学习器的梯度提升分类器:

>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier

>>> X, y = make_hastie_10_2(random_state=0)
>>> X_train, X_test = X[:2000], X[2000:]
>>> y_train, y_test = y[:2000], y[2000:]

>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
...     max_depth=1, random_state=0).fit(X_train, y_train)
>>> clf.score(X_test, y_test)                 
0.913...

弱学习器(例如:回归树)的数量由参数 n_estimators 来控制;每个树的大小可以通过由参数 max_depth 设置树的深度,或者由参数 max_leaf_nodes 设置叶子节点数目来控制。 learning_rate 是一个在 (0,1] 之间的超参数,这个参数通过 shrinkage(缩减步长) 来控制过拟合。

四、总结:

Bagging通过并行训练多个基学习器并取平均(或投票)减少方差(典型算法:随机森林),而Boosting通过串行方式训练基学习器并加权组合,侧重于减少偏差(典型算法:梯度提升树)。两者均有助于降低过拟合风险,但不直接解决欠拟合。

(以上为学习笔记,侵删。)

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

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

相关文章

软考高级系统规划与管理师适合什么人考?有什么优势?

系统规划与管理师适合什么人考? 适合以下几类人群: 1. 信息技术服务规划人员:从事信息技术服务规划工作,负责制定和优化IT服务规划的人 2. 信息系统运行维护管理人员:负责信息系统日常运行维护、确保系统稳定性和可…

【Pr剪辑】01新建项目起步

【Pr学习】01新建项目起步 1、新建项目2.序列设置2.1新建序列2.2序列参数讲解2.3自定义设置 3.PR窗口认识3.1 项目窗口3.2 源窗口2.4 保存面板 4.剪辑导入4.1 素材导入4.2 视图切换4.3 时间轴4.4轨道工具4.5 节目窗口素材导入 5.基础操作5.1 取消视频音频链接5.2 单独渲染&…

网络监听技术

网络监听技术 网络监听概述网络监听环境 流量劫持网络环境共享式网络监听原理交换式网络监听交换机的工作方式交换网络监听:交换机集线器交换网络监听:端口镜像交换网络监听:MAC洪泛交换网络监听:MAC洪泛交换网络监听:…

OpenMV学习笔记3——画图函数汇总

画图,即在摄像头对应位置画出图形,对于需要反馈信息的程序来说很直观。就如上一篇文章颜色识别当中的例子一样,我们在识别出的色块上画出矩形方框,并在中间标出十字,可以直观的看到OpenMV现在识别出的色块。 目录 一…

《论文阅读》通过顺序不敏感的表示正则化实现稳健的个性化对话生成 ACL 2023

《论文阅读》通过顺序不敏感的表示正则化实现稳健的个性化对话生成 ACL 2023 前言 相关个性化生成论文推荐简介问题定义方法损失函数实验结果 前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手…

Least-Squares Rigid Motion Using SVD——文献精读(使用 SVD 方法求解 ICP 问题)

一、文章信息与摘要 文章标题:Least-Squares Rigid Motion Using SVD(使用奇异值分解的最小二乘刚性运动) 说明本文的核心目标:计算对齐两组对应点的最佳拟合刚性变换的步骤 二、问题描述 假设P{p1,p2,...,pn}和Q{q1,q2,...,qn…

以sqlilabs靶场为例,讲解SQL注入攻击原理【25-31关】

【Less-25】 首先分析源码 发现把 SQL语句中的 or、and 替换成了空格,这就导致无法使用之前的sql注入方式。 解决方案:用 && 代替 and , 用 || 代替 or , 而且&在url中有特殊含义,如果直接使用会有问题&a…

电磁兼容(EMC):BUCK变换器基本原理及传导辐射分析设计

目录 1. BUCK电路拓扑及原理 2. Buck拓扑电路电磁场分析 3.总结 开关电源替代线性电源,解决了效率和体积问题,但也带来了新的EMI问题。开关电源也是产品内部的强辐射源之一,基于透过现象看本质,将复杂问题简单化,本…

2024年06月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名(每月更新) 2024年06月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多,人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…

JAVA流程控制--For循环

1.虽然所有循环都可以用while或do...while表示,但Java提供了另外一种语句——for循环,使一些循环结构变得简单 2.for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环,结构 3.for循环执行的次数是在…

快速排序(排序中篇)

1.快速排序的概念及实现 2.快速排序的时间复杂度 3.优化快速排序 4.关于快速排序的细节 5.总代码 1.快速排序的概念及实现 1.1快速排序的概念 快速排序的单趟是选一个基准值,然后遍历数组的内容把比基准值大的放右边,比基准值小的放在左边&#xf…

编译原理【第四+七章】

考试题 1、简述语法制导翻译的基本思想 将语法分析和语义分析结合起来,通过语法规则驱动语义动作执行,用于将源程序翻译成目标代码或中间代码。 通过使用属性和语义动作,编译器可以在语法分析的同时生成目标代码或中间代码,实现…

网络原理——TCP/IP--数据链路层,DNS

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 目录 数量链路层目的地址和原地址类型校验和 DNS 数量链路层 主要的协议是以太网协议.一个横跨数据链路层和 物理层的协议,既包含了数据链路层的内容, 也包含了⼀些物理层的内容 我们来了解一…

STM32作业实现(五)温湿度传感器dht11

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

官网上线,一款令人惊艳的文本转语音模型:ChatTTS

近日,一个名为 ChatTTS 文本转语音模型的项目在github上横空出世,一经推出便引发极大关注,短短四天时间,已经狂揽了14.2k的Start量。 ChatTTS是一款专为对话场景设计的支持中英文的文本转语音(TTS)模型&…

AGM DAP-LINK 离线烧录报错信息分析

DAP-LINK 支持离线烧录。 即:先把要烧录的bin 烧录到DAP-LINK 中;然后DAP-LINK 可以脱离PC,上电后通过按键对目标板进行烧录。 CMSIS-DAP模式 跳线JGND断开,状态LED D4快闪,D3常亮(串口状态)。…

服务失败后如何重试?

服务失败后如何重试? 在分布式系统和网络应用程序中,重试策略对于有效处理瞬时错误和网络不稳定性至关重要。 重试策略能让系统在发生故障时多次尝试操作,从而提高最终成功的可能性。 下图显示了 4 种常见的重试策略。 01 线性回退 线性回…

LabVIEW开发中对RS-232、RS-485、RS-422通讯的比较及注意事项

本文介绍了LabVIEW开发中常用的RS-232、RS-485和RS-422通讯方式的区别及各自特点,详细说明了它们的适用场景和开发过程中需要注意的问题,帮助开发人员在选择和实现通讯方式时做出最佳决策。 详细说明 RS-232、RS-485、RS-422通讯简介 RS-232、RS-485和…

虚幻引擎5 Gameplay框架(四)

Gameplay重要类及重要功能使用方法(三) 虚幻的委托机制 虚幻委托之间的区别序列化就是是否可以在蓝图中执行 多播与单播的创建 制作功能:使用多播与单播将血条与血量进行实时更新首先新建一个单播与一个多播委托 实例化这两个委托的标签…

西门子电梯控制保姆级教程

一、电梯运行控制 1.电梯控制系统结构 可以理解是通过ip进行访问的 2.基于PLCSIM Adv与电梯仿真软件的控制环境搭建 虽然都是用一台电脑来控制,但是还是用以太网来连接 在FC块里面也要用两个DB块来放输入和输出 二、电梯对象的分析 在eet里面,用手动控制…