APP下载

基于MATLAB的极大似然估计分析木条数据合理性

2017-07-09阚瑞祥

江苏理工学院学报 2017年2期
关键词:正态分布机器学习计算机

阚瑞祥

摘 要:现实生活中,数据多而复杂,处理起来有一定难度。针对这种情况,提出基于概率论中的极大似然估计的方法进行处理。算法首先进行相关指标的快速求解,然后基于纹理分析进行模拟的类的划分,判定分类是否合理并统计分类合理的数据的个数,最后上述结果为基础,计算数据分类的合理率。实验结果表明,在本组的数据中,准确率高的达98%,低的也有80%,可信度较高。通过实验笔者得出构建正态分布模型、提供利用极大似然估计的思想对木条相关的属性数据进行计算从而判决其合理与否的方法是可行的、合理的、有效的。

关键词:计算机;MATLAB;正态分布;机器学习;极大似然估计

中图分类号: TP302.7 文献标识码:A 文章编号:2095-7394(2017)02-0028-06

21世纪信息与数据被当作重要的资源。但是数据本身具有抽象性,如同本文所举的木条相关数据,非专业人士,难以洞见其价值。针对这个棘手的情况,机器学习是方法,模式识别是目的。对数据挖掘而言,数据库提供数据管理技术,机器学习和统计学提供数据分析技术。本文借助于数据挖掘或机器学习的知识,通过相关软件建立模型,通过计算判决其是否合理,解决这个问题。

1 理论基础

在数据挖掘或者是机器学习(machine learning)里面,数据的簇(cluster)处理成矩阵是一个创举——它强调了数据的巨大的不相关性。如对于某学院,绝大多数情况下,无法从姓名推断出其成绩、性别身高一样,一个类中的数据往往毫无相关性,这巨大的不相关性正好适合推广到N维的空间中。基于线性代数知识,为数据挖掘以及机器学习奠定了坚实的思想基础。

2 重要的工具——MATLAB

MATLAB是进行相关研究的不可或缺的重要的工具。[1]本文基于大量的数学理论的基础,先进行推导,然后进行大量的计算,再进行比较。人力计算,耗时费力而且无法保证准确度。面向对象的高级编程语言诸如Java、Python确实可以定义相关的函数与算法,但是代码冗长且易出错。所以冗长复杂的数学计算的最佳办法就是编写MATLAB程序进行运算。

MATLAB在这个时代已经为越来越多的计算机学院的学生所熟知,它的代码简洁易懂而且定义了很多复杂的数学运算类库。MATLAB作为一个研究问题分析的工具简直再适合不过了。对于大多数人而言,算出十维以及十维以上的矩阵的相关性矩阵以及逆矩阵的工作量都是惊人的,这一定会使得研究陷入瓶颈。然而使用MATLAB就没有这些的困扰。[2]

本文将会用到的函数有如下几个:MATLAB本身含有cov()求一个簇的协方差矩阵(台湾地区译作特异性矩阵), det表示求得模的值,inv表示求逆序列,“'”就表示转置直接带入即可。[3-4]

3 相关数学基础知识

对于一个杂乱无章的簇(cluster),从数理统计的角度讲,都可以默认它是服从正态分布的。[1]正态分布在概率论中有着十分重要的地位,在各种的分布中也是具有首要的地位。

正态分布可以寫作:[P(x)=12πe-(x-μ)22σ2]

其中[μ]表示期望,[σ2]表示方差

上文提到的所谓数据的极不相关性,好比在一个学生的信息表中,除非极其特殊的情况,其他情况均认为各个属性是没有关系的,这里就可以理解成class,即面向对象中提到的类。下文均将类表示为[C]。

这里还需要使用到条件概率,所谓条件概率指的是在满足一定条件下某事件发生个概率,例如在满足[Ci]条件下[P]发生的概率就可以表示为[5-6]:[p(xCi)]

便有:

[p(xCi)p(Ci)=P(x)]。

