当前位置: 首页 > article >正文

集成学习之随机森林

目录

一、集成学习的含义

二、集成学习的代表

三、集成学习的应用

1、分类问题集成。(基学习器是分类模型)

2、回归问题集成。(基学习器是回归模型)

3、特征选取集成。

四、Bagging之随机森林

1、随机森林是有多个决策树,我们将他们构成出森林。

2、随机森林总共有四个特点:

(1)数据采样随机

(2)特征选取随机

(3)森林

(4)基分类器为决策树

3、随机森林的生成步骤

1、对原始数据集进行随机采样

2、每个基分类器获取不同的数据集,每个数据的的特征也是随机抽取的

3、将随机抽取的数据及特征传递给决策树进行训练

4、通过强分类器投票,选出性能指标占比最多的作为结果(例如结果中很多预测的是0,那么最终就会通过强分类器预测为0)

五、Bagging之随机森林的优缺点(集成学习的共有优点)

1、具有极高的准确率

2、随机性的引入,使得随机森林的抗噪声能力很强

3、随机性的引入,使得随机森林不容易过拟合

4、能够处理很高维度的数据,不用做特征选择

5、容易实现并行化计算

6、缺点

六、随机森林模型的简单使用

1、随机森林模型的参数


一、集成学习的含义

集成学习是将多个基学习器进行组合,来实现比单一学习器显著优越的学习性能。

这里的每个基学习器可以是任意机器学习的模型,可以是线性回归、逻辑回归、KNN、决策树等模型,基学习器可以使用单一模型组合,也可以使用多模型随机组合。

使用训练数据进行模型训练,然后将测试集的数据传入,选择结果。

二、集成学习的代表

.bagging方法:典型的是随机森林方法

.boosting方法:典型的Xgboost

.stacking方法:堆叠模型

三、集成学习的应用

1、分类问题集成。(基学习器是分类模型)

2、回归问题集成。(基学习器是回归模型)

3、特征选取集成。

(场景:当我们的数据集特别大时,就会有很多的特征,那么这些特征对分离结果的影响有多大,我们可以计算该特征与分类结果之间的相关系数来进行估量,在随机森林模型中可以对每个特征进行特征选取,它可以内部对每个特征量化一个指标,最终结果会选择尽可能多的相关性比较大的特征。)

所以集成学习之随机森林既可以做分类问题也可以做回归问题。

四、Bagging之随机森林

1、随机森林是有多个决策树,我们将他们构成出森林。

2、随机森林总共有四个特点:

(1)数据采样随机

假设我们有一个数据集,那么针对每一个基分类器,我们都会随机抽取一定比例(例如80%)的数据做为训练集,其余作为测试集,特别要注意,针对每一个基分类器都是随机抽取,这保证了我们的数据会被充分使用,同时随机抽取会最大程度的覆盖所有可能的情况。

(2)特征选取随机

针对同一个数据集,那么我们每次选取数据时,会随机抽取80%(这时认为根据实际情况设定的)的特征,那么对于每个数据集的特征选取会出现有的数据集抽到很差的特征那么该数据集展现的性能就会很差,如果抽取到的都是好的特征,那么模型的性能也会很好。

(3)森林

有多个决策树,所以称之为森林。

(4)基分类器为决策树

每个决策树学习的数据都是不同的。

3、随机森林的生成步骤

1、对原始数据集进行随机采样

2、每个基分类器获取不同的数据集,每个数据的的特征也是随机抽取的

3、将随机抽取的数据及特征传递给决策树进行训练

4、通过强分类器投票,选出性能指标占比最多的作为结果(例如结果中很多预测的是0,那么最终就会通过强分类器预测为0)

五、Bagging之随机森林的优缺点(集成学习的共有优点)

1、具有极高的准确率

2、随机性的引入,使得随机森林的抗噪声能力很强

数据的随机抽取会使得某些基分类器抽取到噪声数据,也会有抽取不到噪声数据的基分类器,因为噪声数据出现的概率占少数,所以在强分类器投票选择时,这些抽取到噪声的基分类器对我们最终分类结果的影响特别小,因此我们的抗噪声能力特别强。

3、随机性的引入,使得随机森林不容易过拟合

因为随机森林的结果是由多个决策树决定的,所以不容易出现过拟合,过拟合的表现是在训练集上表现得很好,但是在测试集上得效果很差,产生原因是由于受单一数据影响太大,而随机森林会根据多个结果共同决定基本不会出现过拟合得情况。

