MATLAB机器学习工具箱

MATLAB包含统计和机器学习工具箱(Statistics and Machine Learning Toolbox),其包含如下一些子模块:探索性数据分析、数据降维、机器学习、回归和方差分析、概率分布拟合及假设检验等功能模块。

  1. 工具箱简介

机器学习算法使用计算方法直接从数据中“学习”信息,不把预定方程假设为模型。不同的机器学习算法,按照解决问题的性质,可以分为分类(回归)、聚类和强化学习问题。相应的,在Statistics and Machine Learning Toolbox中提供用于执行受监督和无/非监督机器学习的方法。分类算法使用户可以将一个分类应变量建模为一个或多个预测元的函数。Statistics and Machine Learning Toolbox提供涵盖多种参数化和非参数化分类算法的应用程序和函数,如logistic回归、朴素贝叶斯、k近邻、SVM等。

分类学习器应用程序(Classification Learner App)提供了一个机器学习应用常用的操作,如交互式探查数据、特征选择、指定交叉验证方案、训练模型和评估结果。分类学习器应用程序用于使用监督式机器学习来训练模型对数据进行分类,使用它可以执行常见任务,例如导入数据和指定交叉验证方案;探索数据和选择特征;使用多种分类算法训练模型;比较和评估模型;在计算机视觉和信号处理等应用场合中共享训练过的模型。

除此之外,分类学习器集成了多种可视化方式来方便用户选择模型,进行模型评估和比较。训练好的模型也可以直接导入MATLAB的工作空间,来对新的数据预测,也可以直接生成代码,方便和其他应用集成。

Statistics and Machine Learning Toolbox中也实现了很多聚类算法,聚类算法通过根据相似度测量对数据分组来发现数据集中的规律。可用的算法包括k-均值、k-中心点、分层聚类、高斯混合模型和隐马尔可夫模型。当不知道聚类的数量时,可以使用聚类评估技术根据特定指标确定数据中存在的聚类数量。

  1. 分类学习器基本流程

对遇构建机器学习应用,通常包括五部分,分别是数据导入、数据的探索和特征选择、训练模型、比较模型和输出模型。

  1. 数据导入

首先为了启动分类学习器,可以直接在命令行输入“classification Learner”或者在MATLAB的菜单栏中选择“应用程序”选项卡下的分类学习器应用classification Learner。

导入数据的方法分为两种方式,点击新建对话后,可选择从工作区或文件中导入数据。演示数据通过fishertable=readtable('fisheriris.csv')导入。

该窗口主要目的是用来设置训练数据的相关属性、标签及设置验证集。导入数据依次对应3个步骤,第一步中主要功能是选择数据集,且设置数据集矩阵中的行(rows)作为一个变量,还是将列(columns)作为一个变量;第二步中需要向算法声明哪些维度是输入量,哪些是输出量,对于分类问题来说就是选择哪几个变量作为属性值,哪个变量作为标签。预测变量对应输入,响应变量对应标签。此时导入数据的工作就完成了。

为了优化算法中的一些超参数,需要一定的手段来评估不同参数的表现,其中,验证集的目的是用来对算法的超参数调优。验证集应该是训练集的一部分。但是当训练集数量较少(因此验证集的数量更少)时,将用到交叉验证法。所谓k折交叉验证就是把训练集均分成k份,其中k-1用来训练,1份用来验证。然后循环取k-1份来训练,其中1份来验证,最后取所有k次验证结果的平均值作为算法验证结果。点击开始会话。

    1. 选择模型并调整训练参数

该激活的窗口包含了训练一个机器学习应用的核心要素,其大体分为六部分。最上边的菜单栏提供了特征选择、算法选择、训练模型、可视化绘图及输出等操作。特征选择模块用于选择输入特征,即选择属性特征,也可以利用PCA方法自动选择。

分类学习算法分成四大类,分别是决策树类、判别分析类、支持向量机类、神经网络类。除了简单地点击Train进行训练外,还可以通过Advanced按钮设置一些训练的参数。

  1. 输出模型

当用户选择一个训练模型后,它就会出现在窗口的右侧方框中。用户可以选择多个模型,依次训练。得到的每个分类器的分类精度会显示在方框中。其中分类效果最好的模型会以方框突出显示。当前模型一栏显示当前模型的一些详细信息。

