【机器学习300问】35、什么是随机森林?
〇、让我们准备一些训练数据
id | x0 | x1 | x2 | x3 | x4 | y |
0 | 4.3 | 4.9 | 4.1 | 4.7 | 5.5 | 0 |
1 | 3.9 | 6.1 | 5.9 | 5.5 | 5.9 | 0 |
2 | 2.7 | 4.8 | 4.1 | 5.0 | 5.6 | 0 |
3 | 6.6 | 4.4 | 4.5 | 3.9 | 5.9 | 1 |
4 | 6.5 | 2.9 | 4.7 | 4.6 | 6.1 | 1 |
5 | 2.7 | 6.7 | 4.2 | 5.3 | 4.8 | 1 |
表格中的x0到x4一共有5个特征,y是目标值只有0,1两个值说明是一个二分类问题。
关于决策树相关的前置知识,我这里还写了几篇文章,大家可以配合本文一起读读哦!
【机器学习300问】28、什么是决策树?http://t.csdnimg.cn/COF05【机器学习300问】33、决策树是如何进行特征选择的?
http://t.csdnimg.cn/iPcwT【机器学习300问】34、决策树对于数值型特征如果确定阈值?
http://t.csdnimg.cn/AvJZl
一、决策树的局限性
决策树算法是一种直观且易于理解的机器学习算法,通过一系列的特征测试将数据划分到不同的类别或预测结果中去,尽管他在解释性上具有优势,但存在一些的局限性。
(1)容易过拟合且不稳定
决策树容易产生复杂的模型结构,尤其是在没有剪枝或者设置最大深度的时候,很容易导致过拟合现象,无法在新数据上得到泛化能力。
决策树的构建过程对输入数据的微小变化非常敏感,可能会导致生成完全不同的决策边界,这意味着模型可能不稳定,无法很好的处理噪声。
(2)决策路径单一且容易忽略冗余特征
单一决策树依赖于构建过程中选择的特征顺序和分割阈值,这会忽视其他重要的特征无法充分利用所有信息。
当多个特征高度相关的时候,决策树可能无法有效平衡这些冗余特征的重要性,从而导致过分依赖某个特征,忽视其他同样重要的特征。
二、什么是随机森林?
随机森林是一种集成学习方法,他就像是一个由多个决策树组成的森林,每个决策树都是一个独立的分类(或者回归)模型。让我们用一个校园活动的比喻来解释它:
假设有个才艺比赛,评委要决定哪个班级的表演最出色。每个评审只能观看少数几个班级的表演,并且每个评审只专注于表演中的特定方面(例如舞蹈技巧、原创性或服装)。最终,所有评审齐聚一堂,通过投票来决定哪个班级的整体表现最优秀。
在这个任务中每个评审代表一个决策树,他们的部分观察(基于随机子集的数据和特征)就像单棵决策树的预测,而评审们的投票过程则类似于森林中所有树的预测结果的集成。通过这种方式,随机森林利用整体的智慧和多样性来提升预测的准确性,并且通常比单个决策树更加稳健。
(1)随机森林长什么样子?
这就是一个随机森林的长相,可以清楚的看到它是由多个(这里是4个)决策树构成的。
(2)随机森林的工作原理
① 每个树的训练样本随机【随机样本抽取】
在构建每棵决策树时,不是使用全部的训练数据集,而是通过自助采样(bootstrap sampling)创建多个不同的训练数据子集。这样每棵树都是基于不同的训练子集来训练的。
这样做的好处是:通过随机抽样得到的样本能够较好地代表整个总体。随机抽样允许量化抽样误差,提高估计的精确度和预测的准确性。还能降低统计样本的难度,节省资源。
上图中我们就随机抽取了四个样本来构建4个不同的决策树:
② 每个树的特征选择随机【随机特征选择】
在决策树的每次分裂时,不是从所有的特征中选择最佳分裂特征,而是从一个随机选择的特征子集中选择。然后在该子集中找到最优的特征来进行划分。
这样做的好处是:降低了单个特征对决策树生成的影响,使得模型更加鲁棒,并且能够有效利用大量冗余或相关特征带来的信息。
上图中我们就随机抽取了不同的特征形成特征子集来构建决策树:
③ 选择合适的方式集成并获得最终结果
- 分类问题:在预测新样本类别时,每棵决策树都会给出一个预测结果。随机森林采用投票机制来确定最终类别,即多数表决原则——得票最多的类别作为最终预测结果。
- 回归问题:每棵树输出一个数值预测,最后取这些预测值的平均值作为最终回归预测结果。
三、特征子集的大小怎么选择?
在随机森林算法中,特征子集的大小,也就是在每次分裂节点时考虑的特征数量,会对模型的性能产生显著影响。选择这个参数的常见方法有两种:
(1)经验法
很多随机森林实现(例如scikit-learn库)有默认的启发式规则。这些默认设置通常还不错。
- 对于分类任务,默认设置是总特征数的平方根
- 对于回归任务,默认设置是总特征数的三分之一
(2)交叉验证法
利用交叉验证来寻找最佳的特征子集,你可以在一系列值中测试算法性能,选择出最优化模型准确性的特征数量。
更多集成学习的知识,我还写了另一篇文章,希望你能喜欢~
【机器学习300问】36、什么是集成学习?http://t.csdnimg.cn/a0bz5
相关文章:

