模式识别实验报告实验一 Bayes分类器设计.docx
《模式识别实验报告实验一 Bayes分类器设计.docx》由会员分享,可在线阅读,更多相关《模式识别实验报告实验一 Bayes分类器设计.docx(20页珍藏版)》请在冰豆网上搜索。
模式识别实验报告实验一Bayes分类器设计
实验一Bayes分类器设计
【实验目的】
对模式识别有一个初步的理解,能够根据自己的设计对贝叶斯决策理论算法有一个深刻地认识,理解二类分类器的设计原理。
【实验原理】
最小风险贝叶斯决策可按下列步骤进行:
(1)在已知
,
,i=1,…,c及给出待识别的
的情况下,根据贝叶斯公式计算出后验概率:
j=1,…,x
(2)利用计算出的后验概率及决策表,按下面的公式计算出采取
i=1,…,a的条件风险
i=1,2,…,a
(3)对
(2)中得到的a个条件风险值
i=1,…,a进行比较,找出使其条件风险最小的决策
,即
则
就是最小风险贝叶斯决策。
【实验内容】
假定某个局部区域细胞识别中正常(
)和非正常(
)两类先验概率分别为
正常状态:
P(
)=;
异常状态:
P(
)=。
现有一系列待观察的细胞,其观察值为
:
已知类条件概率是的曲线如下图:
类条件概率分布正态分布分别为N(-2,)、N(2,4)
试对观察的结果进行分类。
【实验要求】
1)用matlab完成基于最小错误率的贝叶斯分类器的设计,要求程序相应语句有说明文字,要求有子程序的调用过程。
2)根据例子画出后验概率的分布曲线以及分类的结果示意图。
3)如果是最小风险贝叶斯决策,决策表如下:
最小风险贝叶斯决策表:
状态
决策
α1
0
4
α2
2
0
请重新设计程序,完成基于最小风险的贝叶斯分类器,画出相应的条件风险的分布曲线和分类结果,并比较两个结果。
【实验程序】
最小错误率贝叶斯决策
分类器设计
x=[
]
pw1=;pw2=
e1=-2;a1=
e2=2;a2=2
m=numel(x)%得到待测细胞个数
pw1_x=zeros(1,m)%存放对w1的后验概率矩阵
pw2_x=zeros(1,m)%存放对w2的后验概率矩阵
results=zeros(1,m)%存放比较结果矩阵
fori=1:
m
%计算在w1下的后验概率
pw1_x(i)=(pw1*normpdf(x(i),e1,a1))/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2))
%计算在w2下的后验概率
pw2_x(i)=(pw2*normpdf(x(i),e2,a2))/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2))
end
fori=1:
m
ifpw1_x(i)>pw2_x(i)%比较两类后验概率
result(i)=0%正常细胞
else
result(i)=1%异常细胞
end
end
a=[-5:
:
5]%取样本点以画图
n=numel(a)
pw1_plot=zeros(1,n)
pw2_plot=zeros(1,n)
forj=1:
n
pw1_plot(j)=(pw1*normpdf(a(j),e1,a1))/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2))
%计算每个样本点对w1的后验概率以画图
pw2_plot(j)=(pw2*normpdf(a(j),e2,a2))/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2))
end
figure
(1)
holdon
plot(a,pw1_plot,'k-',a,pw2_plot,'r-.')
fork=1:
m
ifresult(k)==0
plot(x(k),,'b*')%正常细胞用*表示
else
plot(x(k),,'rp')%异常细胞用五角星表示
end;
end;
legend('正常细胞后验概率曲线','异常细胞后验概率曲线','正常细胞','异常细胞')
xlabel('样本细胞的观察值')
ylabel('后验概率')
title('后验概率分布曲线')
gridon
return;
实验内容仿真
x=[,,,,,,,,,,,,,,,,,,,,,,,]
disp(x)
pw1=
pw2=
[result]=bayes(x,pw1,pw2)
最小风险贝叶斯决策
分类器设计
function[R1_x,R2_x,result]=danger(x,pw1,pw2)
m=numel(x)%得到待测细胞个数
R1_x=zeros(1,m)%存放把样本X判为正常细胞所造成的整体损失
R2_x=zeros(1,m)%存放把样本X判为异常细胞所造成的整体损失
result=zeros(1,m)%存放比较结果
e1=-2
a1=
e2=2
a2=2
%类条件概率分布px_w1:
(-2,)px_w2(2,4)
r11=0
r12=2
r21=4
r22=0
%风险决策表
fori=1:
m%计算两类风险值
R1_x(i)=r11*pw1*normpdf(x(i),e1,a1)/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2))+r21*pw2*normpdf(x(i),e2,a2)/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2))
R2_x(i)=r12*pw1*normpdf(x(i),e1,a1)/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2))+r22*pw2*normpdf(x(i),e2,a2)/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2))
end
fori=1:
m
ifR2_x(i)>R1_x(i)%第二类比第一类风险大
result(i)=0%判为正常细胞(损失较小),用0表示
else
result(i)=1%判为异常细胞,用1表示
end
end
a=[-5:
:
5]%取样本点以画图
n=numel(a)
R1_plot=zeros(1,n)
R2_plot=zeros(1,n)
forj=1:
n
R1_plot(j)=r11*pw1*normpdf(a(j),e1,a1)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2))+r21*pw2*normpdf(a(j),e2,a2)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2))
R2_plot(j)=r12*pw1*normpdf(a(j),e1,a1)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2))+r22*pw2*normpdf(a(j),e2,a2)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2))
%计算各样本点的风险以画图
end
figure
(1)
holdon
plot(a,R1_plot,'b-',a,R2_plot,'g*-')
fork=1:
m
ifresult(k)==0
plot(x(k),,'b^')%正常细胞用上三角表示
else
plot(x(k),,'go')%异常细胞用圆表示
end;
end;
legend('正常细胞','异常细胞','Location','Best')
xlabel('细胞分类结果')
ylabel('条件风险')
title('风险判决曲线')
gridon
return
实验内容仿真
x=[,,,,,,,,,,,,,,,,,,,,,,,]
disp(x)
pw1=
pw2=
[R1_x,R2_x,result]=danger(x,pw1,pw2)
【实验结果和数据】
最小错误率贝叶斯决策
后验概率曲线与判决结果在一张图上:
后验概率曲线如图所示,带*的绿色曲线为判决成异常细胞的后验概率曲线;另一条平滑的蓝色曲线为判为正常细胞的后验概率曲线。
根据最小错误概率准则,判决结果见曲线下方,其中“上三角”代表判决为正常细胞,“圆圈”代表异常细胞。
各细胞分类结果:
000000000000010111000101
0为判成正常细胞,1为判成异常细胞
图1基于最小错误率的贝叶斯判决
最小风险贝叶斯决策
风险判决曲线如图2所示,其中带*的绿色曲线代表异常细胞的条件风险曲线;另一条光滑的蓝色曲线为判为正常细胞的条件风险曲线。
根据贝叶斯最小风险判决准则,判决结果见曲线下方,其中“上三角”代表判决为正常细胞,“圆圈“代表异常细胞。
各细胞分类结果:
100000000000110111000101
其中,0为判成正常细胞,1为判成异常细胞
图2基于最小风险的贝叶斯判决
【实验分析】
由最小错误率的贝叶斯判决和基于最小风险的贝叶斯判决得出的图形中的分类结果可以看出,样本、在前者中被分为“正常细胞”,在后者中被分为“异常细胞”,分类结果截然不同。
因为在给予最小风险的贝叶斯判决中,影响决策结果的因素多了一个“损失”。
可以看出,在图1中,这两个样本点下两类决策的后验概率相差很小,当结合最小风险贝叶斯决策表进行计算时,“损失”就起了主导作用,导致出现了相反的结果。
另外,最小错误率贝叶斯决策就是在0-1损失函数条件下的最小风险贝叶斯决策,即前者是后者的特例。
实验二基于Fisher准则线性分类器设计
【实验目的】
本实验旨在让同学进一步了解分类器的设计概念,能够根据自己的设计对线性分类器有更深刻地认识,理解Fisher准则方法确定最佳线性分界面方法的原理,以及Lagrande乘子求解的原理。
【实验条件】
Matlab软件
【实验原理】
线性判别函数的一般形式可表示成
其中
根据Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向W的函数为:
上面的公式是使用Fisher准则求最佳法线向量的解,该式比较重要。
另外,该式这种形式的运算,我们称为线性变换,其中
式一个向量,
是
的逆矩阵,如
是d维,
和
都是d×d维,得到的
也是一个d维的向量。
向量
就是使Fisher准则函数
达极大值的解,也就是按Fisher准则将d维X空间投影到一维Y空间的最佳投影方向,该向量
的各分量值是对原d维特征向量求加权和的权值。
以上讨论了线性判别函数加权向量W的确定方法,并讨论了使Fisher准则函数极大的d维向量
的计算方法,但是判别函数中的另一项
尚未确定,一般可采用以下几种方法确定
如
或者
或当
与
已知时可用
……
当W0确定之后,则可按以下规则分类,
使用Fisher准则方法确定最佳线性分界面的方法是一个着名的方法,尽管提出该方法的时间比较早,仍见有人使用。
【实验程序】
functionfisher
%w1中数据点的坐标
x1=[
];
x2=[
];
x3=[
];
%将x1、x2、x3变为行向量
x1=x1(:
);
x2=x2(:
);
x3=x3(:
);
%计算第一类的样本均值向量m1
m1
(1)=mean(x1);
m1
(2)=mean(x2);
m1(3)=mean(x3);
%计算第一类样本类内离散度矩阵S1
S1=zeros(3,3);
fori=1:
36
S1=S1+[-m1
(1)+x1(i)-m1
(2)+x2(i)-m1(3)+x3(i)]'*[-m1
(1)+x1(i)-m1
(2)+x2(i)-m1(3)+x3(i)];
end
%w2的数据点坐标
x4=[
];
x5=[
];
x6=[
];
x4=x4(:
);
x5=x5(:
);
x6=x6(:
);
%计算第二类的样本均值向量m2
m2
(1)=mean(x4);
m2
(2)=mean(x5);
m2(3)=mean(x6);
%计算第二类样本类内离散度矩阵S2
S2=zeros(3,3);
fori=1:
36
S2=S2+[-m2
(1)+x4(i)-m2
(2)+x5(i)-m2(3)+x6(i)]'*[-m2
(1)+x4(i)-m2
(2)+x5(i)-m2(3)+x6(i)];
end
%总类内离散度矩阵Sw
Sw=zeros(3,3);
Sw=S1+S2;
%样本类间离散度矩阵Sb
Sb=zeros(3,3);
Sb=(m1-m2)'*(m1-m2);
%最优解W
W=Sw^-1*(m1-m2)'
%将W变为单位向量以方便计算投影
W=W/sqrt(sum(W.^2));
%计算一维Y空间中的各类样本均值M1及M2
fori=1:
36
y(i)=W'*[x1(i)x2(i)x3(i)]';
end
M1=mean(y)
fori=1:
36
y(i)=W'*[x4(i)x5(i)x6(i)]';
end
M2=mean(y)
%利用当P(w1)与P(w2)已知时的公式计算W0
p1=;p2=;
W0=-(M1+M2)/2+(log(p2/p1))/(36+36-2);
%计算将样本投影到最佳方向上以后的新坐标
X1=[x1*W
(1)+x2*W
(2)+x3*W(3)]';
X2=[x4*W
(1)+x5*W
(2)+x6*W(3)]';%得到投影长度
XX1=[W
(1)*X1;W
(2)*X1;W(3)*X1];
XX2=[W
(1)*X2;W
(2)*X2;W(3)*X2];%得到新坐标
%绘制样本点
figure
(1)
plot3(x1,x2,x3,'r*')%第一类
holdon
plot3(x4,x5,x6,'bp')%第二类
legend('第一类点','第二类点')
title('Fisher线性判别曲线')
W1=5*W;
%画出最佳方向
line([-W1
(1),W1
(1)],[-W1
(2),W1
(2)],[-W1(3),W1(3)],'color','b');
%判别已给点的分类
a1=[1,,]';a2=[,,]';a3=[,,]';a4=[,,]';a5=[,,]';
A=[a1a2a3a4a5]
n=size(A,2);
%下面代码在改变样本时都不必修改
%绘制待测数据投影到最佳方向上的点
fork=1:
n
A1=A(:
k)'*W;
A11=W*A1;%得到待测数据投影
y=W'*A(:
k)+W0;%计算后与0相比以判断类别,大于0为第一类,小于0为第二类
ify>0
plot3(A(1,k),A(2,k),A(3,k),'go');%点为"rp"对应第一类
plot3(A11
(1),A11
(2),A11(3),'go');%投影为"r+"对应go类
else
plot3(A(1,k),A(2,k),A(3,k),'m+');%点为"bh"对应m+类
plot3(A11
(1),A11
(2),A11(3),'m+');%投影为"b*"对应m+类
end
end
%画出最佳方向
line([-W1
(1),W1
(1)],[-W1
(2),W1
(2)],[-W1(3),W1(3)],'color','k');
view([,30]);
axis([-2,3,-1,3,,]);
gridon
holdoff
【实验结果和数据】
已知数据的样本点分布如下图:
首先根据求出最佳投影方向,然后按照此方向,将待测数据进行投影。
为直观起见,我们将两步画在一张图上,如下:
其中,红色的*是给出的第一类样本点,蓝色的五角星是第二类样本点。
下方的实直线是最佳投影方向。
待测数据投影在其上,圆圈是被分为第一类的样本点,十字是被分为第二类的样本点。
使
取极大值的W=(,,)
【实验分析】
的比例因子对于Fisher判别函数没有影响的原因:
在本实验中,最需要的是W的方向,或者说是在此方向上数据的投影,那么W的比例因子,即它是单位向量的多少倍长就无关紧要了,不管比例因子有多大,在最后求投影时都会被消掉而起不到实际作用。