训练完毕后,用户不仅仅得到一个分类的精度值,同时用户还可以通过各种图形来直观地观测当前模型的表现。当然,图示化训练数据对于数据探索,发现数据的模式也是大有脾益。可以绘制的图形包括训练数据的散点图、混淆矩阵、ROC曲线等。在窗口的最右侧可以设置绘图参数。

通过可视化窗口界面,用户可以再次调整模型,如进一步的特征提取,或者设置更加合理的超参数值,来改善模型的表现。

一但得到满意的模型,可以通过两种方式加以利用。一种是用户导出训练好的模型到工作空间中,这个时候用户将发现变量空间多了一个结构体变量,这个变量含有一个用于预测的成员函数,此时,用户将可以用它来做预测。但是如果用户希望更改模型,或者把它集成到其他的应用,则需要用到另一种方法,也是最通用的方法,即代码的形式使用。

  1. 分类学习器算法优化与选择

使用工具箱的方法并不是智能的,同样需要对数据进行预处理,并根据经验和分析选择合适的数据特征。另外,机器学习各类算法也具有不同的特点,使用者应在不断的实践中了解各类机器学习算法,在特定的应用场合应选择适合数据自身的算法。

  1. 特征选择

在分类学习器中可以通过对原始数据做散点图来分析是否需要或排除某个特征。选择不同特征作为坐标轴,如果数据某一类别数据很好地分开,说明这个特征是有用的。如果某个特征对于分类没有任何作用,则可以考虑把它排除。在fisheriris数据集中选择X和Y分别为PetalLength和PetalWidth,可以看到setosa类能够被很好地分开。

在分类学习器窗口,也可以通过勾选耨个特征,观察分类器的表现。如果删除某个特征后可以提高模型的性能,那么应该排除这个特征,尤其是当收集该数据比较昂贵和困难的时候。具体操作为单击特征组中的特征选择按钮,可以取消勾选特征中特征名称后的复选框。

利用主成分分析来降低特征空间的维度,有助于防止过拟合。PCA能够消除数据中的冗余信息,产生一个新的变量集,该变量集称为主成分。在工具箱中使用PCA包括以下步骤:(1)在分类器的特征中单击PCA按钮;(2)在高级PCA选项中选中启用PCA,并设置响应参数(一般采用默认)。至此,用户已完成了对PCA的设置,之后,当用户点击Train的时候,PCA会首先对数据做变换和处理,然后进行模型训练。

在分类学习器中也可以利用平行坐标图(Parallel Coordinates Plot)来选择特征,具体操作为单击分类学习器窗口的绘图中的平行坐标图按钮,生成平行坐标图。

在平行坐标图中其实它就是把每个特征列在列在一个一维的轴上画出来,然后把每个记录(一个样本点)依次连接起来,最后用不同的颜色表示不同的类别,错分的类别用虚线表示。如果某个特征具有很好的区分度,那么在坐标轴上就会出现明显的聚类现象。从图中可以看出PetalLength和PetalWidth特征具有很好的分类效果。

  1. 选择分类器算法

各分类器算法有各自的特点,依赖于具体的需求,如速度、存储、灵活性、可解释性等,会有不同的选择。如果对于一个数据没有特别深刻的理解,或者特别适合的模型,最开始用户可以选择All Quick-To-Train,这个选项会用所有高效的模型对数据进行训练,能够快速地得到不同分类器的表现。但一般来说,不同类型算法用不同的特点,有大概的了解也会有利于用户选择分类器算法。下表对不同类型分类器算法进行了比较。

分类器种类

预测速度

内存需求量

解释性

决策树

容易

判别分析

小(线性)、大(其他)

容易

逻辑回归

中等

容易

支持向量机

中等(线性核函数)、慢(其他)

中等(线性)、大(其他)

容易(线性)、较难(非线性)

k近邻分类

中等

中等

较难

集成分类

取决于集成用的算法

取决于集成用的算法

较难

  1. 工具箱分类学习实例

