简单分类器的MATLAB实现

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单分类器的MATLAB实现

摘要:本实验运用最小距离法、Fisher线形判别法、朴素贝叶斯法、K近邻法四种模式识别中最简单的方法处理两维两类别的识别问题,最后对实验结果进行了比较。

关键字:MATLAB 最小距离Fisher线形判别朴素贝叶斯K近邻法

一.M atlab语言简介

Matlab 语言(即Matrix 和Laboratory) 的前三位字母组合,意为“矩阵实验室”,Matlab 语言是一种具有面向对象程序设计特征的高级语言,以矩阵和阵列为基本编程单位。Matlab 可以被高度“向量化”,而且用户易写易读。传统的高级语言开发程序不仅仅需要掌握所用语言的语法,还需要对有关算法进行深入的分析。与其他高级程序设计语言相比,Matlab 在编程的效率、可读性以及可移植性等方面都要高于其他高级语言,但是执行效率要低于高级语言,对计算机系统的要求比较高。例如,某数据集是m*n的二维数据组,对一般的高级计算机语言来说,必须采用两层循环才能得到结果,不但循环费时费力,而且程序复杂;而用Matlab 处理这样的问题就快得多,只需要一小段程序就可完成该功能,虽然指令简单,但其计算的快速性、准确性和稳定性是一般高级语言程序所远远不及的。严格地说,Matlab 语言所开发的程序不能脱离其解释性执行环境而运行。

二.样本预处理

实验样本来源于1996年UCI的Abalone data,原始样本格式如下:

1 2 3 4 5 6 7 8 9

其中第一行是属性代码:1.sex 2.length 3.diameter 4.height 5.whole_weight 6.shucked_weight 7 .viscera weight 8. shell weight 9.age

原始样本是一个8维20类的样本集,就是根据Abalone的第一至第八个特征来预测第九个特征,即Abalone的年龄。为简单其见,首先将原始样本处理成两维两类别问题的样本。选取length和weiht作为两个特征向量,来预测第三个特征向量age.(age=6或者age=9),我们将age=6的样本做为第一类,age=12的样本做为第二类。

处理后的样本:

length weight age

三.实验过程

1.最小距离法

最小距离法是事先从给定的训练集中为每一个类别生成一个代表该类的中心向量,计算新向量与每个类别中心向量的距离,距离最小的类别即新向量的类别。两类别的分界面就是就是两类别中心向量终点连线的中垂线。

图1

分界面方程可以由下式求出:

(m1-m2)[x1,x2]'-(m1-m2)(m1+(m2-m1)/2)'=0

其中:m1为第一类训练样本的均值,m2为第二类样本的均值.

2.Fisher判别法

最小距离判别法对于离散度相等的线性可分问题分类效果是令人满意的,但是根据本实验样本而言,由上图可见第一类与第二类的离散度并不相等,而Fisher线性判别法较好的解决的这一问题.Fisher判别法希望类内离散度与类间离散度的比值越小越好,然后根据最小的比值将两维空间影射的一维空间.影射方向可由以下matlab程序求出

m1=mean(newtrain6)

m2=mean(newtrain12)%求两类的均值

s1=cov(newtrain6)

s2=cov(newtrain12)%求两类的协方差

s=s1+s2

w=(inv(s))*(m1-m2)'%求影射方向

图2

3. 素贝叶斯法

朴素贝叶斯算法以贝叶斯定理为理论基础,是一种在已知先验概率与类条件概率情况下的模式识别方法,其基本思想是:一个向量属于某个类别的概率,等于词属于该类别概率的综合表达式。之所以称其为“朴素”,是因为它的条件独立性假设,即个向量在给定类别下的条件概率分布是相互独立的。

设训练样本集为m 类,记作C={c 1,c 2,…c m },每类的先验概率P(c i )=c i 类样本数/总样本数,i=1,2,……,m ,对于新样本x ,其属于c i 的条件概率为P(x |c i ),根据贝叶斯定理,c i 的后验概率为P(c i |x )为:

∑==

=

m

k k k

i i i i i C P C

x P C P C x P x P C P C x P x C P 1

)

()|()

()|()

()

()|()|( (2-1)

如果)|()|(x C P x C P j i > i=1,2,……,m ,则i C x ∈ (2-2) 上式为最大后验概率判别准则。将式子2-1代入2-2中,则有:

如果)()|()()|(j j i i C P C x P C P C x P > i=1,2,……,m ,则i C x ∈ (2-3) 特殊情况下,若)|()|(x C P x C P j i >,可以采用最大似然判别准则: 如果))|(max ()|(j i C x P C x P = j=1,2,……,m ,则i C x ∈ (2-4) 对本实验而言我们假设先验概率相等即P(c1)= P(c 2),现在主要问题就转化为求类条件概率密度问题,我们假设类条件概率密度服从正态分布,采用最大似然估计法估计参数。

用最大似然估计发求参数的matlab 函数是mle(); 也可以根据最大似然估计法的结论直接计算正态分布的参数值,程序如下:

m6=mean(newtrain6) m12=mean(newtrain12) cov1=cov(newtrain6) cov2=cov(newtrain12)

f1=(exp(-(x-m6)*inv(cov1)*(x-m6)'/2))/((2*pi)*sqrt(det(cov1))) f2=(exp(-(x-m12)*inv(cov2)*(x-m12)'/2))/((2*pi)*sqrt(det(cov2)))

f1,f2既是所给向量x 的在每一类的类条件概率密度值。然后根据上述判别函数中的最大似然判别法:))|(max ()|(j i C x P C x P = j=1,2,……,m ,则i C x ∈

4.K 近邻法

k 近邻算法是一种逼近实数值或离散值的基于实例的分类算法,其基本思想是:当有新的向量时,在n 维向量

空间中计算新向量与样本实例中每个向量之间的距离,找

出k 个与新向量距离最近的向量,即k 个最近“邻居”,

这些“邻居”与新向量具有较高的相似度,因而,新向量

的类别可以根据这k 个近邻向量的所属类别值估算得到。

如图3所示,“x ”表示待分类新向量,“+”表示第一

类,“-”表示第二类,当k=5时,新向量的“5-近邻”中有3个第一类,2个第二类,通过计算,新向量与第一类的相似度较大,于是,新向量被分到第一类中。

K 近邻算法最大的缺点就是计算量大,为了克服这个缺点,人们提出了很多快速的近邻算法,由于本实验的训练样本集比较小(第一类与第二类均为100个样本),我们直接采用近邻算法。本实验测试了K=1,K=3,K=5,K=7,K=9,K=11,K=13。K 一率取奇数,这是为了避免分类器做出拒绝判别的情况。

四. 实验结果分析

实验中第一类与第二类训练样本都为100即 train1=100,train2=100。剩余样本全部作为测试集,测试样本中第一类test1=169,test2=167。分类器的性能评价用用每一类的查全率

图3 K-近邻算法示意图

相关文档
最新文档