基于MATLAB的随机森林分类

2023-10-27


         该分类器最早由Leo Breiman和Adele Cutler提出。 

         在机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。 而 "Random Forests" 是他们的商标。 这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合 Breimans 的 "Bootstrap aggregating" 想法和 Ho 的"random subspace method"以建造决策树的集合。

​        我们都知道,在Python中,可以通过调用sklearn快速构造一个模型,但是我们如何在MATLAB中构建一个随机森林呢?本文将通过MATLAB的随机森林分类实例进行探讨。

step1:数据归一化处理

         集成学习算法对数值大小不敏感,树模型主要关心变量之间的分布和变量之间的概率分布,因此我们会发现,很多时候数据归一化与未归一化的的结果差别不大。但是,很多时候我们都把他进行归一化处理,因为这样可以降低计算机计算的难度,减少并行运算时间。我们可以使用mapminmax函数进行归一化处理。

step2:构建流程

采取有放回的抽样方式构造子数据集,保证不同子集之间的数量级一样(元素可以重复);利用子数据集来构建子决策树;将待预测数据放到每个子决策树中,每个子决策树输出一个结果;统计子决策树的投票结果,投票数多的就是随机森林的输出结果。

(1)从样本集中用 Bootstrap采样选出一定数量的样本,可以通过简单交叉验证进行划分训练集和测试机;

(2)从所有属性中随机选择K个属性,在K个属性中再选择出最佳分割属性作为节点创建决策树;

(3)重复以上两步m次,即建立m棵决策树。可以并行:即m个样本同时提取,m棵决策树同时生成;

(4)这m个决策树形成随机森林,通过投票表决结果(比如少数服从多数)决定待预测数据的结果。

 

 代码:

首先设置trees,leaf,Method参数

net = TreeBagger(trees, p_train, t_train, 'OOBPredictorImportance', OOBPredictorImportance, ...
      'Method', Method, 'OOBPrediction', OOBPrediction, 'minleaf', leaf);


 

step3:计算重要性

1:对于随机森林中的每一颗决策树,使用相应的OOB(袋外数据)数据来计算它的袋外数据误差,记为errOOB1.
2: 随机地对袋外数据OOB所有样本的特征X加入噪声干扰(就可以随机的改变样本在特征X处的值),再次计算它的袋外数据误差,记为errOOB2.
3:假设随机森林中有Ntree棵树,那么对于特征X的重要性=∑(errOOB2-errOOB1)/Ntree,之所以可以用这个表达式来作为相应特征的重要性的度量值是因为:若给某个特征随机加入噪声之后,袋外的准确率大幅度降低,则说明这个特征对于样本的分类结果影响很大,也就是说它的重要程度比较高。

代码:

importance = net.OOBPermutedPredictorDeltaError;  % 重要性

step4:混淆矩阵计算

​在机器学习领域,混淆矩阵(Confusion Matrix),又称为可能性矩阵或错误矩阵。

矩阵对角线上的数值为预测正确的格式,比如​以下训练集的混淆矩阵,类别1的预测正确个数为15个,正确率为100%。

​训练集的混淆矩阵

测试集的混淆矩阵

可以通过confusionchart来输出混淆矩阵。

该图第一列为判断为某一类别的正确率。如第一类数据预测为正确的召回率为83.3%。

 

step5:准确率:

将同类别的数据放在同一段显示,可以直观看到预测结果与实际值的偏离度

 

 

 step6:评价指标:召回率、精确率,ACC等等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于MATLAB的随机森林分类 的相关文章

