【模式识别】Fisher线性判别

Fisher是一种将高维空间映射到低维空间降维后进行分类的方法

1.投影:

xn 的分量作线性组合可得标量

yn=w⃗ Txn

什么样的映射方法是好的,我们需要设计一个定量的标准去找 w⃗  来衡量分类的好坏,或者叫做准则函数。

2.基本参量

  • 在d维X空间

    • 各类样本均值向量 m⃗ i

      mi=1Nix⃗ Xix⃗ ,i=1,2

    • 样本类内离散度矩阵 Si 和总类内离散度矩阵 Sw

      Si=xXi(x⃗ mi)(x⃗ mi)T,i=1,2

    • 样本类间离散度矩阵 Sb

      Sb=(m1m2)(m1m2)T

  • 在一维空间

    • 各类样本均值 mi¯¯¯¯

      mi¯¯¯¯=1NiyYiy,i=1,2

    • 样本类内离散度 S2i¯¯¯¯ 和总类内离散度 Sw¯¯¯¯¯

      S2i¯¯¯¯=yYi(ymi¯¯¯¯)2,i=1,2Sw¯¯¯¯¯=S1¯¯¯¯+S2¯¯¯¯

3.衡量标准:

1.我们希望两类均值之差尽量大

2.同时希望各类样本内部尽量密集

有了这个标准后我们可以得到准则函数:

JF(w⃗ )=m1¯¯¯¯m2¯¯¯¯S21¯¯¯¯+S22¯¯¯¯

4.解:

经过一系列推导之后得到

w=S1w(m1m2)

即为准则函数 JF(w⃗ ) 最大值时候的解

5.分类

  • 1.当维数d和样本数N都很大时,可采用贝叶斯决策规则,从而获得一种在一维空间的”最优分类器”。

  • 2.也可利用先验知识选定分界阈值点 y0 ,如选择:

    y(1)0=m1¯¯¯¯+m2¯¯¯¯2y(2)0=N1m1¯¯¯¯+N2m2¯¯¯¯N1+N2=m¯¯¯y(3)0=m1¯¯¯¯+m2¯¯¯¯2+ln(P(ω1)/P(ω2))N1+N22P(ω1)P(ω2)ω1ω2

    再根据决策规则
    y<(>)y0x{ ω1ω2

    ​判断类别

代码:

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

你可能感兴趣的:(机器学习,模式识别)