最后一个概念是极大似然估计(也译作是最大似然估计)。这是一种求参数的经典的方法,无论对于实践还是理论研究都有重大的意义,它最早是高斯(Gauss)提出来的,1912年被重新发表。它的直接想法其实是若一个随机事件有若干个可能的结果A,B,C……,若在一次试验中A出现了,则一般认为对于A的出现有利,也就是A出现的概率可能是最大的,在此思想基础上,通过相关运算求出最合理的参数。

至此理论准备部分完成。

4 数学推导叙述

在机器学习或者是数据挖掘中,很多时候其实找的最根本的东西就是所谓边界函数。如图1:

左右两端有两个簇(cluster),而中间的直线就是边界函数,这是通过相关的方法,诸如最小二乘法、拉普拉斯双曲型方程等方法无限趋近来的。笔者这里的推导,极大似然估计只是一个工具,这里用它的算法进行笔者需要的推导。

首先,对于一个大的类(class),它可以由很多的参数,用矩阵表示可以写作:

[X=X11 X12 … X1DX21 X22 … X2D ?XN1 XN2 … XND]

这里的计算一律使用矩阵的原因是更加具有一般性,通常的概率论书中的例题中,无法符合笔者强调的多组数据的不相关性的要求。[7-8]基于此,对传统的概率论相关的量进行推广是必要的,体现在维度的扩充,期望就变为了[μ=μ1,…μdT],相关性(correlation,台湾地区译作相互性)就推广成了

[CORR(Xi,Xj)=pij=σijσiσj]

在这个基础之上,维度的N重性得到了必要的强调,协方差矩阵就变成了:

[=COV(X)=E((X-μ)(X-μ)T)]

[X=σ11 σ12 … σ1Dσ21 σ22 … σ2D ?σN1 σN2 … σND],

于是传统意义上的计算公式就被笔者扩充,对于某样本它的期望就变为

[mi=1NxTiN, i=1…,d]

对于某一样本,它的协方差矩阵就变为

[Sij=1N(xti-mi)(xtj-mj)N],

上文提到的正态分布的定义式

[P(x)=12πe-(x-μ)22σ2],在这里就可以进行推广,

对于[x~Nd(μ,)]得到: [ P(x)=1(2π)d212e-12(x-μ)T-1(x-μ)],

使用MATLAB做出相关图像,如图2。

而后便是对其进行连乘运算,[p(x)=1dpi(xi)],由于使用了经典的极大似然估计的算法,通常使用的是左式、右式同时取对数的办法,使得计算量大大减少。于是对于[p(xCi)~N(μi,i)],笔者得到

[P(x)=1(2π)d2i12e-12(x-μ)T-1(x-μi)],

通过条件概率的公式以及Ethem Alpaydin先生的《MIT.Introduction.to.Machine.Learning.3rd.Edition》一书中的结论[2]。

于是有:

[gi(x)=Inp(xCI)]+In[p(Ci)=-d2In2π-12Ini]

[-12(x-μi)Ti-1(x-μi)+Inp(Ci)]

然后根据此进行大小的比较,这里的比较指的是与剩下的类分别进行比较,及时统计合理的数据的个数,根据个数求出准确率,进而决定数据的可信度。

5 代码叙述部分

本算法的核心语句便是上述算式的大小比较,比较的对象在MATLAB分别由mean()与sigma求得,然后统计个数。大小的比较是建立在快速求出各类的期望以及方差、标准差的基础之上。将这些数据进行多维的比较,统计合理的数据的个数,从而求得分类的正确率。所以在

[gi(x)=Inp(xCI)]+In[p(Ci)=-d2In2π-12Ini][-12(x-μi)Ti-1(x-μi)+Inp(Ci)],等式中的[-d2In2π],它仅仅是个常数,比较的时候将其忽略。算式翻译成MATLAB代码,可以写作:d1=-1/2*log(det(sigma1))-(x-mu1)*inv(sigma1)*(x-mu1)'[7];

det用来求得模的值,inv表示求逆序列,“'”就表示转置直接带入即可,特别声明:注意字母编码,否则程序无法运行。

所得的数据直接使用循环跟if判断用来比较大小,为了减少书写量,本文不穷举相关中间步骤的数据。

木条(或者说是软木塞)的相关数据均来自于台湾中华大学的官网。