随机推荐

  • 解决某些软件无法在parallels desktop虚拟机下运行

    步骤1 打开注册表 点开始菜单 点运行 输入regedit exe后回车 步骤2 找到HKEY LOCAL MACHINE HARDWARE DESCRIPTION System 步骤3 找到右边的VideoBiosVersion 双击打开
  • 【计算机视觉

    文章目录 一 Precision Recall 和 F1 score 二 IoU 三 mAP 四 AP 4 1 定义 4 2 分类 4 2 1 APs 4 2 2 APr 4 2 3 两者之间的区别 一 Precision Recall 和
  • Linux Shell 常用命令总结

    1 find find pathname options print exec ok 让我们来看看该命令的参数 pathname find 命令所查找的目录路径 例如用 来表示当前目录 用 来表示系统根目录 print find 命令将匹配
  • ipad编写html,iPad HTML Focus

    Sorry folks I guess I have to bring you a bad news So much questions for HOW DO I FOCUS ON AN INPUT FIELD ON IPAD USING
  • c51两个定时器中断冲突_单片机学习day11—中断系统(外部中断 & 定时器/计数器)...

    51单片机的中断系统 非常非常非常重要 一 中断的概念 CPU在处理某一事件A时 发生了另一事件B请求CPU迅速去处理 中断发生 CPU暂时中断当前的工作 转去处理事件B 中断响应和中断服务 待CPU将事件B处理完毕后 再回到原来事件A被中
  • 蓝桥杯 算法训练 乘积最大Python实现(动态规划)详细

    资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 今年是国际数学联盟确定的 2000 世界数学年 又恰逢我国著名数学家华罗庚先生诞辰90周年 在华罗庚先生的家乡江苏金坛 组织了一场别开生面的数学智力竞赛的活动 你的一个好朋友
  • WPF应用无法从任务栏恢复(唤起)

    背景 两个window 一个在前 小屏播放视频 一个在后 全屏播放视频 点击切换按钮 两个window中的内容对调 当点击任意window上面的缩小按钮的时候 将所有的window的 windowState 设置为 minimized 期望
  • 数据结构—快速掌握如何手动求解关键路径

    看到一道题 分析如何手动求解关键路径 文末有题目出处 如上图 红点表示状态 边表示活动及其所需要的时间 这是用箭线表示活动 节点表示事件的一种网络图绘制方法 也称为双代号网络图 AOA 下面我们将利用其它快捷方法求出关键路径 方法一 逆推法
  • 美国国家安全局(NSA)网络攻击主战武器“酸狐狸”

    近日 国家计算机病毒应急处理中心对美国家安全局 NSA 酸狐狸 漏洞攻击武器平台 FoxAcid 进行了技术分析 该漏洞攻击武器平台是美国国家安全局 NSA 特定入侵行动办公室 TAO 也被称为 接入技术行动处 对他国开展网络间谍行动的重要
  • 乐高编程学c语言吗,乐高编程和少儿编程的区别

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 乐高编程和少儿编程的区别如下 1 乐高编程是以调用编程模块指令让机器动起来为目的 通常需要编程的模块是已经写好存储在模块里的 学员做的只是将模块以不同的方式拼接组合起来 2
  • DataGridView控件常用属性

    DataGridView控件常用属性 1 AllowUserToAddRow 去掉最后一行添加行的选项 2 RowHeadersVisble 去掉第一列包含行标题的列 3 AutoSizeColumnsMode 可见列的自动调整大小 4 S
  • C++ 预处理器

    预处理器是一些指令 指示编译器在实际编译之前所需完成的预处理 所有的预处理器指令都是以井号 开头 只有空格字符可以出现在预处理指令之前 例如 include 指令 这个宏用于把头文件包含到源文件中 C 还支持很多预处理指令 比如 inclu
  • 关系型数据库和NoSQL数据库探讨

    在当今数据时代 数据量持续增长 数据种类不断增加 使得传统关系型数据库面临了很大的挑战 为了解决这些问题 新型数据库技术也应运而生 同传统关系型数据库进行对比 就可以更好地了解其优点和局限性 1 传统关系型数据库的弊端 在传统关系型数据库中
  • 怎么用Python实现微信自动回复,一文看懂

    都什么年代了 不会还有人用itchat吧 itchat早就寄了 在网上搜用Python实现微信自动回复的 搜来搜去全是用itchat 一运行全都不行 无奈只能自己用别的库实现 根据预定的csv数据自动回复 import numpy as n
  • C# 泛型List相关用法以及与ArrayList和数组三者的区别

    数组 首先在C 也是存在数组的 用法如下 一维 string s new string 2 s 0 a s 1 b s 0 c 修改 二维 string arr new string 3 5 表示三行五列的二维数组 1 1 1 1 1 1
  • 收到字节跳动 java岗offer后,他终于哭出了声!

    在小刘拿到offer的那天下午 他打了个电话给我 他诉说着对我的感谢 吐槽面试遇到的奇葩事儿 最后 他激动的说 建哥 我终于不用担心变成失业人员了 找工作有多可怕 小刘是我亲自带的第一届实习生 他聪慧 一点就透 踏实 不懂就问 不会就学 这
  • Java IO

    相关概念 Java IO Java的核心库java io提供了全面的IO接口 包括 文件读写 标准设备输出等 Java中IO是以流为基础进行输入输出的 所有数据被串行化写入输出流 或者从输入流读入 流 流是一个很形象的概念 当程序需要读取数
  • 如何实现make工具的降版本?

    为什么要降make版本 因为编译MTK 平台的Android source code报错 而且是莫名奇妙的错误 困扰很久 一 问题背景 Ubuntu 15 04以上的make版本都已经是4 0 官方目前推荐的编译环境还是基于Ubuntu 1
  • 前端 Leader 如何做好团队规划?阿里内部培训总结公开

    阿里妹导读 作为一名前端团队的管理者 如何做好团队规划 老板不是前端 如何做出被认可的成绩 今天 阿里前端技术专家剑平 将结合自己的亲身经历 以及阿里内部培训课程 写下了自己的思考和理解 与大家共同分享 欢迎一起讨论交流 前言 行成于思 毁
  • 基于MATLAB的随机森林分类

    该分类器最早由Leo Breiman和Adele Cutler提出 在机器学习中 随机森林是一个包含多个决策树的分类器 并且其输出的类别是由个别树输出的类别的众数而定 Leo Breiman和Adele Cutler发展出推论出随机森林的算