本节通过实例来阐述如何使用分类学习器APP。所述的实例是基于fisheriris数据集。中文名为安德森鸢尾花数据集(Anderson’s Iris Data Set),也称鸢尾花数据集(Iris Data Set)或费雪鸢尾花数据集(Fisher’s Iris Data Set),是一类多重变量分析的数据集。其数据集包含了150个样本,都属于鸢尾属下的3个亚属,分别是山鸢尾、变色鸢尾和维吉尼亚鸢尾。4个特征被用于样本的定量分析,它们分别是花萼和花瓣的长度和宽度。因此算法的任务就是基于这4个特征,利用不同的分类算法来分辨它们到底属于哪个亚属。

下面介绍利用Classification Learner实现分类算法的步骤。

  1. 在MATLAB命令行中输入命令,进行fisheriris数据集的加载,命令为“fishertable=readtable(‘fisheriris.csv’);”。
  2. 对fisheriris数据集的四项特征的数据进行归一化处理,经典的方法有min-max标准化、Z-score标准化、小数点定标标准化。
  3. 在上述3种归一化方法种,在本实例中选择第一种方法进行处理。然后MATLAB的“应用程序”选项卡中选择Classification Learner。
  4. 经过上一步骤,会出现一个分类学习器窗口。在分类学习器窗口中单击新建对话按钮,此时将出现一个用于数据处理的窗口,按照上节方法进行设置,分别设置预测变量和响应变量及一些关于交叉验证的参数。本实例采取默认设置。之后单击该窗口右下角开始会话。此时,分类学习器创建了一个数据的散点图。可发现散点的分布形式没有发生变化,仅仅是坐标轴的范围发生了改变,这就是对数据进行归一化后的数据结果。用户可以通过选择不同的特征来绘图,从而观察哪些变量能够很好地区分数据。值得注意的是,通过其他方式进行归一化处理,散点的分布形式会有一定的变化。本实例中样本属性特征为4,且各特征对于训练都有作用,因此不进行删减特征处理及PCA主成分分析。
        为了应用判别分析算法,单击CLASSIFICATION LEARNER选项卡CLASSIFIER组中的下拉按钮,选择ALL选项,然后单击TRAINING组中的Train按钮,此时,就可以开始训练模型了,经过2~3分钟的训练后。同样,也可以在CLASSIFIER组中的下拉列表中单独选择决策树算法、SVM、logistic回归及集成方法。这里为了方便,这里直接选择ALL选项,它会对训练数据应用所有的可用的分类器。

在图的左侧可以看到总共24个分类算法,最好的分辨率达到了98%的识别率,相应的识别算法包括ComplexTree、Medium Tree、Simple Tree、Quadratic SVM、Medium Gaussian SVM。需要具体了解训练算法的相关参数及训练时间,可单击相应算法,则在其左下角的现有模型窗格中显示。

另外,在散点显示图中,则发现显示为“X”的点,这些点表示预测错误的点,单击图中的散点,可显示出具体的数据信息。

为了观察每个类预测的准确率,可以单击画图组中的混淆矩阵按钮。也可以单击ROC曲线。

  1. 最后,为了导出模型,在导出模型下拉列表中可以选择不同的导出方式。本实例中采用导入工作空间的方法,即选择导出模型中的导出紧凑模型。

采用默认值,单击“确定”按钮。此时在MATLAB的工作空间中便显示了一个名为trainedClassifier的结构体数据,即为训练好的模型。

为了利用训练好的数据模型进行新样本的预测,需要调用和使用它的成员函数XXX,predicFcn,其中XXX为模型名称,本实例中使用格式如下:

Yfit=trainedClassifier.predicFcn(T)

其中,T是新预测数据样本,它的形式和数据类型必须于训练中的数据保持一致,且不包含标签。另外,值得注意的是,需要对样本数据采用同样的归一化方法进行训练。

