作业二基于Fisher准则线性分类器设计

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

作业二 F i s h e r

线性判别分类器

一 实验目的 本实验旨在让同学进一步了解分类器的设计概念,能够根据自己的设计对线性分类器有更深刻地认识,理解Fisher 准则方法确定最佳线性分界面方法的原理,以及Lagrande 乘子求解的原理。

二 实验条件

Matlab 软件

三 实验原理

线性判别函数的一般形式可表示成

0)(w X W X g T

+= 其中

根据Fisher 选择投影方向W 的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向W 的函数为:

)(211*m m S W W -=- 上面的公式是使用Fisher 准则求最佳法线向量的解,该式比较重要。另外,该式这种形式的运算,我们称为线性变换,其中21m m -式一个向量,1-W S 是W S 的逆矩阵,如21m m -是d 维,W S 和1

-W S 都

是d ×d 维,得到的*W 也是一个d 维的向量。

向量*W 就是使Fisher 准则函数)(W J F 达极大值的解,也就是按Fisher 准则将d 维X 空间投影到一维Y 空间的最佳投影方向,该向量*W 的各分量值是对原d 维特征向量求加权和的权值。 以上讨论了线性判别函数加权向量W 的确定方法,并讨论了使Fisher 准则函数极大的d 维向量*

W 的计算方法,但是判别函数中的另一项0W 尚未确定,一般可采用以下几种方法确定0W 如 或者 m N N m N m N W ~~~2

122110=++-= 或当1)(ωp 与2)(ωp 已知时可用

当W 0确定之后,则可按以下规则分类,

201

0ωω∈→-<∈→->X w X W X w X W T T

四 实验程序及结果分析

%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);

for i=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);

for i=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

for i=1:36

y(i)=W'*[x1(i) x2(i) x3(i)]';

end

M1=mean(y)

for i=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*') %第一类

hold on

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=[a1 a2 a3 a4 a5]

n=size(A,2);

%下面代码在改变样本时都不必修改

%绘制待测数据投影到最佳方向上的点

for k=1:n

A1=A(:,k)'*W;

A11=W*A1;%得到待测数据投影

y=W'*A(:,k)+W0;%计算后与0相比以判断类别,大于0为第一类,小于0为第二类 if y>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,,]);

grid on

hold off

实验结果和数据:

首先根据求出最佳投影方向,然后按照此方向,将待测数据进行投影 。数据的样本点分布如下: 其中,红色的*是给出的第一类样本点,蓝色的五角星是第二类样本点。下方的实直线是最佳投影方向。待测数据投影在其上,圆圈是被分为第一类的样本点,十字是被分为第二类的样本点。

使)(w J F 取极大值的W =( , , )

实验分析:

W 的比例因子对于Fisher 判别函数没有影响的原因:

在本实验中,最需要的是W 的方向,或者说是在此方向上数据的投影,那么W 的比例因子,即它是单位向量的多少倍长就无关紧要了,不管比例因子有多大,在最后求投影时都会被消掉而起不到实际作用。

相关文档
最新文档