博客
关于我
Matlab 数学建模 方法(四): 机器学习
阅读量:643 次
发布时间:2019-03-14

本文共 2909 字,大约阅读时间需要 9 分钟。

1. MATLAB机器学习概况

机器学习 ( Machine Learning ) 是一门多领域交叉学科,它涉及到概率论、统计学、计算机科学以及软件工程。

机器学习是指一套工具或方法,凭借这套工具和方法,利用历史数据对机器进行“训练”进而“学习”到某种模式或规律,并建立预测未来结果的模型。

机器学习涉及两类学习方法(如图1):

有监督学习,主要用于决策支持,它利用有标识的历史数据进行训练,以实现对新数据的标识的预测。有监督学习方法主要包括分类和回归;

无监督学习,主要用于知识发现,它在历史数据中发现隐藏的模式或内在结构。无监督学习方法主要包括聚类。

                                     图1 机器学习方法

MATLAB 统计与机器学习工具箱(Statistics and Machine Learning Toolbox)支持大量的分类模型、回归模型和聚类的模型,并提供专门应用程序(APP),以图形化的方式实现模型的训练、验证,以及模型之间的比较。 

  • 分类

分类技术预测的数据对象是离散值。例如,电子邮件是否为垃圾邮件,肿瘤是癌性还是良性等等。 分类模型将输入数据分类。 典型应用包括医学成像,信用评分等。MATLAB 提供的分类算法包括:

                                   图2 分类算法家族

  • 回归

回归技术预测的数据对象是连续值。 例如,温度变化或功率需求波动。 典型应用包括电力负荷预测和算法交易等。回归模型包括一元回归和多元回归,线性回归和非线性回归,MATLAB 提供的回归算法有:

                                  图3 回归算法家族

  • 聚类

聚类算法用于在数据中寻找隐藏的模式或分组。聚类算法构成分组或类,类中的数据具有更高的相似度。聚类建模的相似度衡量可以通过欧几里得距离、概率距离或其他指标进行定义。MATLAB 支持的聚类算法有:

                                 图4 聚类算法家族

以下将通过一些示例演示如何使用 MATLAB 提供的机器学习相关算法进行数据的分类、回归和聚类。

2. 分类技术

  • 支持向量机(SVM)

SVM 在小样本、非线性及高维数据分类中具有很强的优势。在 MATLAB 中,可以利用 SVM 解决二分类问题。同时也可以使用 SVM 进行数据的多分类划分。

1) 二分类

以下示例显示了利用 MATLAB 提供的支持向量机模型进行二分类,并在图中画出了支持向量的分布情况(图5中圆圈内的点表示支持向量)。MATLAB 支持 SVM 的核函数(KernelFunction 参数)有:线性核函数(Linear),多项式核函数(Polynomial)、高斯核函数(Gaussian)。

%%支持向量机模型load fisheriris;%fisheriris数据加载到工作区,fisheriris为自带数据集,species包括'versicolor'、'virginica'和'setosa'%下面数据只取两个分类:'versicolor'和'virginica'inds =~strcmp(species,'setosa');%strcmp比较两个字符串,相等返1,不等返0,此处~代表非,不等于setosa的行取1,否则取0%使用两个维度X=meas(inds,3:4);%meas矩阵保留3:4列,保留inds为1的行y=species(inds);%species向量保留inds为1的行tabulate(y)%显示y中数据的频率表%%SVM模型训练,'KernelFunction'-'linear'值对,使用内核函数线性核函数SVMModel=fitcsvm(X,y,'KernelFunction','linear');%%查看进行数据划分的支持向量sv=SVMModel.SupportVectors;%支持向量:离最优分类平面最近的离散点,也可以称为向量gscatter(X(:,1),X(:,2),y)%gscatter按组分散图,创建X(:,1)和X(:,1)的散点图,按y分组。hold onplot(sv(:,1),sv(:,2),'ko','MarkerSize',10)legend('versicolor','virginica','Support Vector')hold off

                                    图5 频率表 

 

                               图 6 分类结果 

2) 多分类

MATLAB 多分类问题的处理是基于二分类模型。下面的示例演示如何利用 SVM 的二分类模型并结合 fitcecoc 函数解决多分类问题。

%导入fisheriris数据集load fisheririsX=meas;Y=species;tabulate(Y)%创建SVM模型(二分类模型),并对分类变量进行标准化处理%predictorst=templateSVM('Standardize',1);%基于SVM二分类模型进行训练并生成多分类模型Mdl=fitcecoc(X,Y,'Learners',t,'ClassNames',{'setosa','versicolor','virginica'})%Mdl是一个ClassificationECOC分类器

 

 

3. 回归

回归模型描述了响应(输出)变量与一个或多个预测变量(输入)变量之间的关系。 MATLAB 支持线性,广义线性和非线性回归模型。以下示例演示如何训练逻辑回归模型。

  • 逻辑回归

在 MATLAB 中,逻辑回归属于广义线性回归的范畴,可以通过使用 fitglm 函数实现逻辑回归型的训练。

%判定不同体重、年龄和性别的人吸烟概率load hospitaldsa = hospital;%指定模型使用的计算公式%公式的书写方式符合Wilkinson Notationmodelspec = 'Smoker ~ 1+ Age + Weight + Sex + Age:Weight + Age:Sex + Weight:Sex';%通过参数'Distribution'指定'binomial'构建逻辑回归模型mdl = fitglm(dsa, modelspec, 'Distribution', 'binomial')

4. 聚类

聚类是将数据集分成组或类。 形成类,使得同一类中的数据非常相似,而不同类中的数据差异非常明显。

%数据导入load fisheririseucD=pdist(meas,'euclidean');%pdist按欧几里得方法计算meas内成对距离,类内距离的计算方法:'euclidean'%MATLAB中层次聚类是通过linkage函数实现%类间距离的计算方法:'ward',最小化两个类内点之间聚类平方和Z=linkage(eucD,'ward');%使用cophenetic相关系数评价聚类计算计算过程(类内距离最小,类间距离最大)%值越大表明距离计算结果越好cophenet(Z,eucD)%生成4个类别的聚类结果c=cluster(Z,'maxclust',1);%查看层次聚类树dendrogram(Z)

                 图 11 cophenetic 相关系数 

                图12 层次聚类树

  • 层次聚类

下面以层次聚类方法为例,演示如何利用 MATLAB 进行聚类分析。

 

 

 

 

 

 

转载地址:http://bkroz.baihongyu.com/

你可能感兴趣的文章
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>