4、能够处理很高维度的数据,不用做特征选择

不用做特征选取的原因,很差的特征对决策树的影响很小,因为即使是很差的特征,我们每个基分类器抽取是随机的,不会有很多分类器抽到这个差的特征,所以对最终结果的影响不大,就不用去特意选择特征。

5、容易实现并行化计算

随机森林的结构是由多个基分类器构成,那么每个基分类器都可以部署在一个单独的服务器上,多个分类器可以放在多个服务器上,实现了多个分类器同时训练,并行计算。

6、缺点

1、当随机森林中的决策树的个数很多时,训练时需要的空间和时间会比较大。

2、随机森林模型还有许多不好解释的地方,有点像个黑盒模型。

六、随机森林模型的简单使用

1、随机森林模型的参数

class sklearn.ensemble.RandomForestClassifier(n_estimators=’warn’, criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None)

随机森林重要的一些参数:

1.n_estimators :(随机森林独有)

        随机森林中决策树的个数。

        在0.20版本中默认是10个决策树;

        在0.22版本中默认是100个决策树;

2. criterion :(同决策树)

节点分割依据,默认为基尼系数。

可选【entropy:信息增益】

3.max_depth:(同决策树)【重要】

        default=(None)设置决策树的最大深度,默认为None。

(1)数据少或者特征少的时候,可以不用管这个参数,按照默认的不限制生长即可

(2)如果数据比较多特征也比较多的情况下,可以限制这个参数,范围在10~100之间比较好

4.min_samples_split : (同决策树)【重要】

        这个值限制了子树继续划分的条件,如果某节点的样本数少于设定值,则不会再继续分裂。默认是2.如果样本量不大,不需要管这个值。如果样本量数量级非常大,则建议增大这个值。

5.min_samples_leaf :(同决策树)【重要】

        这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。 默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。

 【叶是决策树的末端节点。 较小的叶子使模型更容易捕捉训练数据中的噪声。 一般来说,我更偏向于将最小叶子节点数目设置为大于50。在你自己的情况中,你应该尽量尝试多种叶子大小种类,以找到最优的那个。】

【比如,设定为50,此时,上一个节点(100个样本)进行分裂,分裂为两个节点,其中一个节点的样本数小于50个,那么这两个节点都会被剪枝】

6.min_weight_fraction_leaf : (同决策树)

        这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。 默认是0,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了。【一般不需要注意】

7.max_features : (随机森林独有)【重要】

        随机森林允许单个决策树使用特征的最大数量。选择最适属性时划分的特征不能超过此值。

当为整数时,即最大特征数;当为小数时,训练集特征数*小数;if “auto”, then max_features=sqrt(n_features).If “sqrt”, then max_features=sqrt(n_features).If “log2”, then max_features=log2(n_features).If None, then max_features=n_features.

【增加max_features一般能提高模型的性能,因为在每个节点上,我们有更多的选择可以考虑。 然而,这未必完全是对的,因为它降低了单个树的多样性,而这正是随机森林独特的优点。 但是,可以肯定,你通过增加max_features会降低算法的速度。 因此,你需要适当的平衡和选择最佳max_features。】

8.max_leaf_nodes:(同决策树)

                通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制,具体的值可以通过交叉验证得到。

【比如,一颗决策树,如果不加限制的话,可以分裂100个叶子节点,如果设置此参数等于50,那么最多可以分裂50个叶子节点】

9.min_impurity_split:(同决策树)

        这个值限制了决策树的增长,如果某节点的不纯度(基于基尼系数,均方差)小于这个阈值,则该节点不再生成子节点。即为叶子节点 。一般不推荐改动默认值1e-7。

10.bootstrap=True(随机森林独有)

        是否有放回的采样,按默认,有放回采样

11. n_jobs=1:

        并行job个数。这个在是bagging训练过程中有重要作用,可以并行从而提高性能。1=不并行;n:n个并行;-1:CPU有多少core,就启动多少job。

2、代码简单实现

(1)导入必要的库

import pandas as pd

(2)数据读取及预处理

data=pd.read_csv('./data/spambase.csv')x=data.iloc[:,:-1]
y=data.iloc[:,-1]

3、数据集划分

from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test= \train_test_split(x,y,test_size=0.2,random_state=2)

4、模型导入训练

