资源描述
IRIS数据集的Bayes分类实验
一、 实验原理
1) 概述
模式识别中的分类问题是根据对象特征的观察值将对象分到某个类别中去。统计决策理论是处理模式分类问题的基本理论之一,它对模式分析和分类器的设计有着实际的指导意义。
贝叶斯(Bayes)决策理论方法是统计模式识别的一个基本方法,用这个方法进行分类时需要具备以下条件:
Ø 各类别总体的分布情况是已知的。
Ø 要决策分类的类别数是一定的。
其基本思想是:以Bayes公式为基础,利用测量到的对象特征配合必要的先验信息,求出各种可能决策情况(分类情况)的后验概率,选取后验概率最大的,或者决策风险最小的决策方式(分类方式)作为决策(分类)的结果。也就是说选取最有可能使得对象具有现在所测得特性的那种假设,作为判别的结果。
常用的Bayes判别决策准则有最大后验概率准则(MAP),极大似然比准则(ML),最小风险Bayes准则,Neyman-Pearson准则(N-P)等。
2) 分类器的设计
对于一个一般的c类分类问题,其分类空间:
表特性的向量为:
其判别函数有以下几种等价形式:
a) ,
b)
c)
d)
3) IRIS数据分类实验的设计
Ø IRIS数据集:
一共具有三组数据,每一组都是一个单独的类别,每组有50个数据,每个数据都是一个四维向量。
其分类空间为:
表特性的向量为:
Ø 实验目的:
利用Bayes判别准则对三组数据进行分类,希望能够尽量准确的判断出从IRIS数据集中选取的样本所属的类别。
Ø 实验设计思路:
将每个数据看作是一个具有4维特征的观察样本
假设每类数据的每维都的分别服从正态分布即
并且两两独立。
由数理统计理论可知,样本均值和修正方差分别为和的无偏估计量,故可近似为求得和为:
贝叶斯决策规则选取:
由于不同维度数据两两独立,故其中:
另让门限值:
其中:和为所选待分类样本j类数据和i类的个数,属于先验知识。
比较与门限值的大小判断样本所属类别
最后计算分类的正确率
Ø
二、 实验过程
1) 求取每类数据的每个分量的均值和修正方差数代码如下:
sum=zeros(3,4);
sd=zeros(3,4);
for j=1:1:4
for i=1:1:50
$$ for i=1:1:20 $$
sum(1,j)=sum(1,j)+sample1(i,j);
sum(2,j)=sum(2,j)+sample2(i,j);
sum(3,j)=sum(3,j)+sample3(i,j);
end
end
sum=sum/50;
$$sum=sum/20;$$
for j=1:1:4
for i=1:1:50
sd(1,j)=sd(1,j)+(sample1(i,j)-sum(1,j))^2;
sd(2,j)=sd(2,j)+(sample2(i,j)-sum(2,j))^2;
sd(3,j)=sd(3,j)+(sample3(i,j)-sum(3,j))^2;
end
end
sd=sd/49;
$$ sd=sd/19; $$
其中每类数据都有4组均值和修正方差,3类数据总共12组,分别存放在sum 和sd这两个3×4的矩阵中。
2) 用一个函数来实现分类器的功能,代码如下
function [clfresult,accuracyrate] = bayesclassifier(samples,dimen,sum,sd,mode1,mode2)
clfresult=zeros(dimen,2);
if ((mode1(1,1)~=0)&&(mode1(1,2)~=0)&&(mode1(1,3)==0))
compare=[1,2];
end
if ((mode1(1,1)~=0)&&(mode1(1,2)==0)&&(mode1(1,3)~=0))
compare=[1,3];
end
if ((mode1(1,1)==0)&&(mode1(1,2)~=0)&&(mode1(1,3)~=0))
compare=[2,3];
end
compare1=compare(1,1);
compare2=compare(1,2);
class=zeros(1,3);
la=zeros(1,4);
lb=zeros(1,4);
for i=1:1:dimen
if samples(i,5)==1
class(1,1)=class(1,1)+1;
end
if samples(i,5)==2
class(1,2)=class(1,2)+1;
end
if samples(i,5)==3
class(1,3)=class(1,3)+1;
end
end
n=class(1,compare2)/class(1,compare1)
for i=1:1:dimen
la(1,1)=1/sqrt(sd(compare1,1))*exp(-(samples(i,1)-sum(compare1,1))^2/(2*sd(compare1,1)));
la(1,2)=1/sqrt(sd(compare1,2))*exp(-(samples(i,2)-sum(compare1,2))^2/(2*sd(compare1,2)));
la(1,3)=1/sqrt(sd(compare1,3))*exp(-(samples(i,3)-sum(compare1,3))^2/(2*sd(compare1,3)));
la(1,4)=1/sqrt(sd(compare1,4))*exp(-(samples(i,4)-sum(compare1,4))^2/(2*sd(compare1,4)));
lb(1,1)=1/sqrt(sd(compare2,1))*exp(-(samples(i,1)-sum(compare2,1))^2/(2*sd(compare2,1)));
lb(1,2)=1/sqrt(sd(compare2,2))*exp(-(samples(i,2)-sum(compare2,2))^2/(2*sd(compare2,2)));
lb(1,3)=1/sqrt(sd(compare2,3))*exp(-(samples(i,3)-sum(compare2,3))^2/(2*sd(compare2,3)));
lb(1,4)=1/sqrt(sd(compare2,4))*exp(-(samples(i,4)-sum(compare2,4))^2/(2*sd(compare2,4)));
for j=1:1:4
if(mode2(1,j)==0)
la(1,j)=1;
lb(1,j)=1;
end
end
lx=la(1,1)*la(1,2)*la(1,3)*la(1,4)/(lb(1,1)*lb(1,2)*lb(1,3)*lb(1,4))
clfresult(i,1)=i;
if lx>=n
clfresult(i,2)=compare1;
else
clfresult(i,2)=compare2;
end
end
accuracyrate=0;
for i=1:1:dimen
if clfresult(i,2)~=samples(i,5)
accuracyrate=accuracyrate+1;
end
end
accuracyrate=accuracyrate/dimen;
end
该函数有共有两个输出量,六个输入参数。
其中各个参数的规定如下:
Samples:一个Dimen×5的矩阵,Dimen是选取样本的数量,矩阵前4列存放样本的4维数据,最后一列存放相应行样本真实的类别数(1,2,3)。
Dimen:选取样本的数量。
Sum:数据集的均值参数阵。
Sd:数据集的修正方差参数阵。
Mode1:模式选择参数1,它是一个3维的行向量:
其中分别对应数据集的三个类别,当 不为零时,就在决策域中添加第i类。总共有三种模式:
在第一类和第二类中进行判别
在第一类和第三类中进行判别
在第二类和第二类中进行判别
Mode2:模式选择参数2,它是一个4维德行向量:
其中分别对应数据集的4个维度分量,当 不为零时,第i个维度的分量就作为判别分类的依据进行考虑,为零时,则第i个维度的分量忽略。Mode2共有多种模式15种模式。例如:
表示第二维的数据特征不参与分类。
对于两个输出参数:
Clfresult:是一个3×Dimen的矩阵,输出对每个数据的分类结果,并显示其真实所属类别和在Samples中的序号。
Accuracyrate:输出Bayes分类的正确率。
3) 选定不同的样本组合与特征的组合,调用bayesclassifier函数进行分类。
三、 实验结果与分析
1) 实验结果:
Ø 利用每类50个数据求出相应的均值和修正方差作为正态分布参数。并将每类中所有的50个数据全部拿来分类,dimen=100结果为(分类的正确率):
Mode1
Mode2
一类(50)
二类(50)
一类(50)
三类(50)
二类(50)
三类(50)
(1,0,0,0)
0.89
0.95
0.70
(0,1,0,0)
0.83
0.75
0.58
(0,0,1,0)
1
1
0.93
(0,0,0,1)
1
1
0.94
(1,1,0,0)
0.99
0.99
0.68
(1,0,1,0)
1
1
0.87
(1,0,0,1)
1
1
0.94
(0,1,1,0)
1
1
0.88
(0,1,0,1)
1
1
0.92
(0,0,1,1)
1
1
0.94
(1,1,1,0)
1
1
0.82
(1,1,0,1)
1
1
0.92
(1,0,1,1)
1
1
0.95
(0,1,1,1)
1
1
0.94
(1,1,1,1)
1
1
0.94
Ø 利用每类的20个数据求出相应的均值和修正方差作为正态分布参数。并将每类中另外的30个数据拿来分类,dimen=60结果为(分类的正确率):
Mode1
Mode2
一类(30)
二类(30)
一类(30)
三类(30)
二类(30)
三类(30)
(1,0,0,0)
0.9167
0.9833
0.7167
(0,1,0,0)
0.8667
0.75
0.60
(0,0,1,0)
1
1
0.9167
(0,0,0,1)
1
1
0.9167
(1,1,0,0)
0.9833
1
0.70
(1,0,1,0)
1
1
0.8667
(1,0,0,1)
1
1
0.9333
(0,1,1,0)
1
1
0.8667
(0,1,0,1)
1
1
0.9000
(0,0,1,1)
1
1
0.9333
(1,1,1,0)
1
1
0.8167
(1,1,0,1)
1
1
0.9333
(1,0,1,1)
1
1
0.9500
(0,1,1,1)
1
1
0.9333
(1,1,1,1)
1
1
0.9500
Ø 利用每类的20个数据求出相应的均值和修正方差作为正态分布参数。分别在第二类中取20个,10个和5个数据,在第三类中固定取30个数据,放在一起进行分类,结果为(第二类数据分类的正确率):
Mode1
Mode2
二类(20)
三类(30)
二类(10)
三类(30)
二类(5)
三类(30)
(1,0,0,0)
0.6500
0
0
(0,1,0,0)
0.3000
0
0
(0,0,1,0)
0.8500
0.5000
0.4000
(0,0,0,1)
0.9000
0.8000
0.6000
(1,1,1,1)
0.9000
0.8000
0.8000
2) 分析:
Ø 实验结果反映出鸢尾花数据集:
第一类数据和第二类数据的第一和第二维比较相似,第三和第四维数据差别很大。
第一类数据和第三类数据的第一和第二维比较相似,第三和第四维数据差别很大。
第二类数据和第三类数据的第一和第二维比较相似,第三和第四维数据差别较。
第二类和第三类数据整体相似度较高。
和直观判断相符。
Ø 在分类时如果选取差别较大的特征分量,分类的正确率会比较高。选取多维特征参与分类决策并不一定会增加分类的正确率,很多情况下其分类效果应该介于效果最好的基于单位特征的分类和效果最差的基于单位特征的分类之间或者并不会提高太多。在做高维特征的数据分类时可以考虑选取分类效果好的少量维度,从而达到比采用全维度更好的效果,同时可以简化计算。
Ø 实验结果表1和表2中的数据相差不大,1中用所有的数据求分布参数,再反过来对所有的数据分类,而2是用其中20组求分布参数,另外30组拿来分类,两组的结果差别不是很大,说明Bayes方法是相对稳定的,有一定的容限,可以处理未知的数据,具有实际运用的价值。
Ø 实验结果表3是当两类数据取的样本个数不同时的实验结果,由于实验把门限的先验概率比定义为不同类样本数之比,故可以用表3的结果来看是否合理,由表我们看出,随着样本比的改变,门限的改变导致了分类正确率的较大的变化,实验整体的分类正确率可能变化不大,但是较少的那类数据的样本数越少,其分类错误率就越大,这是不合理的。所以门限不能用这种方式来定,本实验的情况还是设门限为1比较合理。
模式识别实验报告一
学生:刘文
学号:3110038020
班级:硕037
展开阅读全文