Fisher线性判别实验
实验目的
(1)加深对Fisher线性判别的基本思想的认识和理解;
(2)编写实现Fisher线性判别准则函数的程序。
实验原理
1.线性投影与Fisher准则函数
在两类问题中,假定有个训练样本其中个样本来自类型,个样本来自类型,。两个类型的训练样本分别构成训练样本的子集和。
令:,
是向量通过变换得到的标量,它是一维的。实际上,对于给定的,就是判决函数的值。
由子集和的样本映射后的两个子集为和。因为我们关心的是的方向,可以令,那么就是在方向上的投影。使和最容易区分开的方向正是区分超平面的法线方向。
2.如何得到最佳方向的解析式
各类在维特征空间里的样本均值向量:
,
通过变换映射到一维特征空间后,各类的平均值为:
,
映射后,各类样本“类内离散度”定义为:
,
显然,我们希望在映射之后,两类的平均值之间的距离越大越好,而各类的样本类内离散度越小越好。因此,定义Fisher准则函数:
使最大的解就是最佳解向量,也就是Fisher的线性判别式。
实验内容
依据实验基本原理和基本方法,对实验样本数据中的类别ω1和ω2计算最优方向,画出最优方向的直线,并标记出投影后的点在直线上的位置。选择决策边界,实现新样本xx1=(-0.7,0.58,0.089),xx2=(0.047,-0.4,1.04)的分类。
最优方向分别通过课本64页公式(4-26)和公式(4-28)两种方法求解。
(4-26) (4-28)
四、实验过程
1.输入数据
clc;clear all;
w1=[-0.4 0.58 0.089;-0.31 0.27 -0.04;-0.38 0.055 -0.035;-0.15 0.53 0.011;-0.35 0.47 0.034;0.17 0.69 0.1;-0.011 0.55 -0.18;-0.27 0.61 0.12;-0.065 0.49 0.0012;-0.12 0.054 -0.063];
w2=[0.83 1.6 -0.014;1.1 1.6 0.48;-0.44 -0.41 0.32;0.047 -0.45 1.4;0.28 0.35 3.1;-0.39 -0.48 0.11;0.34 -0.079 0.14;-0.3 -0.22 2.2;1.1 1.2 -0.46;0.18 -0.11 -0.49];
xx=[-0.7 0.58 0.089;0.047 -0.4 1.04];
2.求w1的均值、w2的均值以及sw,最后可得到最佳投影方向
p=zeros(1,3);
for i=1:10
q=w1(i,:);
p=q+p;
end
m1=p/10;
m11=m1'; %得到w1的均值
p=zeros(1,3);
for i=1:10
q=w2(i,:);
p=q+p;
end
m2=p/10;
m22=m2';%得到w2的均值
p1=zeros(3,3);
for i=1:10
q=w1(i,:);
q11=q';
s=q11-m11;
ss=s';
s1=s*ss;
p1=s1+p1;
end
p2=zeros(3,3);
for i=1:10
q=w2(i,:);
q22=q';
s=q22-m22;
ss=s';
s2=s*ss;
p2=s2+p2;
end
sw=p1+p2; %计算sw
sw1=inv(sw);
W=sw1*(m11-m22) ;%得到最优投影方向
3.画出样本点的空间分布及xx1和xx2的空间分布及投影方向
wx1=W'*xx(1,:)';
wx2=W'*xx(2,:)';
wx11=wx1*W;
wx22=wx2*W;
figure;
plot3(w1(:,1),w1(:,2),w1(:,3),'r*');
hold on;
grid on;
plot3(w2(:,1),w2(:,2),w2(:,3),'g*');
x=-pi:0.01:pi;
y=W(2,1)/W(1,1)*x;
z=W(3,1)/W(1,1)*x;
plot3(x,y,z,'b');
hold on;
plot3(xx(1,1),xx(1,2),xx(1,3),'k*');
hold on;
plot3(xx(2,1),xx(2,2),xx(2,3),'c*');
hold on;
plot3(wx11(1),wx1