MATLAB数据建模方法中的机器学习方法介绍

近年来,全国赛的题目中,多多少少都有些数据,而且数据量总体来说呈不断增加的趋势, 这是由于在科研界和工业界已积累了比较丰富的数据,伴随大数据概念的兴起及机器学习技术的发展, 这些数据需要转化成更有意义的知识或模型。 所以在建模比赛中, 只要数据量还比较大, 就有机器学习的用武之地。
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)。
%% 支持向量机模型
loadfisheriris;
% 数据只取两个分类:‘versicolor' 和 'virginica'
inds = ~strcmp(species,'setosa');
% 使用两个维度
x = meas(inds,3:4);
y = species(inds);
tabulate(y)
value count percent
versicolor 50 50.00%
verginica 50 50.00%
%% svm模型训练,使用线性核函数
svmmodel = fitcsvm(x, y,'kernelfunction','linear');
%% 查看进行数据划分的支持向量
sv = svmmodel.supportvectors;
figure
gscatter( x( : , 1) , x( : , 2) ,y)
holdon
plot(sv( : , 1) , sv( : , 2) ,'ko','markersize', 10)
legend('versicolor','virginica','support vector')
holdoff
图5 支持向量分布
2)多分类
matlab 多分类问题的处理是基于二分类模型.下面的示例演示如何利用 svm 的二分类模型并结合 fitcecoc 函数解决多分类问题。
% 导入fisher' s iris数据集
loadfisheriris
x = meas;
y = species;
tabulate(y)
value count percent
setosa 50 33.33%
versicolor 50 33.33%
virginica 50 33.33%
% 创建svm模板(二分类模型),并对分类变量进行标准化处理
% predictors
t = templatesvm('standardize', 1);
% 基于svm二分类模型进行训练并生成多分类模型
mdl = fitcecoc( x, y,'learners', t , . . .'classnames', {'setosa','versicolor','virginica'})
mdl =
classificationecoc
responsename: 'y'
categoricalpredictors: [ ]
classnames: {'setosa' 'versicolor' 'virginica'}
scoretransform: 'none'
binarylearners: {3*1 cell}
codingname: 'onevsone'
matlab 的 fitcecoc 函数支持多种二分类模型,例如, templateknn, templatetree, templatelinear, templatenaivebayes, 等等。
3. 回归
回归模型描述了响应(输出)变量与一个或多个预测变量(输入)变量之间的关系。 matlab 支持线性,广义线性和非线性回归模型。以下示例演示如何训练逻辑回归模型。
逻辑回归
在 matlab 中,逻辑回归属于广义线性回归的范畴,可以通过使用 fitglm 函数实现逻辑回归模型的训练。
% 判定不同体重、年龄和性别的人的吸烟概率
loadhospital
dsa = hospital;
% 指定模型使用的计算公式
% 公式的书写方式符合 wilkinson notation, 详情请查看:
% http://cn.mathworks.com/help/stats/wilkinson-notation.html
modelspec ='smoker ~ 1+ age + weight + sex + age:weight + age:sex + weight:sex';
% 通过参数 ’disribution' 指定 ‘binomial' 构建逻辑回归模型
mdl = fitglm(dsa, modelspec,'distribution','binomial')
4.聚类
聚类是将数据集分成组或类。 形成类,使得同一类中的数据非常相似,而不同类中的数据差异非常明显。
层次聚类
下面以层次聚类方法为例,演示如何利用 matlab 进行聚类分析。
% 数据导入
loadfisheriris
% matlab中层次聚类是通过linkage函数实现
% 通过参数可以配置距离计算方法
% 类内距离的计算方法:'euclidean' ,欧几里得距离
eucd = pdist(mean ,'euclidean');
% 类间距离的计算方法:'ward' ,最小化两个类内点之间聚类平方和
z = linkage(eucd,'ward');
% 使用 cophenetic 相关系数评价聚类计算过程(类内距离最小,类间距离最大)
% 值越大表明距离计算结果越好
cophenet(z, eucd)
ans = 0.872828315330562
%生成4个类别的聚类结果
c = cluster(z,'maxclust', 4);
可以显示层次聚类生成的聚类树,使用 dendrogram 函数:
% 查看层次聚类树
dendrogram(z)
图6 层次聚类
以上只是简单的介绍了一下 matlab 支持的机器学习算法的使用方式,更多的信息可以查看 mathworks 官网和 matlab 帮助文档。

人脸出入的甲级写字楼,为何还要做二维码门禁
AI芯片公司肇观电子完成2亿元A轮融资 中电海康基金领投
新能源东风已至,碳化硅御风而起
汽车共享服务的流行和无人驾驶汽车的即将到来,停车场将不再只是为汽车而设
物联网领域重要融资事件汇总
MATLAB数据建模方法中的机器学习方法介绍
2017年十大消费者趋势:AI和VR/AR成热门
高速ADC产品瞄准大带宽高分辨率应用
解读NFC
为解决脱轨事件,欧洲在铁路系统应用RFID
电子生产怎样静电防护
2020深圳新型显示展全新启程 天团竞技打造新型显示年度盛宴
开关电源基本原理图
DuckDuckGo浏览器推出跟踪器雷达
规格书没告诉你的ADC参数该如何获取
小米公开带有四个摄像头的手机专利
2020年内5nm工艺将由台积电独占 包揽ASML 51%的营收占比
云计算市场处在风口浪尖 是科技以及互联网企业抢占的重点
慧荣科技推出第三代PCIe Gen4 SSD主控芯片,满足次世代TLC和QLC 3D NAND的设计需求
在工厂内外,机器人如何改善我们的世界