基于随机森林实现特征选择降维及回归预测(Matlab代码实现)

news2024/11/24 17:55:45

目录

摘要:

1.随机森林:

2.随机森林的特征选取:

3.基于Matlab自带的随机森林函数进行特征选取具体步骤

(1)加载数据

(2)首先建立随机森林并使用全部特征进行车辆经济性预测

(3)使用随机森林进行特征选择

(4)评价各个特征之间的相关性

(5)使用筛选后的特征进行测试

4 Matlab相关代码


摘要:

演示如何通过Matlab自带的随机森林函数进行特征选择,筛选出大量特征数据中对于回归预测最重要的特征,并对各特征进行重要性排序,充分反应不同特征的重要性。演示如何在种植随机树林时为数据集选择适当的拆分预测变量选择技术。随机森林特征筛选一种特征选择技术,特征选择( Feature Selection )也称特征子集选择( Feature Subset Selection , FSS ),或属性选择( Attribute Selection )。是指从已有的M个特征(Feature)中选择N个特征使得系统的特定指标最优化,是从原始特征中选择出一些最有效特征以降低数据集维度的过程,是提高学习算法性能的一个重要手段,也是模式识别中关键的数据预处理步骤。对于一个学习算法来说,好的学习样本是训练模型的关键。

1.随机森林:

随机森林算法(Random Forest,RF)是一种 新型机器学习算法,是利用多棵决策树对样本进行训练并集成预测的一种分类器,它采用Boot‐ strap重抽样技术从原始样本中随机抽取数据构 造多个样本,然后对每个重抽样样本采用节点的 随机分裂技术构造多棵决策树,最后将多棵决策树组合,并通过投票得出最终预测结果。

根据下列算法而建造每棵树 :

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

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

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

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

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

2.随机森林的特征选取:

随机森林算法利用 OOB 误差计算特征变量相对重要性,并对特征变量进行排序和筛选,这一特点对于大量特征参与分类时非常适用,因为众多特征之间的高相关性会产生高维问题,会显著降低提取的精度。现阶段机器学习模型的特征空间往往庞大且复杂,呈现出高维性、非线性等复杂特点,面对这样的海量高维数据,剔除冗余特征进行特征筛选,已成为当今信息与科学技术面临的重要问题之一。实际上,特征选择正是从输入特征中优选了重要性高、信息量丰富的特征来提高地物信息提取的精度,在遥感应用中有着重要的应用潜力。

在特征重要性的基础上,特征选择的步骤如下:

1.计算每个特征的重要性,并按降序排序

2.确定要剔除的比例,依据特征重要性剔除相应比例的特征,得到一个新的特征集

3.用新的特征集重复上述过程,直到剩下m个特征(m为提前设定的值

4.根据上述过程中得到的各个特征集和特征集对应的袋外误差率,选择袋外误差率最低的特征集

3.基于Matlab自带的随机森林函数进行特征选取具体步骤

(1)加载数据

加载Matlab自带的数据集。建立一个随机森林预测模型,该模型根据汽车的气缸数、发动机排量、马力、重量、加速度、车型年份和原产国来预测汽车的燃油经济性。使用Load函数进行数据的加载。

各单词解释:

【Cylinders,Displacement,Horsepower,Weight,Acceleration,Model_Year,Origin】

【气缸数目,排量,马力,重量,加速度,车辆年份,原产地】

(2)首先建立随机森林并使用全部特征进行车辆经济性预测

使用templateTree和fitrensemble这两个函数建立随机森林,并先使用全部的特征进行车辆经济性进行预测。输入为【气缸数目,排量,马力,重量,加速度,车辆年份,原产地】,输出为【车辆经济性】,随机森林中的决策树数量设置为100。训练模型并进行预测分析,具体结果如下,使用全部特征进行预测的准确度为87.1417.

(3)使用随机森林进行特征选择

根据第二点所述,利用 OOB 误差计算特征变量相对重要性,并对特征变量进行排序和筛选,编写相关程序进行随机森林特征筛选,具体结果与各个特征变量的重要性情况如下所示:

(4)评价各个特征之间的相关性

当随机森林评价完成特征的重要性后,还需要对各个特征变量之间的相关性进行评估,以更加明显的看出何种特征最能影响预测结果,使用皮尔逊系数作为各个特征变量之间的相关性评价指标,从下图可以看出,越接近黄色表示相关性越强。

(5)使用筛选后的特征进行测试

综合之前所有特征的重要性与相关性的重要性评价情况,使用【重量,车辆年份】这两个特征进行回归预测,也就是从7个特征降维到2个特征。建立随机森林进行回归预测,其设置与之前的相同,同样使用100棵树。具体结果如下

可以看到,使用两个特征进行预测的准确度为85.2077,与使用所有特征进行预测的准确度相差不大,这表明随机森林特征选择方法有效的选择出了最重要的特征,实现了从大量特征到少数重要特征的特征降维筛选,极大的降低了特征的冗余性。

4 Matlab相关代码

博客主页:电气辅导帮

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

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

相关文章

Shell脚本学习指南(五)——变量、判断、重复动作

文章目录前言变量与算术变量赋值与环境参数展开展开运算符位置参数特殊变量算术展开退出状态退出状态值if-else-else-fi语句逻辑的NOT、AND与ORtest命令case语句循环for循环while与until循环break与continueshift与选项处理函数前言 变量对于正规程序而言很重要。处理维护有用…

Android: SimpleAdapter+GridView 简单图片展示

1:原理解析: 一个xml放总布局,一个xml放适配器要加载的模板(我喜欢这样理解); java中写适配事件; 2:目录: 3:主布局:最重要的是要放一个GridView …

[附源码]Python计算机毕业设计Django港口集团仓库管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Google单元测试框架gtest之官方sample笔记3--值参数化测试

1.7 sample7--接口测试 值参数不限定类型,也可以是类的引用,这就可以实现对类接口的测试,一个基类可以有多个继承类,那么可以测试不同的子类功能,但是只需要写一个测试用例,然后使用参数列表实现对每个子类…

m基于可见光通信系统的RFID接口过程以及ALOHA防碰撞算法的matlab仿真

目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 射频识别技术(Radio Frequency Identification,RFID)是一种非接触式自动识别技术,与传统的识别方式相比,它无需直接接触、无需光学可视、无需人工干预即…

产品经理的七大定律的总结

最近学习了产品经理的七大定律,这些设计准则都基于人类心理学:人们如何感知、学习、推理、记忆,以及把意图转换为行动。 1、菲茨(Paul Fitt)定律 菲茨定律的对于产品设计时的启示: 1)按钮等可…