MATLAB按照常理,只需手动将excel文件放到与.m文件同一目录下就可以实现导入,甚至可以实际一个图形界面直接手动导入,然而在实际操作的过程中却遇到了意想不到的麻烦:MATLAB与excel间隔每个数据使用的字符不一样,导致数据无法分开。笔者之前在建立hadoop的云空间的时候也遇到了类似的情况,发现无法带入excel表格,关键是要使用split()将数据进行再次分割,这里亦如此。

关于这个實验最后说两点:

1.不同的数值如果单位是不能求均值的,所以这里所求的均值指的是列向量元素求均值。

这里面还有一个理想的情况:分类错误的所谓“损失函数”必须跟分类的具体的错误无关。

2.如果分类的错误是有区别的,那么还需要引入相关的常数或者是函数。所谓“损失函数”可以将其视作是某种权重,比如说登记入住酒店的时候,如果客户的姓名弄错可能影响不大,但是性别弄错就会出现大麻烦。

3.本代码将具体的合理数据的个数分别放在了3*3矩阵的主对角线上,只是因为这样美观,便于观察,实际上放在哪里与最终的运算结果是没有影响的。

由于本文的篇幅有限,此处只是摘录部分代码,具体如下:

mu1=mean(a);

mu2=mean(b);

mu3=mean(c);

sigma1=cov(a);

sigma2=cov(b);

sigma3=cov(c);

cc1=0;cc2=0;cc3=0;

cc11=0;cc22=0;cc33=0;

cc111=0;cc222=0;cc333=0;

for i=1:1:50

x=a(i,:);

d1=-1/2*log(det(sigma1))-(x-mu1)*inv (sigma1)*(x-mu1)';

d2=-1/2*log(det(sigma2))-(x-mu2)*inv (sigma2)*(x-mu2)';

d3=-1/2*log(det(sigma3))-(x-mu3)*inv (sigma3)*(x-mu3)';

if d1>d2 && d1>d3

cc1=cc1+1;

end

cc1;

if d2>d3 && d2>d1

cc2=cc2+1;

end

cc2;

if d3>d2 && d3>d1

cc3=cc3+1;

end

cc3;

end

c1=[cc1,cc2,cc3];

for i=1:1:50

x=b(i,:);

d1=-1/2*log(det(sigma1))-(x-mu1)*inv (sigma1)*(x-mu1)';

d2=-1/2*log(det(sigma2))-(x-mu2)*inv (sigma2)*(x-mu2)';

d3=-1/2*log(det(sigma3))-(x-mu3)*inv (sigma3)*(x-mu3)';

if d1>d2 && d1>d3

cc11=cc11+1;

end

cc11;

if d2>d3 && d2>d1

cc22=cc22+1;

end

cc22;

if d3>d2 && d3>d1

cc33=cc33+1;

end

cc33;

end

c2=[cc11,cc22,cc33];

for i=1:1:50

x=c(i,:);

d1=-1/2*log(det(sigma1))-(x-mu1)*inv (sigma1)*(x-mu1)';

d2=-1/2*log(det(sigma2))-(x-mu2)*inv (sigma2)*(x-mu2)';

d3=-1/2*log(det(sigma3))-(x-mu3)*inv (sigma3)*(x-mu3)';

if d1>d2 && d1>d3

cc111=cc111+1;

end

c1;

if d2>d3 && d2>d1

cc222=cc222+1;

end

cc222;

if d3>d2 && d3>d1

cc333=cc333+1;

end

cc333;

end

c3=[cc111,cc222,cc333];

C=[c1;c2;c3];

disp(C);

代码中的a、b、c分别放了三个大类的木条的相关的数据,MATLAB导入数据的方法有很多,根本版本的不同而略有不同。笔者导入数据使用的方法是将所有的数据全部粘贴进一个数组内,本文代码中将此部分略去。

不同的MATLAB版本以及内存的大小、CPU运算速度会对数据的时间产生影响,但是结果相同。运行结果如图3。

利用主对角线上的元素直接求正确率,可得:第一组数据分类正确的概率是94%,第二组数据分类正确的概率是80%,第三组数据分类正确的概率是98%。