【机器学习300问】35、什么是随机森林?
〇、让我们准备一些训练数据 idx0x1x2x3x4y04.34.94.14.75.5013.96.15.95.55.9022.74.84.15.05.6036.64.44.53.95.9146.52.94.74.66.1152.76.74.25.34.81 表格中的x0到x4一共有5个特征,y是目标值只有0,1两个值说明是一个二分类问题。 关于决策树相关的前置知识&am…...

用云服务器构建gpt和stable-diffusion大模型
用云服务器构建gpt和stable-diffusion大模型 一、前置知识二、用云端属于自己的聊天chatGLM3step1、项目配置step2、环境配置1、前置知识2、环境配置流程 step3、创建镜像1、前置知识2、创建镜像流程 step4、通过 Gradio 创建ChatGLM交互界面1、前置知识2、创建ChatGLM交互界面…...

备考2024年小学生古诗文大会:历年真题15题练习和独家解析
最近有家长在问如何提高小学生古诗词的知识?如何激发小学生古诗词的学习兴趣?如何提高小学古诗词的学习成绩?如何备考2024年小学生古诗文大会?...我的建议是参加每年一度的小学生古诗词大会(免费参加,无参赛…...

C++之模板
本阶段主要针对C泛型编程和ST技术做详细讲解,探讨C更深层的使用 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 1.2 函数模板 C另一种编程思想称为 …...

Ubuntu Flask 运行 gunicorn+Nginx 部署
linux Ubuntu 下运行python 程序出现killed 原因:CPU或内存限制:在华为云上,你可能有CPU或内存使用的限制。例如,如果你使用的是一个固定大小的实例,那么超过该实例的CPU或内存限制可能会导致进程被杀死。 参考&am…...

Tuxera NTFS 2023安装使用教程 Tuxera NTFS破解版 Tuxera NTFS for Mac优惠
对于必须在Windows电脑和Mac电脑之间来回切换的Mac朋友来说,跨平台不兼容一直是一个巨大的障碍,尤其是当我们需要使用NTFS格式的硬盘在Windows和macOS之间共享文件时。因为Mac默认不支持写入NTFS磁盘。 为了解决这一问题,很多朋友会选择很便捷…...

Linux-centos如何搭建yum源仓库
1.本地搭建(无需连接外网) 1.1检查网络配置,及网络连接 打开虚拟机,点击【编辑——虚拟网络编辑器】 点击【仅主机模式】查看子网段是否和局内IP匹配 进入局内,查看网络IP是否在你上述设置的网段内,如果不…...

Vue组件中引入jQuery
两种在vue中引入jQuery的方式 1、普通html中使用jQuery 将jQuer的文件导入到项目中,然后直接使用<script src"jQuery.js"></script>即可。 <script src"jQuery.js"></script> 2、vue组件中使用jQuery 安装依赖 c…...

设计模式 --3:装扮模式
结构图 代码 #include<iostream>using namespace std;class person { public:person() {};person(string name) { this->name name; }virtual void show() {cout << "装扮的:" << this->name << endl;} private:string name; }; //装…...
element-plus中的表单校验
1. 简单校验: 1.1 在script中给出校验规则对象,主要属性名与form对象的属性名一致1.2 一个字段的校验规则可以有多个,值是一个数组,数组中的一个对象就是一条校验规则1.3 主要校验规则: 1.3.1 required:是…...

ros小问题之roslaunch tab补不全新增的功能包
在学习Gazebo这一章节时,通过catkin_create_pkg命令创建了仿真机械臂所需的软件包,创建完成后里面的内容直接拷贝了教材配套的文件,但在roslaunch时,摁tab键补不全新加的包。 重新source catkin_ws/devel/setup.bash不起作用&…...
C#常见的.Net类型(二)
目录 一、在集合中存储多个对象理解集合的选择1.列表2.字典3.堆栈4.队列5.集 二、使用Span、索引和范围Span索引范围 处理类型和属性1.特性2.创建自定义特性3.反射 一、在集合中存储多个对象 处理集合的常见类型 类型描述List动态大小的数组,可以按索引访问Dictio…...

oracle临时表空间不释放
项目报错 nested exception is java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in tablespace TEMP 原因是临时表空间满了,临时表空间一直增长,未释放导致临时表空间使用率100%。 查询临时表空间使用率 --临时表空间利用率…...

Chapter 13 Techniques of Design-Oriented Analysis: The Feedback Theorem
Chapter 13 Techniques of Design-Oriented Analysis: The Feedback Theorem 从这一章开始讲负反馈Control系统和小信号建模. 13.2 The Feedback Theorem 首先介绍 Middlebrook’s Feedback Theorem 考虑下面负反馈系统 传输函数 Guo/ui G ( s ) u o u i G ∞ T 1 T G…...

科研学习|论文解读——美国政治经济中的权力:网络分析(JASIST, 2019)
论文原题目 Power in the U.S. political economy: A network analysis 摘要 美国政治经济的许多特征产生于大型政治和经济机构之间的互动,然而我们对它们的互动性质和这些机构之间的权力分配知之甚少。在本文中,对总部设在美国的组织的网络进行了详细的…...
常用的git命令
一、常用的git命令 1. 配置 git config --local user.name "xxx" ---仅对当前Git仓库有效。配置信息将保存在当前Git仓库的 .git/config 文件中 local优先级最高,会覆盖其他范围的相同配置 git config --global user.email "xxx" ---全局…...

【AI】用iOS的ML(机器学习)创建自己的AI App
用iOS的ML(机器学习)创建自己的AI App 目录 用iOS的ML(机器学习)创建自己的AI App机器学习如同迭代过程CoreML 的使用方法?软件要求硬件开始吧!!构建管道:设计和训练网络Keras 转 CoreML将模型集成到 Xcode 中结论推荐超级课程: Docker快速入门到精通Kubernetes入门到…...
远程调用初体验笔记
远程调用初体验笔记 微服务架构通常将系统拆分成多个独立的服务单元,每个服务单元都专注于实现特定的业务功能。当一个服务需要使用另一个服务提供的功能时,就可以通过远程调用来实现。 使用步骤 1.步骤 Spring给我们提供了一个RestTemplate工具&#…...

反无人机电子护栏:原理、算法及简单实现
随着无人机技术的快速发展,其在航拍、农业、物流等领域的应用日益广泛。然而,无人机的不规范使用也带来了安全隐患,如侵犯隐私、干扰航空秩序等。为了有效管理无人机,反无人机电子护栏技术应运而生。 目录 一、反无人机电子护栏…...
Java项目利用Redisson实现真正生产可用高并发秒杀功能 支持分布式高并发秒杀
Java中的高并发秒杀场景下我们可以使用redisson来实现高并发秒杀功能, 以下就是一个可用于生产环境的高并发秒杀示例代码: pom依赖 <!-- https://mavenlibs.com/maven/dependency/org.redisson/redisson --><dependency><groupId>org.redisson</groupId&…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...