作业二基于Fisher准则线性分类器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 的比例因子,即它是单位向量的多少倍长就无关紧要了,不管比例因子有多大,在最后求投影时都会被消掉而起不到实际作用。