from sklearn.ensemble import RandomForestClassifierrf=RandomForestClassifier(n_estimators=100,max_features='auto',# max_leaf_nodes=50,random_state=4
)rf.fit(x_train,y_train)

5、模型效果预测

from sklearn import metrics# 自测
train_predicted=rf.predict(x_train)
print(metrics.classification_report(y_train,train_predicted))
# cm_plot(y_train,train_predicted)# 测试集test_predicted=rf.predict(x_test)
print(metrics.classification_report(y_test,test_predicted))
# cm_plot(y_test,test_predicted)

6、数据可视化

import matplotlib.pyplot as pltimportances=rf.feature_importances_
im=pd.DataFrame(importances,columns=['importances'])clos=data.columns
clos_1=clos.values
clos_2=clos_1.tolist()
clos=clos_2[0:-1]
im['clos']=closim=im.sort_values(by=['importances'],ascending=False)[:10]index=range(len(im))
plt.yticks(index,im.clos)
plt.barh(index,im['importances'])
plt.show()

7、最终效果

相关文章:

集成学习之随机森林

目录 一、集成学习的含义 二、集成学习的代表 三、集成学习的应用 1、分类问题集成。(基学习器是分类模型) 2、回归问题集成。(基学习器是回归模型) 3、特征选取集成。 四、Bagging之随机森林 1、随机森林是有多个决策树&a…...

在线JSON格式校验工具站

在线JSON校验格式化工具(Be JSON)在线,JSON,JSON 校验,格式化,xml转json 工具,在线工具,json视图,可视化,程序,服务器,域名注册,正则表达式,测试,在线json格式化工具,json 格式化,json格式化工具,json字符串格式化,json 在线查看器,json在线,json 在线验…...

SAP的WPS导出找不到路径怎么办;上载报错怎么办

一.打开注册编辑器 二.输入以下地址 计算机\HKEY_CLASSES_ROOT\ExcelWorksheet\Protocol\StdFileEditing\Server 去除掉EXE后面的命令即可 二:WPS上载文件没反应怎么办 如何切换整合模式或多组件模式-WPS学堂 根据官方操作把整合模式改成多组件模式...

Moonlight-16B-A3B: 变革性的高效大语言模型,凭借Muon优化器打破训练效率极限

近日,由Moonshot AI团队推出的Moonlight-16B-A3B模型,再次在AI领域引发了广泛关注。这款全新的Mixture-of-Experts (MoE)架构的大型语言模型,凭借其创新的训练优化技术,特别是Muon优化器的使用,成功突破了训练效率的极…...

rust学习笔记17-异常处理

今天聊聊rust中异常错误处理 1. 基础类型&#xff1a;Result 和 Option&#xff0c;之前判断空指针就用到过 Option<T> 用途&#xff1a;表示值可能存在&#xff08;Some(T)&#xff09;或不存在&#xff08;None&#xff09;&#xff0c;适用于无需错误信息的场景。 f…...

PyTorch系列教程:使用预训练语言模型增强文本分类

文本分类仍是自然语言处理&#xff08;NLP&#xff09;领域的一项基础任务&#xff0c;其目标是将文本数据归入预先设定的类别之中。预训练语言模型的出现极大地提升了这一领域的性能。本文将探讨如何利用 PyTorch 来利用这些模型&#xff0c;展示它们如何能增强文本分类任务。…...

LabVIEW 线性拟合

该 LabVIEW 程序实现了 线性拟合&#xff08;Linear Fit&#xff09;&#xff0c;用于计算给定一组数据点的斜率&#xff08;Slope&#xff09;和截距&#xff08;Intercept&#xff09;&#xff0c;并将结果可视化于 XY Graph 中。本案例适用于数据拟合、实验数据分析、传感器…...

nacos安装,服务注册,服务发现,远程调用3个方法

安装 点版本下载页面 服务注册 每个微服务都配置nacos的地址&#xff0c;都要知道 服务发现 2个是知道了解 远程调用基本实现 远程调用方法2&#xff0c;负载均衡API测试 远程调用方法3&#xff0c;注解 负载均衡的远程调用&#xff0c; 总结 面试题...

k8s主要控制器简述(一)ReplicaSet与Deployment

目录 一、ReplicaSet 关键特性 示例 解释 支持的 Operator 二、Deployment 1. 声明式更新 示例 2. 滚动更新 示例 3. 回滚 示例 4. ReplicaSet 管理 示例 5. 自动恢复 示例 6. 扩展和缩容 示例 示例 一、ReplicaSet ReplicaSet 是 Kubernetes 中的一个核心控…...

