Fisher判别分析_用于降维的方法

https://blog.csdn.net/u013943841/article/details/45080889

首先我们得搞清楚什么是Fisher算法?选取任何一本模式识别与智能计算的书都有这方面的讲解。首先得知道Fisher线性判别函数,在处理数据的时候,我们经常遇到高维数据,这个时候往往就会遇到“维数灾难”的问题,即在低维空间可行,那么在高维空间往往却不可行,那么此时我们就可以降数据降维,将高维空间降到低维空间。

可以考虑把维空间的样本投影到一条直线上,形成一维空间,即把数据压缩到一维,这在数学中总是容易办到的。然而,即使样本在维空间里形成若干紧凑的互相分的开的集群,若把它们投影到一条任意的直线上,也可能使几类样本混在一起而变得无法识别。但在一般的情况下,总可以找到某个方向,使在这个方向的直线上,样本的投影能分开最好。

下面以2分类为例简单总结一下Fisher算法的步骤: 
(1)计算各类样本的均值向量mimi,NiNi是类ωiωi的样本个数 

mi=1Ni∑X∈ωiXi=1,2mi=1Ni∑X∈ωiXi=1,2


(2)计算样本类内离散度矩阵SiSi和总类内离散度矩阵SwSw。 

Si=∑X∈ωi(X−mi)(X−mi)T,i=1,2Si=∑X∈ωi(X−mi)(X−mi)T,i=1,2

 

Sw=S1+S2Sw=S1+S2


(3)计算样本类间离散度矩阵SbSb。Sb=(m1−m2)(m1−m2)TSb=(m1−m2)(m1−m2)T。 
(4) 求向量w∗w∗。为此定义Fisher准则函数 

JF(W)=wTSbwwTSwwJF(W)=wTSbwwTSww


使得JF(W)JF(W)取的最大值的w∗w∗为:w∗=S−1w(m1−m2)w∗=Sw−1(m1−m2)。 
(5)将训练集内所有样本进行投影。y=(w∗)TXy=(w∗)TX。 
(6)计算在投影空间上的分割阈值y0y0。阈值的选取可以有不同的方案,比较常用的一种为 

y0=N1m1~+N2m2~N1+N2y0=N1m1~+N2m2~N1+N2


另一种为 

y0=m1~+m2~2+lnp(w1)p(w2)N1−N2−2y0=m1~+m2~2+ln⁡p(w1)p(w2)N1−N2−2


其中,mi~mi~为在一维空间各样本的均值:mi~=1N1∑y∈ωiymi~=1N1∑y∈ωiy。 
样本的内类离散度s2i~si2~和总类离散度sw~sw~为s2i~=∑y∈ωi(y−mi~),i=1,2si2~=∑y∈ωi(y−mi~),i=1,2, 

sw~=s21~+s22~sw~=s12~+s22~


(7)对于给定的XX,计算它在w∗w∗上的投影点yy。y=(w∗)TXy=(w∗)TX。 
(8)根据决策规则分类,有 

{y>y0⇒X∈ω1y<y0⇒X∈ω2{y>y0⇒X∈ω1y<y0⇒X∈ω2

 

用Fisher函数解决多分类问题时,首先实现两类Fisher分类,然后根据返回的类别与新的类别再做两类Fisher分类,又能够得到比较接近的类别,以此类推,直至所有的类别,最后得出未知样本的类别。 
下图显示了fisher算法降维之后数据线性可分: 
这里写图片描述 
下面以一道例题来练习Fisher二分类: 
例:为了解某河段As,Pb污染状况,设在甲,乙两地监测,采样测的这两种元素在水中和底泥中的浓度(如下表)。依据这些数据判别未知样本是从哪个区域采得的。 
这里写图片描述 
matlab下的实验代码如下: 
%mian.m

X=load('x.txt');
x1=X(1:5,:);
x2=X(6:10,:);
sample=X(11:12,:);
y=fisher(x1,x2,sample)
  • 1
  • 2
  • 3
  • 4
  • 5

%fisher.m

function y=fisher(x1,x2,sample)
%Fisher函数
%x1,x2,sample分别为两类训练样本及待测数据集,其中行为样本数,列为特征数
r1=size(x1,1);r2=size(x2,1);
r3=size(sample,1);
a1=mean(x1)';a2=mean(x2)';
s1=cov(x1)*(r1-1);s2=cov(x2)*(r2-1);
sw=s1+s2;%求出协方差矩阵
w=inv(sw)*(a1-a2)*(r1+r2-2);
y1=mean(w'*a1);
y2=mean(w'*a2);
y0=(r1*y1+r2*y2)/(r1+r2);
for i=1:r3
  y(i)=w'*sample(i,:)';
   if y(i)>y0
      y(i)=0;
   else
      y(i)=1;
   end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

假设我们把甲地类标签设为0,乙地设为1,实验结可以得出第一个未知样本来之乙地,第二个来之甲地。 
以上我们对Fisher判别分析有了一个初步的了解,Fisher判别分析在模式识别,机器学习中应用的非常广泛,进一步的了解可以阅读相关书籍与资料。

参考资料: 
[1] 许国根,贾瑛.模式识别与智能计算的Matlab实现[M],北京航空航天大学出版社 
[2] Belhumeur P N, Hespanha J P, Kriegman D. Eigenfaces vs. fisherfaces: Recognition using class specific linear projection[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 1997, 19(7): 711-720.

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值