基于Matlab进行机器学习相关推荐

  1. Matlab实现机器学习(附上完整仿真源码)

    介绍 Matlab是一种功能强大的数学软件,它不仅可以用于数据分析和可视化,还可以用于机器学习.在本文中,我们将介绍如何使用Matlab实现机器学习. 首先,我们需要准备数据.机器学习通常需要大量的数 ...

  2. 基于MATLAB 2021b的机器学习、深度学习

    近年来,随着无人驾驶汽车.医学影像智慧辅助诊疗.ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮.尤其是在计算机视觉和图像处理领域,各种颠覆性的成果应运而生.因此,帮助广大科研人员 ...

  3. matlab自带的人脸分类器,基于MATLAB,运用PCA+SVM的特征脸方法人脸识别

    概述: 此文章将要描述一种基于MATLAB平台,运用PCA主成分分析方法对图片数据进行降维,运用SVM支持向量机分类器对降维后的图片数据进行分类处理,从而达到人脸识别的目的. 首先要感谢以下几篇文章的 ...

  4. 基于matlab的手写体数字识别系统,基于matlab的手写体数字识别系统研究

    基于matlab的手写体数字识别系统研究 丁禹鑫1,丁会2,张红娟2,杨彤彤1 [摘要]随着科学技术的发展,机器学习成为一大学科热门领域,是一门专门研究计算机怎样模拟或实现人类的学习行为的交叉学科.文 ...

  5. 基于MATLAB的拼图游戏设计(图文详解,附完整代码)

                                                                               基于MATLAB的拼图游戏设计 内容摘要:MATL ...

  6. 基于Matlab的交通限速标志的识别系统 数字图像处理大作业

    本大作业为基于Matlab的交通限速标志的识别系统, 考虑到在科技发展的今天,智能汽车行业发展迅速,所以交通限速标志的快速检测及识别对车辆的安全行驶极为重要,因此本系统可以检测到图中的交通限速标志并对 ...

  7. 【RF分类】基于matlab随机森林算法数据分类【含Matlab源码 2048期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[RF分类]基于matlab随机森林算法数据分类[含Matlab源码 2048期] 获取代码方式2: 付费专栏Matlab智能算法神经网络 ...

  8. 10种基于MATLAB的方程组求解方法

    线性方程组的求解包括直接法和迭代法,其中迭代法包括传统的高斯消元法,最速下降法,牛顿法,雅克比迭代法,共轭梯度法,以及智能启发式算法求解法和神经网络学习算法,传统算法可以相互组合改进,智能仿生启发式算 ...

  9. 基于Matlab的遗传算法程序设计及优化问题求解

    FPGA教程目录 MATLAB教程目录 ----------------------------------------------------------------------- 遗传算法(Gen ...

最新文章

  1. python+opencv Canny边缘检测
  2. lighttpd 负载均衡-反向代理+cache浅谈
  3. php汉字的截取,php汉字截取
  4. 单行、多行文本超出显示省略号
  5. iOS 正则表达式判断纯数字以及匹配11位手机号码
  6. vue+node前后端分离接口调用(初学者)
  7. parallels desktop
  8. Mysql 系统学习梳理_【All】
  9. caffe上手:微调CaffeNet用于车颜色识别
  10. iphone开发工程师面试真题(又像c的)
  11. wordpress知更鸟begin主题添加菜单字体图标
  12. 【Gym - 101848B】Almost AP【等差数列改三个数】
  13. java面试题1 牛客:A派生出子类B,B派生出子类C,并且在java源代码中有如下声明:
  14. MMORPG游戏框架图
  15. 云计算机教室优缺点,云教室和传统机房的区别,终于有人把它说清了
  16. Java实现随机验证码和验证码图片渲染功能
  17. PS图片上传图片 同时生成微缩图
  18. C语言zh字符串指针的大小,C语言的一些小技巧,小知识
  19. python使用Elasticsearch对wikipedia的数据进行检索(详细流程)
  20. MWC 2017:S8缺席,三星祭出AR/VR项目救场

热门文章

  1. Qt开发Gif播放器
  2. CSS基础班笔记(一)
  3. 图片一拉大就就变模糊,怎么变得更清晰?
  4. Softing VisualODX—ODX数据自动转换工具
  5. 什么是GPU云服务器?主要用在什么领域?
  6. 【历史上的今天】4 月 12 日:Google 中文名发布;Fire TV 问世;登上太空的计算器
  7. Matlab画图函数
  8. 西南科技大学OJ题 顺序表插入操作的实现0943
  9. PHP求1到100所有偶数的和,php求出两数之间所有偶数之和
  10. (机器人学导论--运动学)(二)刚体运动状态描述