集成学习以及随机森林介绍

news2024/11/28 22:34:46

一、集成学习简介

1.什么是集成学习?

集成学习(Ensemble Learning)是一种机器学习方法,通过将多个弱学习器(weak learner)组合在一起来构建一个更强大的学习器(strong learner)。

在集成学习中,弱学习器通常是指在某种程度上性能较低的学习算法或模型,例如决策树的深度较浅、学习速度较快的版本。而强学习器则是指整个集成模型的性能更好、更具泛化能力的学习器。

集成学习的核心思想是通过组合多个弱学习器的预测结果来获得更准确、稳定的预测结果。常见的集成学习方法包括以下几种:

  1. 好而不同的个体学习器的结合:
    • 基于投票的方法:如多数投票、加权投票等,最终预测结果取决于多个弱学习器的投票结果。
    • 基于平均的方法:如平均法、加权平均法等,最终预测结果取决于多个弱学习器的平均预测值。
  2. 以序列化方式生成多个个体学习器:
    • Boosting:通过迭代训练多个弱学习器,每个弱学习器都在前一个弱学习器的基础上进行训练,更关注被前一个弱学习器错误分类的样本。
    • AdaBoost、Gradient Boosting等是常见的Boosting方法。
  3. 以并行方式生成多个个体学习器:
    • Bagging:通过自助采样法从原始训练集中有放回地随机采样出多个子训练集,然后每个子训练集上训练一个弱学习器,最终将多个弱学习器的结果进行投票或平均得到最终预测结果。
    • 随机森林是基于Bagging思想的一种常见方法,使用决策树作为弱学习器。

集成学习能够通过组合多个弱学习器的优势,提高预测准确性、降低过拟合风险,并且通常具有更好的泛化能力。它被广泛应用于各种机器学习任务和领域,取得了很好的效果。

2.机器学习的两个核心任务
  • 任务一:如何优化训练数据—>主要用于解决欠拟合问题
  • 任务二:如何提升泛化性能—>主要用于解决过拟合问题
3.集成学习中Boosting和Bagging

在集成学习中,Boosting和Bagging是两种常见的生成个体学习器的方法。

  1. Boosting(提升法): Boosting是一种序列化的集成学习方法,通过迭代地训练多个弱学习器,每个弱学习器都在前一个学习器的基础上进行训练,重点关注前一个学习器分类错误的样本。Boosting的核心思想是通过不断调整样本权重来提高集成模型的性能。常见的Boosting算法包括AdaBoost(自适应Boosting)、Gradient Boosting(梯度提升)等。
  2. Bagging(自助采样法): Bagging是一种并行的集成学习方法,通过自助采样法(有放回地随机采样)从原始训练集中产生多个不同的子训练集,并在每个子训练集上训练一个独立的弱学习器。最终的预测结果是基于多个弱学习器的平均或投票结果。

Boosting方法在每一轮迭代中都会关注错误分类的样本,逐步提高模型的性能;而Bagging方法通过并行训练多个弱学习器,通过组合多个模型的结果来减小方差。这两种方法都在实际中取得了良好的效果,并在不同的场景中得到了广泛应用。

二、Bagging和随机森林

随机森林(Random Forest)是基于Bagging思想的一种常见方法。它使用决策树作为弱学习器,在每个决策树的训练过程中,除了采用自助采样法对样本进行采样,还在每个节点的特征选择时随机选取一部分特征进行考虑。最终的预测结果是基于所有决策树的投票结果或平均结果。

1.Bagging集成原理

目标:把下面的图和方块进行分类

在这里插入图片描述

1)采样不同数据集

在这里插入图片描述

2)训练分类器

在这里插入图片描述

3)平权投票,获取最终结果

在这里插入图片描述

4)主要实现过程小结

在这里插入图片描述

2.随机森林构造过程

随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。

随机森林=Bagging+决策树

在这里插入图片描述

随机森林的构造过程:

  1. 数据集采样: 从原始训练集中进行有放回地随机采样(自助采样)生成多个子训练集。每个子训练集的大小与原始训练集相同,但其中可能包含重复的样本,也可能存在部分样本未被采样到。
  2. 决策树构建: 对于每个子训练集,独立地构建一个决策树。在构建决策树时,通常采用以下策略:
    • 针对每个节点,在候选特征集合中随机选择一个固定数量的特征子集。这样做的目的是增加决策树节点的随机性,避免过于依赖单一特征。
    • 根据选择的特征子集,使用某种分割准则(如基尼指数或信息增益)选择最佳分割特征和阈值。
    • 重复递归地在每个子节点上应用上述步骤,直到满足终止条件,如达到最大深度、节点样本数量小于阈值或节点纯度达到一定程度。
  3. 预测结果集成: 对于分类任务,通过对所有决策树的预测结果进行投票,选择出现最多次数的类别作为最终的集成预测结果。 对于回归任务,将所有决策树的预测结果进行平均得到最终的集成预测结果。

为什么要随机抽取训练集?

  • 如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的

