logo资料库

fisher判别法.doc

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
实验 1 Fisher 线性判别实验 一、实验目的 应用统计方法解决模式识别问题的困难之一是维数问题,在低维空间行得通的方法,在 高维空间往往行不通。因此,降低维数就成为解决实际问题的关键。Fisher的方法,实际上 涉及维数压缩。 如果要把模式样本在高维的特征向量空间里投影到一条直线上,实际上就是把特征空间 压缩到一维,这在数学上容易办到。问题的关键是投影之后原来线性可分的样本可能变得混 杂在一起而无法区分。在一般情况下,总可以找到某个最好的方向,使样本投影到这个方向 的直线上是最容易分得开的。如何找到最好的直线方向,如何实现向最好方向投影的变换, 是Fisher法要解决的基本问题。这个投影变换就是我们寻求的解向量 *w 本实验通过编制程序体会 Fisher 线性判别的基本思路,理解线性判别的基本思想,掌 握 Fisher 线性判别问题的实质。 二、实验原理 1.线性投影与Fisher准则函数 各类在 d 维特征空间里的样本均值向量: M 1  n i i  k X  x x k i , 2,1i (4.5-2) 通过变换 w 映射到一维特征空间后,各类的平均值为: m i  1 n i  y k Y  i y k , 2,1i (4.5-3) 映射后,各类样本“类内离散度”定义为: 2 S i   y m k i ( y Y  k i 2 ) , 2,1i (4.5-4) 显然,我们希望在映射之后,两类的平均值之间的距离越大越好,而各类的样本类内离 散度越小越好。因此,定义Fisher准则函数: | ) J w F (  m m 1 2 2 2 s s 1   2 2 | (4.5-5) 使 FJ 最大的解 *w 就是最佳解向量,也就是Fisher的线性判别式。
2.求解 *w 从 (wJ F 的表达式可知,它并非 w 的显函数,必须进一步变换。 ) 已知: m i  m i  1 n i 1 n i y k , 2,1i , 依次代入(4.5-1)和(4.5-2),有:  y k Y  i  Xx  k T xw k  T w i 1( n i  Xx  k i x k )  T Mw , i 2,1i (4.5-6) 所以: | mm 2 1  2 | ||  T MwMw  T 1 2 || ||  2 T MMw  ( 1 2 ||) 2  T wSwwMMMMw )(    ( ) T T 2 1 1 2 b 其中: S b  ( MMMM )(   1 2 1 T ) 2 (4.5-7) (4.5-8) bS 是原 d 维特征空间里的样本类内离散度矩阵,表示两类均值向量之间的离散度大小, 因此, bS 越大越容易区分。 Mwm  T i 和(4.5-2) i M 1  n i i  k X  x x k 代入(4.5-4) 2 iS 式中: i 将(4.5-6) S 2 i   x k X  T w   ( T xw k  T Mw 2 ) i i MxMx k )(   k i T ) i  w  k X  ( i x T wSw i   ( x k  X i MxMx k )(   k i (4.5-9) T ) i , 2,1i 其中: S i 因此: 2 S 1  S 2 2  T ( Sw 1  显然: Sw  S 1  S 2 wSwwS 2  ) w T (4.5-10) (4.5-11) (4.5-12) iS 称为原 d 维特征空间里,样本“类内离散度”矩阵。 wS 是样本“类内总离散度”矩阵。 为了便于分类,显然 iS 越小越好,也就是 wS 越小越好。 将上述的所有推导结果代入 (wJ F 表达式: ) 可以得到:
* w    1  MMS w  ( 1 ) 2 其中, 是一个比例因子,不影响 *w 的方向,可以删除,从而得到最后解:   * w   1 MMS w  ( 1 ) 2 (4.5-18) *w 就使 (wJ F 取得最大值, *w 可使样本由 d 维空间向一维空间映射,其投影方向最好。 ) * w   1 MMS w  ( 1 ) 2 是一个Fisher线性判断式。 这个向量指出了相对于 Fisher 准则函数最好的投影线方向。 3. Fisher算法步骤 由Fisher线性判别式 * w   1 MMS w  ( 1 ) 求解向量 *w 的步骤: 2 ① 把来自两类 1 / ww 2 的训练样本集 X 分成 1w 和 2w 两个子集 1X 和 2X 。 ② 由 ③ 由 i M 1  n i   S i x k  X  k X  x x k i , 2,1i ,计算 iM 。 MxMx k )(   k i T ) i 计算各类的类内离散度矩阵 iS , 2,1i 。 ( i ④ 计算类内总离散度矩阵 Sw  S 1  S 2 。 ⑤ 计算 wS 的逆矩阵 1 wS 。 ⑥ 由 * w   1 MMS w  ( 1 ) 求解 *w 。 2 4.算法优缺点分析 优点:(1)一般对于线性可分的样本,总能找到一个投影方向,使得降维后样本仍然 线性可分,而且可分性更好即不同类别的样本之间的距离尽可能远,同一类别的样本尽可能 集中分布。 (2)Fisher方法可直接求解权向量 *w ; (3)Fisher的线性判别式不仅适用于确定性模式分类器的训练,而且对于随机模式也 是适用的,Fisher还可以进一步推广到多类问题中去 缺点: (1)如果 1 MM  , 2 * w 0 ,则样本线性不可分; 1 MM  ,未必线性可分; wS 2 不可逆,未必不可分。 (2)对线性不可分的情况,Fisher方法无法确定分类
三、实验结果分析 (1)训练样本程序确定投影方向 clear % w1类训练样本,10组,每组为行向量。 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类训练样本,10组,每组为行向量。 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]; %w1=load('xxx1.txt'); %w2=load('xxx2.txt'); xx1=[-0.7,0.58,0.089]'; % 测试数据xx1,为列向量。 xx2=[0.047,-0.4,1.04]'; % 测试数据xx2,为列向量。 m1=mean(w1,1)'; % w1类样本均值向量,为列向量 sw1=cov(w1,1); % w1类样本类内离散度矩阵 m2=mean(w2,1)'; % w2类样本均值向量,为列向量 sw2=cov(w2,1); % w2类样本类内离散度矩阵 sw=sw1+sw2; % 总类内离散度矩阵 w= inv(sw)*(m1-m2); % 投影方向 y0=(w'*m1+w'*m2)/2; % 阈值y0 figure(1) for i=1:10 plot3(w1(i,1),w1(i,2),w1(i,3),'g+') hold on plot3(w2(i,1),w2(i,2),w2(i,3),'ro') end xlabel('x轴'); ylabel('y轴'); title('原始训练数据w1,w2三维分布图'); z1=w'*w1'; z2=w'*w2'; figure(2) for i=1:10 plot3(z1(i)*w(1),z1(i)*w(2),z1(i)*w(3),'g+') hold on plot3(z2(i)*w(1),z2(i)*w(2),z2(i)*w(3),'ro')
end xlabel('x轴'); ylabel('y轴'); title('训练数据w1,w2线性分类效果图'); hold off y1=w'*xx1; if y1>y0 fprintf('测试数据xx1属于w1类\n'); else fprintf('测试数据xx1属于w2类\n'); end y2=w'*xx2; if y2>y0 fprintf('测试数据xx2属于w1类\n'); else fprintf('测试数据xx2属于w2类\n'); end 结果如下: 原 始 训 练 数 据 w1,w2三 维 分 布 图 4 3 2 1 0 -1 2 1 0 y轴 -1 -0.5 0 0.5 x轴 1.5 1
训 练 数 据 w1,w2线 性 分 类 效 果 图 4 2 0 -2 -4 -6 40 20 0 y轴 -20 -60 -40 0 -20 x轴 40 20 测试数据 xx1 属于 w1 类 测试数据 xx2 属于 w2 类 (2)对样本数据w3中的10个样本数据进行fisher判别法分类(程序及结果) 程序如下: clear % w1类训练样本,10组,每组为行向量。 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类训练样本,10组,每组为行向量。 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]; % w3为待分类样本数据,10组,每组为列向量。 w3=[1.58,2.32,-5.8;0.67,1.58,-4.78;1.04,1.01,-3.63;-1.49,2.18,-3.39;-0.41,1.21,-4.73;... 1.39,3.61,2.87;1.2,1.4,-1.89;-0.92,1.44,-3.22;0.45,1.33,-4.38;-0.76,0.84,-1.96]'; m1=mean(w1,1)'; % w1类样本均值向量,为列向量 sw1=cov(w1,1); % w1类样本类内离散度矩阵 m2=mean(w2,1)'; % w2类样本均值向量,为列向量 sw2=cov(w2,1); % w2类样本类内离散度矩阵 sw=sw1+sw2; % 总类内离散度矩阵
w= inv(sw)*(m1-m2); % 投影方向 y0=(w'*m1+w'*m2)/2 % 阈值y0 % w1,w2,w3原始数据三维分布图 figure(3) for i=1:10 plot3(w1(i,1),w1(i,2),w1(i,3),'g+') hold on plot3(w2(i,1),w2(i,2),w2(i,3),'ro') hold on plot3(w3(1,i),w3(2,i),w3(3,i),'bp') end xlabel('x轴'); ylabel('y轴'); title('训练w1,w2/样本w3原始数据三维分布图'); % w1,w2,w3数据线性投影分类效果图 z1=w'*w1'; z2=w'*w2'; z3=w'*w3; figure(4) for i=1:10 plot3(z1(i)*w(1),z1(i)*w(2),z1(i)*w(3),'g+') hold on plot3(z2(i)*w(1),z2(i)*w(2),z2(i)*w(3),'ro') hold on plot3(z3(i)*w(1),z3(i)*w(2),z3(i)*w(3),'bp') end xlabel('x轴'); ylabel('y轴'); title('训练w1,w2/样本w3数据线性投影分类效果图'); hold off for i=1:10 y(i)=w'*w3(:,i); if y(i)>y0 fprintf('样本数据%d属于w1类\n',i); else fprintf('样本数据%d属于w2类\n',i); end end
4 2 0 -2 -4 -6 4 5 0 -5 -10 -15 -20 -25 150 训 练 w1,w2/样 本 w3原 始 数 据 三 维 分 布 图 2 0 y轴 -2 -2 -1 0 x轴 2 1 训 练 w1,w2/样 本 w3数 据 线 性 投 影 分 类 效 果 图 100 50 y轴 0 -50 -200 -150 -100 x轴 50 0 -50
分享到:
收藏