Fisher判别分析

原文地址

Fisher判别分析

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

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

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

mi=1NiXωiXi=1,2

(2)计算样本类内离散度矩阵 Si 和总类内离散度矩阵 Sw
Si=Xωi(Xmi)(Xmi)T,i=1,2

Sw=S1+S2

(3)计算样本类间离散度矩阵 Sb Sb=(m1m2)(m1m2)T
(4) 求向量 w 。为此定义Fisher准则函数
JF(W)=wTSbwwTSww

使得 JF(W) 取的最大值的 w 为: w=S1w(m1m2)
(5)将训练集内所有样本进行投影。 y=(w)TX
(6)计算在投影空间上的分割阈值 y0 。阈值的选取可以有不同的方案,比较常用的一种为
y0=N1m1~+N2m2~N1+N2

另一种为
y0=m1~+m2~2+lnp(w1)p(w2)N1N22

其中, mi~ 为在一维空间各样本的均值: mi~=1N1yωiy
样本的内类离散度 s2i~ 和总类离散度 sw~ s2i~=yωi(ymi~),i=1,2
sw~=s21~+s22~

(7)对于给定的 X ,计算它在 w 上的投影点 y y=(w)TX
(8)根据决策规则分类,有
{y>y0Xω1y<y0Xω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)
  
  

%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

假设我们把甲地类标签设为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
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值