Java中的消息中间件对比与解析:RocketMQ vs RabbitMQ

消息中间件&#xff08;Message Queue, MQ&#xff09;是分布式系统中实现异步通信、解耦服务和流量削峰的关键组件。在Java生态中&#xff0c;RocketMQ和RabbitMQ是两个广泛应用的消息队列系统&#xff0c;但它们在设计理念、功能特性和适用场景上存在显著差异。本文将从核心功…...

Android14 Log.isLoggable判断的分析

Android14 Log.isLoggable判断的分析 文章目录 Android14 Log.isLoggable判断的分析一、前言二、答案和分析1、Log.isLoggable 设置成true2、Log.isLoggable 分析&#xff08;1&#xff09;Log.java&#xff08;2&#xff09;android_util_Log.cpp&#xff08;3&#xff09;pro…...

Mac:JMeter 下载+安装+环境配置(图文详细讲解)

&#x1f4cc; 下载JMeter 下载地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi &#x1f4cc; 无需安装 Apache官网下载 JMeter 压缩包&#xff0c;无需安装&#xff0c;下载解压后放到自己指定目录下即可。 按我自己的习惯&#xff0c;我会在用户 jane 目…...

Python IP解析器 ip2region使用

说明&#xff1a;最近需要在python项目内使用IP定位所在城市的需求&#xff0c;没有采用向外部ISP服务商API请求获取信息的方案&#xff0c;则翻了翻&#xff0c;在搞Java时很多的方案&#xff0c;在Python端反而可选择范围很小。 # 示例查询 ips ["106.38.188.214"…...

labview与西门子1500plc进行S7通讯(仿真效果)

环境&#xff1a; 1.博图V16 2.S7-PLCSIM Advanced V3.0 3.labview2020 4.HslCommunication的dll文件 运行效果图 通过使用HslCommunication的库文件来对西门子plc进行通讯 labview代码 代码打包 通过网盘分享的文件&#xff1a;labview进行s7通讯测试.rar 链接: https:/…...

Oracle 公布 Java 的五大新功能

Java 增强提案包括语言增强和性能优化&#xff0c;从 JDK 25 中的稳定值 API 开始。 随着JDK&#xff08;Java 开发工具包&#xff09;24刚刚全面上市&#xff0c;Oracle 提前透露了不久的将来即将推出的 Java 功能&#xff0c;包括增强原始装箱到空限制值类类型。 3 月 18 日…...

台式机电脑组装---电脑机箱与主板接线

台式机电脑组装—电脑机箱与主板接线 1、机箱连接主板的跳线一般主要有USB 2.0、USB 3.0、前置音频接口(HD_AUDIO)以及POWER SW、RESET SW、POWER LED、HDD LED四个主板跳线&#xff0c;这些跳线分别的含义如下。 RESET SW&#xff1a;机箱重启按键&#xff1b;注&#xff1a…...

ubuntu高并发内核参数调优 - (压测客户端调优)

业务上要求集群提供10w并发&#xff0c;10w并发听上去不是很难&#xff0c;但10w并发持续1小时呢 在业务上线之前还需要我们自己对业务进行压测&#xff0c;俗称benchmark。 压测的服务器也是需要进行性能调优的&#xff0c;以下列出调优前后的参数对比&#xff0c;更直观的分析…...

动作捕捉手套如何让虚拟现实人机交互 “触手可及”?

在虚拟与现实逐渐交融的当下&#xff0c;动作捕捉技术正以前所未有的速度革新着多个领域。 动作捕捉技术&#xff0c;简称“动捕”&#xff0c;已经从早期的影视特效制作&#xff0c;逐步拓展到游戏开发、虚拟现实、机器人控制等多个领域。 而mHandPrO数据手套作为这一领域的…...

笔记本电脑关不了机是怎么回事 这有解决方法

在快节奏的现代生活中&#xff0c;笔记本电脑已成为我们工作、学习和娱乐的得力助手。在使用电脑的过程中&#xff0c;笔记本电脑突然关不了机了&#xff0c;怎么回事&#xff1f;下面驱动人生就来讲一讲笔记本电脑不能正常关机的解决方法&#xff0c;有需要的可以来看看。 一、…...

数据库:一文掌握 MongoDB 的各种指令(MongoDB指令备忘)