为什么要有放回地抽样?

  • 如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的。这样每棵树都是“有偏的”,都是绝对”片面的“,也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树的投票表决。
3.包外估计(Out-of-Bag Estimation)

包外估计(Out-of-Bag Estimation)是随机森林中一种用于评估模型性能的技术。在构建每棵决策树时,由于自助采样的特性,约有三分之一的样本未被用于构建该决策树。包外估计利用这部分未被采样的样本来评估模型的预测性能

具体步骤如下:

  1. 对于每个样本,记录它在哪些决策树的构建中未被采样(即未包含在训练集中)。
  2. 对于每棵决策树,使用未被采样的样本作为验证集,进行预测。
  3. 对于每个样本,统计它在未被采样的决策树中的预测结果。
  4. 对所有未被采样的样本,计算它们的平均预测结果。

对于分类任务,可以计算每个样本的预测类别与真实类别的准确率或混淆矩阵等评价指标。

对于回归任务,可以计算每个样本的预测值与真实值的均方误差等指标。

包外估计提供了一种无需额外验证集的方法来评估随机森林模型的性能,可以有效地利用训练数据,并为模型的泛化能力提供一个较为准确的估计。

4.随机森林的API介绍
  • sklearn.ensemble.RandomForestClassifier(n_estimators=10,criterion=“gini”,max_depth=None,bootstrap=True,random_state=None,min_samples_split=2)

    • n_estimators:森林里的数目数量(即决策树数量),默认值为10
    • criterion:分割特征的测量方法,默认值为gini
    • max_depth:树的最大深度,无默认值
    • bootstrap:是否在构建树时采用放回抽样
    • min_samples_split:内部节点再划分所需最小样本数,默认值为2
      • 这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split的值,则不会继续再尝试选择最优特征来进行划分.
      • 如果样本数不大,不需要管这个值。如果样本数特别大,建议增大这个值
    • min_sample_leaf:叶子节点的最小样本数,默认值为1
      • 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于min_samples_split的值,则会和兄弟节点一起被剪枝。
      • 较小的叶子使模型更容易捕捉训练数据中的噪声
    • min_impurity_split:节点划分的最小不纯度
      • 这个值限制了决策树的增长,如果某节点的不纯度小于这个阈值,则该节点不再生成子节点,
    • max_features=“auto”:每个决策树的最大特征数量
      • 值为”auto“:把总特征数量的平方根作为每个决策树的最大特征数量
      • 值为”sqrt“:把总特征数量的平方根作为每个决策树的最大特征数量
      • 值为”log2“:计算以2为底总特征数量的对数,并将结果作为每个决策树的最大特征数量
      • 值为”None“:每个决策树的特征数量就是总特征数量

    上面参数中最重要的有:

    1. 最大特征数:max_features
    2. 最大深度:max_depth
    3. 内部节点再划分所需最小样本数:min_samples_split
    4. 叶子节点的最小样本数:min_sample_leaf
5.Bagging集成优点

Bagging + 决策树/线性回归/逻辑回归/深度学习… = Bagging集成学习方法

  • 均可在原有算法上提高约2%左右的泛化正确率
  • 简单、方便、通用

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

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

相关文章

C语言进阶——字符函数和字符串函数(下)

在前面我们已经学习了strlen、strcpy、strcat、strcmp几个库函数,今天我们继续学习剩余的库函数。 上期链接: C语言进阶——字符函数和字符串函数(上)_wangjiushun的博客-CSDN博客 目录: 3、长度受限制的字符串函数…

Redis(四)持久化策略

文章目录 持久化策略1、为什么Redis需要持久化2、Redis提供的两种持久化方式(1)RGB持久化详解概述RGB持久化的两种触发策略手动触发实例测试:自动触发实例测试: 查看rdb的状态信息info Persistence rdb模式的优缺点 (2)AOF持久化详解AOF持久化步骤&#…

近期复盘 | 想多了都是问题,想开了都是答案

文章目录 🌹四月坚持背单词,五月坚持利用AI写文章😊六月会坚持干什么🙌23年7月:毕业两年,参保两年👀强制存储,消费降级,开源节流😜好好深耕能力🎁…

JavaScript 进阶 (一)

目录 作用域 局部作用域 函数作用域 块作用域 全局作用域 作用域链 JS垃圾回收机制 闭包 变量提升 函数进阶 函数提升 函数参数 箭头函数 基本语法 箭头函数参数 箭头函数this 解构赋值 数组解构 对象解构 遍历数组 forEach 方法(重点) …

shell SNAT与DNAT

文章目录 SNATSNAT原理与应用SNAT实验 DNATDNAT原理与应用DNAT实验 SNAT SNAT原理与应用 SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有不能早Internet中正常路由) SNAT原理:修改数据包的源地址。 SNAT转换前提…

文心一言 VS 讯飞星火 VS chatgpt (23)-- 算法导论4.2 5题