SpringBoot 3.0 新特性,内置声明式HTTP客户端

http interface 从 Spring 6 和 Spring Boot 3 开始,Spring 框架支持将远程 HTTP 服务代理成带有特定注解的 Java http interface。类似的库,如 OpenFeign 和 Retrofit 仍然可以使用,但 http interface 为 Spring 框架添加内置支持。 什么是…

steam deck科普、上手教程及模拟器配置指南

steam_deck前言 早在2021年得时候,坊间就开始流传steam deck这个东西要问世了。但是中途跳了几次票,直到2022年2月,第一批steam deck才正式面向大众玩家。在熟悉steam deck之前,我们有必要了解如下的知识: Steam 准确来说&…

G1D27-deberta右键创建md文档

回家啦!!!中午的炒饭太好吃了!!吃的好撑!!回家后和mm去了超市,买了冰淇淋、薯片和水果,好开心!!! 下午睡了一会觉,真的好舒…

Spring MVC处理用户请求的完整流程

Spring MVC 框架是高度可配置的,包含多种视图技术,例如 JSP 技术、Velocity、Tiles、iText 和 POI。 Spring MVC 框架并不关心使用的视图技术,也不会强迫开发者只使用 JSP 技术,但教程中使用的视图是 JSP,本节主要介绍…

猿如意 | 带你手把手安装 Visual Studio Code

目录 一、什么是猿如意 二、借助猿如意安装Visual Studio Code 1、安装猿如意 2、安装Visual Studio Code 三、总结 一、什么是猿如意 猿如意是CSDN推出来的一款面向开发者的工具,他能够帮助开发者,找到自己心仪的开发工具提高自己的开发效率。 目标…

华为云两台机器内网互联

文章目录1. 前言2. ping公网ip3. 不同账号需要在同一大区4. 创建虚拟私有云5. 更换服务器所属的VPC网段6. 创建对等连接7. 填写对端项目ID和对端VPC ID8. 配置对等连接9. 添加对等连接路由10. 测试是否联通11. 后记1. 前言 最近在华为云买了两台低配Linux机器,35一…

聚焦出海 长城汽车50多国家和地区经销商集团齐聚泰国车博会

11月30日,长城汽车携新能源豪华阵容登陆第39届泰国国际汽车博览会(简称“泰国车博会”)。以“GWM Light the Future”(长城汽车点亮未来)为参展主题,长城汽车旗下中大型商务豪华SUV坦克500 HEV量产版、欧拉…

[附源码]Python计算机毕业设计SSM留守儿童管理平台(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

英文Paper写作如何正确掌握质量情况?

在国外留学的学子们要想完成高质量高水平的作业(assignment与Paper),那么首先就要在心里想想这些基本必要的问题,等有了这些问题的轮廓之后,相信留学的朋友都能够写出满意自足的Paper或assignment。 1.Why …

TypeError: can only concatenate list (not “int“) to list

参考 TypeError: can only concatenate list (not "int") to list - 云社区 - 腾讯云 观察是否将列表和非列表的类型相连。 入队enqueue_op 5会报错,改成乘5就不会了。

Springboot整合策略模式概念->使用场景->优缺点->企业级实战

一、前言 策略模式可能是在工作中使用最多的,也是在面试中最常提到的,代码重构和优化的必备! 小编之前也是一直说,其实没有真正的实战;最近有了机会实战了一下,来分享一下使用心得和在企业级的使用&#x…

Mac装机清理工具CleanMyMac2022最新版功能介绍

从最初开始下载CleanMyMac开始,CMM一直在提供智能的清理,从颇受小白用户喜爱的自动清理特性开始,仅需一键即可快速而安全地清理系统各角落垃圾,释放宝贵硬盘空间,CMM或许可以说是是 Mac上最知名的系统清理工具了。 Cl…

java EE初阶 —— 线程的安全问题

文章目录1.线程安全1.1 代码体现线程的不安全1.2 线程安全问题分析1.3 产生线程安全问题的原因1.4 线程安全问题的解决办法1.5 synchronized 的使用方法1.线程安全 多线程的抢占式执行,带来的随机性是线程安全问题的罪魁祸首,万恶之源。 如果没有多线程…

国内表格软件-FineReport Count函数

1. 概述 1.1 函数作用 计算数组或数据区域中所含项的个数,例如统计「地区数」和「销售员个数」,如下图所示: 也可与其他函数嵌套使用,例如进行「条件计数」,计算除孙林以外的销售员个数,如下图所示&#x…