判别分析(Fisher判别方法)

20210308 未完更新中

前言

为了克服“维数灾难”,人们将高维数据投影到低维空间上来,并保持必要的特征,这样,一方面数据点变得比较密集一些,另一方面,可以在低维空间上进行研究。

Fisher判别分析的基本思想:选取适当的投影方向,将样本数据进行投影,使得投影后各样本点尽可能分离开来,即:使得投影后各样本类内离差平方和尽可能小,而使各样本类间的离差平方和尽可能大。

fisher判别方法示意图

1. 两个总体的Fisher判别函数

①设已知有两个类x^1x^2,在已知的数据中,x^1类有N_1个个体,x^2类有N_2个个体,即:
\{ x_j^1|j=1,2,…,N_1 \} :x_1^1,x_2^1,…,x_{N_1}^1
\{ x_j^2|j=1,2,…,N_2 \} :x_1^2,x_2^2,…,x_{N_2}^2

注意:个体x_j^i为列向量,列向量的元素为不同特征的具体数值。如,小明身高180,体重70,可以设小明这个个体为x=[180,70]^T
②计算两个类的均值
m_1=\frac{1}{N_1} \sum_{j=1}^{N_1}{x^1_j}    m_2=\frac{1}{N_2} \sum_{j=1}^{N_2}{x^2_j}
③计算两个类的类内离差平方和矩阵:
S_{w1}=\sum_{j=1}^{N_1}{(x_j^1-m_1)(x_j^1-m_1)^T} S_{w2}=\sum_{j=1}^{N_2}{(x_j^2-m_2)(x_j^2-m_2)^T}
总的离差阵为S_w=S_{w1}+S_{w2}
类间离差阵为S_t=(m_1-m_2)(m_1-m_2)^T
④设需要找的投影向量为u,将所有的个体x投影到u方向上,则可以得到投影后的结果为y^i_j=u^Tx^i_j,即:
第一类个体在u方向上的投影结果为:y_1^1,y_2^1,…,y_{N_1}^1
第二类个体在u方向上的投影结果为:y_1^2,y_2^2,…,y_{N_2}^2
⑤计算投影后两类的均值与类内离差平方和矩阵
\hat{m}_1=\frac{1}{N_1} \sum_{j=1}^{N_1}{y^1_j}=\frac{1}{N_1}u^T \sum_{j=1}^{N_1}{x^1_j}=u^Tm_1

\hat{m}_2=\frac{1}{N_2} \sum_{j=1}^{N_2}{y^2_j}=\frac{1}{N_2}u^T \sum_{j=1}^{N_2}{x^2_j}=u^Tm_2

\hat{S}_{w1}=\sum_{j=1}^{N_1}({y^1_j}-\hat{m}_1)({y^1_j}-\hat{m}_1)^T=u^TS_{w1}u

\hat{S}_{w2}=\sum_{j=1}^{N_2}({y^2_j}-\hat{m}_2)({y^2_j}-\hat{m}_2)^T=u^TS_{w2}u

总离差:
\hat{S}_{w}=\hat{S}_{w1}+\hat{S}_{w2}

类间方差:
\hat{S}_{t}=(\hat{m}_1-\hat{m}_2)(\hat{m}_1-\hat{m}_2)^T=u^TS_{t}u

⑥要使得在新的(投影后)数据空间中,数据的分离性能最好,即要使得两个类的类内距离最小,类间距离最大,建立目标函数J_f(u)=\frac{u^TS_tu}{u^TS_wu},希望找到合适的投影向量u,使得目标函数J_f(u)达到最大。

采用Lagrange乘数法求解。令分母等于非零常数,即:
{u^TS_wu}=c≠0

定义lagrange函数为
L(u)=u^TS_tu-\lambda (u^TS_wu-c)

u求偏导得
\frac{\partial L(u)}{\partial u}=u^T(S_t+S_t^T)-\lambda u^T(S_w+S_w^T)

又矩阵S_tS_w是对称矩阵,因此,上式可化简为
\frac{\partial L(u)}{\partial u}=2u^TS_t^T-2\lambda u^TS_w^T

\frac{\partial L(u)}{\partial u}=0,有
u^TS_t^T-\lambda u^TS_w^T=0

记上式得解为u_o,则
u_0^TS_t^T-\lambda u_0^TS_w^T=0
继续化简有:
S_tu_0=\lambda S_wu_o

两边同时左乘S_w^{-1}得:
S_w^{-1}S_tu_0=\lambda u_o

因此,u即为矩阵S_w^{-1}S_t的最大特征值对应的特征向量


S_t=(m_1-m_2)(m_1-m_2)^T


\lambda u_0=S_w^{-1}S_tu_0=S_w^{-1}(m_1-m_2)(m_1-m_2)^Tu_0

u_0=S_w^{-1}S_tu_0=S_w^{-1}(m_1-m_2)(m_1-m_2)^Tu_0/\lambda

(m_1-m_2)^Tu_0/\lambda为一标量,因此

C=(m_1-m_2)^Tu_0/\lambda


u_0=S_w^{-1}(m_1-m_2)C

而标量C并不会影响u的投影方向。
综上所述,u的解为
u_0=S_w^{-1}(m_1-m_2)

2. 举例说明——蠓虫分类问题

2.1 问题描述

3. Fisher判别法的优缺点

  • 在一定程度上能够克服数据高维距离度量无效性带来的困扰,但维度越高,带来的后续计算越困难;
  • 通过投影一方面使得数据更加集中,另一方面,维度的降低更容易进行判别;
  • 矩阵求逆及特征向量计算使得计算量加大;
  • 对于多个类的分类标准,需要两两抽取分类准则。

推荐阅读更多精彩内容