文章目录 入门连接 MongoDB Shell显示数据库切换数据库显示集合运行 JavaScript 文件 CRUD创建寻找文件使用运算符查找文档读取更新删除 数据库和集合Drop创建集合其他采集功能 索引列表索引创建索引删除索引隐藏/取消隐藏索引 方便的命令 其它改变流分片集群副本集 MongoDB 此…...

麒麟操作系统作为服务器,并且需要在浏览器上调试 MATLAB

在内网环境下&#xff0c;使用麒麟操作系统作为服务器&#xff0c;并且需要在浏览器上调试 MATLAB 程序&#xff0c;这确实复杂&#xff0c;但仍然有可行的解决方案。麒麟操作系统是国产化的 Linux 发行版&#xff08;如基于 Ubuntu Kylin 或银河麒麟&#xff09;&#xff0c;因…...

给管理商场消防安全搭建消防安全培训小程序全过程

一、需求沟通 “我是管理商场消防安全的嘛&#xff0c;做这个的作用呢&#xff0c;1是商场的所有商户员工可以看平面或者视频随时自学&#xff0c; 2是我们定期培训必修课程、考试&#xff0c;这个需要留存他们的手签字的签到表确认我们讲给他们听了&#xff08;免责很重要&am…...

Flutter:页面滚动,导航栏背景颜色过渡动画

记录&#xff1a;导航默认透明&#xff0c;页面发生滚动后&#xff0c;导航背景色由0-1&#xff0c;过渡到白色背景。 view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:get/get.dart; import package:redo…...

VSCode + CMake

参考文献&#xff1a; 如何用 GCC, CMake 和 Make 编译C/C代码Windows 上的 Linux 子系统&#xff1a;WSLWSL&#xff1a;桌面 UI 远程连接 RDP 配置 VScode 文章目录 CMake 配置VSCode 配置launch.jsontask.jsonc_cpp_properties.json CMake 配置 编写如下的 CmakeLists.t…...

Docker进阶篇1:什么是Docker数据卷?为什么需要Docker数据卷?Docker数据卷3种类型介绍

大家好我是木木&#xff0c;在当今快速发展的云计算与云原生时代&#xff0c;容器化技术蓬勃兴起&#xff0c;Docker 作为实现容器化的主流工具之一&#xff0c;为开发者和运维人员带来了极大的便捷 。下面我们一起开始进阶第1篇&#xff1a;什么是Docker数据卷&#xff1f;为什…...

(2025|ICLR|华南理工,任务对齐,缓解灾难性遗忘,底层模型冻结和训练早停)语言模型持续学习中的虚假遗忘

Spurious Forgetting in Continual Learning of Language Models 目录 1. 引言 2. 动机&#xff1a;关于虚假遗忘的初步实验 3. 深入探讨虚假遗忘 3.1 受控实验设置 3.2 从性能角度分析 3.3 从损失景观角度分析 3.4 从模型权重角度分析 3.5 从特征角度分析 3.6 结论 …...

从两指到三指:Robotiq机器人自适应夹持器技术解析

工业自动化离不开高效工具的支持。Robotiq机器人工具凭借其模块化设计和智能化编程技术&#xff0c;提升了设备的灵活性和操作效率。Robotiq机器人工具精准的传感器和自适应夹持器技术&#xff0c;能够满足多样化的应用需求&#xff0c;为制造业、物流和科研等领域提供可靠的解…...

【css酷炫效果】纯CSS实现悬浮弹性按钮

【css酷炫效果】纯CSS实现悬浮弹性按钮 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492020 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&…...

力扣222. 完全二叉树的节点个数(Java实现)

222. 完全二叉树的节点个数 1. 思路 这个题最简单的做法就是暴力遍历&#xff0c;时间复杂度为O(n)。 我们现在用低于O(n)的做法解决问题。 对于一棵满二叉树&#xff0c;它的节点数 2 h - 1 (h 是指树一共有多少层) 头节点不断遍历左孩子直至为null&#xff0c;得到树高…...

MySQL函数大全(持续更新)

MySQL常用函数 一、字符串函数 函数功能 CONCAT(s1, s2, ...) 拼接字符串 CONCAT_WS(sep, s1, s2, ...) 指定分隔符拼接字符串 SUBSTRING(str, start, length) 截取字符串 LEFT(str, length) 从左边截取指定长度字符串 RIGHT(str, length) 从右边截取指定长度字符串 LENGTH(s…...