第七章判别分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1判别分析(DiscriminantAnalysis)在实际工作中,我们经常遇到分类问题。在古老的分类学中,人们主要依靠经验和专业知识,很少用到数学。随着科学技术的发展,产生了数值分类学。一般地,若事先已经建立类别,则使用判别分析,若事先没有建立类别,则使用聚类分析。判别分析在生物学、医学、地质学、石油、气象等领域得到较为广泛的应用。(一)协方差矩阵设,是一个二维随机变量,又EEE,则称EEE为与的协方差,记作,Cov。例如,在Matlab软件包中写一个名字为opt_cov_1的M—文件:x=[123];y=[321];cov(x,y)存盘后按F5键执行,得到结果:ans=1-1-11设n,,,21是n维随机变量,定义iiiiijEEE,则称nnnnnn212222111211为n,,,21的协方差矩阵。(二)基本数学原理判别分析是利用原有的分类信息,得到判别函数(判别函数是这种分类的函数关系式,一般是与分类相关的若干个指标的线性关系式),然后利用该函数去判断未知样品属于哪一类。因此,这是一个学习和预测的过程。常用的判别分析法有距离判别法、费歇尔判别法、贝叶斯判别法等。(1)距离判别法距离判别法有欧氏距离法和马氏距离法等。其中,欧氏距离法比较粗糙,Matlab软件包中采用的是马氏距离法。2假设共有n个指标,第i个指标共测得m个数据(要求nm):imiiixxxx21于是,我们得到nm阶的数据矩阵nxxxX,,,21,每一行是一个样本数据。nm阶数据矩阵X的nn阶协方差矩阵记作XCov。①求n维向量nrrrr,,,21到m×n矩阵X的马氏距离定义nnxrxrxrXr,,,2211,则n维向量nrrrr,,,21到m×n矩阵X的马氏距离的公式如下:TXrXCovXrXrmahal1,其中,ix表示第i个指标ix的算术平均值。②矩阵X到自身的马氏距离,相当于矩阵X的每一行到X的马氏距离,记作XXmahal,。做这种运算可以求出矩阵X的异常值。注意:马氏距离法没有考虑样本指标值的分布。例1有8×3数据矩阵如下:x=[0.052,0.084,0.021;0.037,0.0071,0.022;0.041,0.055,0.11;0.11,0.021,0.0073;0.030,0.112,0.072;0.16,0.056,0.021;0.074,0.083,0.105;0.19,0.02,1]在Matlab软件包中输入以下程序:x=[0.052,0.084,0.021;0.037,0.0071,0.022;0.041,0.055,0.11;0.11,0.021,0.0073;0.030,0.112,0.072;0.16,0.056,0.021;0.074,0.083,0.105;0.19,0.02,1]d=mahal(x,x)执行后得到d=0.69983.90500.83101.88192.76724.24240.59916.0735可见,矩阵X中第二行、第五行、第六行、第八行数据异常。3(2)费歇尔判别法该法是以费歇尔准则为标准来评选判别函数的。所谓费歇尔准则,指的是较优的判别函数应该能根据待判对象的n个指标最大限度的将它所属的类与其它类区分开来。一般采用线性函数作为判别函数。基本方法是:首先假定一个线性的判别函数,然后根据已知信息对判别函数进行训练,得到函数关系式中的系数,从而最终确定判别函数。该法有时会使误判次数增加,但由于使用的是线性函数,所以使用起来也比较方便。(3)贝叶斯判别法贝叶斯判别法是一种概率方法,它的好处是可以从分利用先验信息,可以考虑专家的意见。应用此方法,需要事先假定样本指标值的分布(例如,多元正态分布等)。在Matlab软件包中,将已经分类的m个数据(长度为n)作为行向量,得到一个矩阵training,每行都属于一个分类类别,由它构成一个整数列向量g(共有m行),待分类的k个数据(长度为n)作为行向量,得到一个矩阵sample,然后利用classify函数进行线性判别分析(默认)。它的格式为:classify(sample,training,group),其中,sample与training必须具有相同的列数,group与training必须具有相同的行数,group是一个整数向量。Matlab内部函数classify的功能是将sample的每一行进行判别,分到training指定的类中。进一步,较复杂的格式为:[class,err]=classify(sample,training,group,type)其中,class返回分类表,err返回误差比例信息,sample是样本数据矩阵,training是已有的分类数据矩阵,group是分类列向量,type有3种选择:type=linear(默认设置),表示进行线性判别分析;type=quadratic,表示进行二次判别分析;type=mahalanobis,表示用马氏距离进行判别分析。例2某地大气样品污染分类表如下气体氯硫化氢二氧化硫碳4环氧氯丙烷环己烷污染分类10.0560.0840.0310.0380.00810.022120.0400.0550.10.110.0220.0073130.050.0740.0410.0480.00710.02140.0450.050.110.10.0250.0063150.0380.130.0790.170.0580.043260.030.110.070.160.050.046270.0340.0950.0580.160.20.029180.030.090.0680.180.220.039190.0840.0660.0290.320.0120.0412100.0850.0760.0190.30.010.042110.0640.0720.020.250.0280.0382120.0540.0650.0220.280.0210.042130.0480.0890.0620.260.0380.0362140.0450.0920.0720.20.0350.0322150.0690.0870.0270.050.0890.02114在此地某大型化工厂的厂区及邻近地区挑选4个有代表性的大气样本取样点,获取数据如下气体氯硫化氢二氧化硫碳4环氧氯丙烷环己烷污染分类样品10.0520.0840.0210.0370.00710.022样品20.0410.0550.110.110.0210.0073样品30.030.1120.0720.160.0560.021样品40.0740.0830.1050.190.021求它们的污染分类。在Matlab软件包中写一个名字为opt_class_1的M—文件:training=[0.0560.0840.0310.0380.00810.0220.040.0550.10.110.0220.00730.050.0740.0410.0480.00710.020.0450.050.110.10.0250.00630.0380.130.0790.170.0580.0430.030.110.070.160.050.0460.0340.0950.0580.160.20.0290.030.090.0680.180.220.0390.0840.0660.0290.320.0120.0410.0850.0760.0190.30.010.040.0640.0720.020.250.0280.0380.0540.0650.0220.280.0210.040.0480.0890.0620.260.0380.0360.0450.0920.0720.20.0350.0320.0690.0870.0270.050.0890.021];group=[1;1;1;1;2;2;1;1;2;2;2;2;2;2;1];sample=[0.0520.0840.0210.0370.00710.0220.0410.0550.110.110.0210.00730.030.1120.0720.160.0560.0210.0740.0830.1050.190.021];class=classify(sample,training,group)存盘后按F5键执行,得到结果:class=1122即,样品1、样品2为1类污染,样品3、样品4为2类污染。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功