具体效果如何,有点类似运用泰勒(Taylor)公式求等价无穷小的时候——只需要根据自己的要求来决定精确的位数[8],这里与之类似,根据自己的目标决定所得的正确率合理与否。

6 结果与展望

本文较好地解决了三类木条且每一类含有50组数据的合理性的判决,本文代码可以将之视为判决合理性的重要依据。根据实验结果可知:第二类的正确率偏低而第一类、第三类的正确率非常高。

但本代码是有其局限性的,根本原因在于,逆矩阵运算时的条件——必须是方阵。这一点使得本代码在推广的时候遇到瓶颈,需要考慮逆矩阵的运算条件以及一个类(class)中的数据的个数,这个需要在代码之中进行必要的修改。

虽然有局限性,但是笔者仍然欣喜地将其视作具有巨大潜能的代码,以后可以将这个代码进行升级,它的应用将不仅仅局限于此,还可以进行学科交叉,应用于物联网、数字信号处理、电子信息处理等学科中。比如:现如今诸多音乐播放器都有音乐的推荐,但往往不十分准确,可不可以用类似的代码对于推荐音乐的算法进行优化呢?将音乐播放器用户喜欢的音乐进行分析,主要分析其频谱以及相关的一些音乐参数,之后在云空间中对于所有的歌曲进行此算法的识别,正确率大于90%的推荐,否则,不予推荐,也许这样会取得意想不到的成功。在此基础上,也可能写出相关的APP,进而推广的速度大大加快。

参考文献 :

[1] 张心心.MATLAB软件在信号与系统在实践教学中的意义[J].通讯世界,2016(12),DOI:10.3969/j.issn.1006-4222.2

016.12.048.

[2] 生静.高职院校数学计算软件MATLAB教学研究[J].山东农业工程学院学报,2016(4)69-70.

[3] 张志涌.精通MATLAB R2011a[M].北京:北京航空航天大学出版社,2011.

[4] 张建勇,陈亮,陈雨儿,等.基于MATLAB的微分方程课堂教学设计[J].教育教学论坛,2014(52):168-169.

[5] 汤大林.概率论与数理统计[M].天津:天津大学出版社,2009.

[6] ETHEM Alpaydin.MIT.Introduction.to.Machine.Learning. [M].3rd. ed.The MIT Press:Cambridge Massachusetts,2014.

[7] 张建勇、肖慧娟、赵一方,等.MATLAB绘图功能在高等数学教学中的应用[J].台州学院学报,2016(3):63-68.

[8] 苟长义.高等数学分级指导与提高[M].天津:天津大学出版社,2008.

Based on MATLAB and the Analysis of the Maximum Likelihood Estimation Batten Data Rationality Kan Ruixiang

KAN Rui-xiang

(Tianjin Technology University Computer and communication engineering institute of Internet of things engineerings Tianjin 300380,China)

Abstract:There are too many complicated data in our daily life and processing up has the certain difficulty. For this kind of situation, based on the theory of maximum likelihood estimation method is proposed for processing. Fast solving algorithm firstly on relevant indicators, and then simulated class division based on texture analysis, determine the reasonable classification and the number of statistical classification and data, finally based on the above results, calculate the data classification. The experimental results show that in this group of data, high accuracy of 98%, low of 80%, being of higher credibility. Through the experiment the author concluded construction of normal distribution model by using the maximum likelihood estimation, the method of providing the attribute data of wood related calculation and judging whether it is reasonable or not is feasible and reasonable

Key words:computer ; MATLAB;normal distribution;machine learning;maximum likelihood estimation

責任编辑 祁秀春

猜你喜欢

正态分布机器学习计算机
中国计算机报202007、08合刊
生活常态模式
中国计算机报2019年48、49期合刊
中国古代的“计算机”
基于网络搜索数据的平遥旅游客流量预测分析
前缀字母为特征在维吾尔语文本情感分类中的研究
基于支持向量机的金融数据分析研究
二项分布及其应用、正态分布
一体式,趋便携雅兰仕AL-225
高考正态分布问题例析