五、V.Pan 发现一种方法,可以用 132 464 次乘法操作完成 68 x 68 的矩阵相乘,发现另一种方法,可以用 143 640 次乘法操作完成 70 x 70 的矩阵相乘,还发现一种方法,可以用155 424次乘法操作完成 72 x 72 的矩阵相乘。当…

数据安全治理科技产品能力-数据安全复合治理框架和模型解读(2)

数据治理,数据安全治理行业在发展,在实践,所以很多东西是实践出来的,哪有什么神仙理论指导,即使有也是一家之说,但为了提高企业投产比,必要的认知是必须的,落地数据安全治理科技水平差异直接决定产品和项目是否可持续性,当前和未来更需要专业和有效创新。数据安全治理…

自动驾驶业内动态简讯

1. 引言 参与自动驾驶领域相关研发工作已有多年,针对该领域的快速发展,收集业内各大科技公司最新进展和技术突破,供伙伴们交流探讨。 闲话少说,直接开始吧! 2. 博世 据新闻介绍,博世在德国道路上测试L4级无人驾驶汽…

java 区分缺陷Defects/感染Infections/失败Failure

java 区分缺陷Defects/感染Infections/失败Failure 缺陷Defects 软件故障总是从代码中一个或多个缺陷的执行开始。 缺陷只是一段有缺陷、不正确的代码。 缺陷可能是程序语句的一部分或完整部分,也可能对应于不存在但应该存在的语句。 尽管程序员要对代码中的缺陷负…

基于SSM的甜品店商城系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着社会经济的发展和…

Altium Designer 相同电路多组复制布线

在进行设计开发的时候,总会遇到相同的电路,或者模块,这些电路可以使用相同的布局和走线。我们可以画好其中一部分,然后直接复制,就可以提高效率。下面记录我自己的实际操作过程,有一些地方遇到了问题&#…

Android | Android OS 源码结构

参考:AndroidXRef (http://androidxref.com/)版本:Pie - 9.0.0_r3 整体结构 对于 Android OS 的源码目录来说,各个版本的结构大同小异,随不同版本特性会有个别目录差异。编译后会额外产生一个 out 文件夹用于存储编译产生的文件。…

Unity使用SteamVR2.0实现基本功能(瞬移,抓取物品,射线点击,UI交互等)

基础设置 把SteamVR的Player预制件拖到一个空场景,删掉场景内原本的相机 一.瞬移 新建一个Plane,当做地板找到SteamVR的人物瞬移控制器 Teleporting ,把它拖到场景里 1. 范围移动 我们需要在可以移动的区域,也就是碰撞器上,挂TeleportArea脚本 这个脚本会自动修改你的材质球…

抖音seo源码--开源,支持二开不加密

抖音seo源码,抖音seo矩阵系统源码技术搭建,抖音seo源码技术开发思路梳理搭建 开发思路: 抖音seo源码如何搭建?抖音seo排名优化系统软件部分源码分析,代码打包中。。。 场景:在 python 中,你可…

windows下修改PyCharm默认terminal 在Git Bash中使用conda

windows下修改PyCharm默认terminal & 在Git Bash中使用conda windows下修改PyCharm默认terminal在Git Bash中使用conda windows下修改PyCharm默认terminal PyCharm的terminal默认使用的是powershell,但是conda环境是通过cmd运行的,因此可以将PyChar…

安捷伦N5182A是德KEYSIGHT N5182B 100KHZ至3G/6G信号发生器

Agilent N5182A、Keysight N5182A MXG 射频矢量信号发生器,100 kHz - 3 GHz 或 6 GHz ​Keysight N5182A (Agilent) MXG 射频矢量信号发生器具有快速频率、幅度和波形切换、带电子衰减器的高功率和高可靠性 – 所有这些都集成在两个机架单元 (2RU) 中。Keysight N5…

H743 USBHOST协议栈 CPU占用率高的问题。

经过查看,是因为USBHOST频繁的进入中断导致,单步执行发现,是因为发生了USB_OTG_HCINT_CHH或者USB_OTG_HCINT_NAK中断了,只在CHH中断服务函数里,给USB主线程发了1个消息,又引起了USBH_Process_OS主线程的频繁…

YOLOV7训练TT100K交通标识符数据集

《临江仙》 作者:缠中说禅 浊水倾波三万里,愀然独坐孤峰。龙潜狮睡候飙风。无情皆竖子,有泪亦英雄。 长剑倚天星斗烂,古今过眼成空。乾坤俯仰任穷通。半轮沧海上,一苇大江东。 一、yolov7环境搭建 参…

【内网穿透】远程访问RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 转载自cpolar内网穿透的文章:无公网IP&…

【C语言】刷题训练营 —— 每日一练

文章目录 前言 BC113 小乐乐定闹钟BC114 小乐乐排电梯BC115 小乐乐与欧几里得BC116 小乐乐改数字BC107 矩阵转置BC117 小乐乐走台阶BC118 小乐乐与序列BC119 小乐乐与字符串BC121 小乐乐学编程BC122 小乐乐算平均分完结 前言 大家好,继续更新专栏 c_牛客&#xff0…