費雪線性判別

在模式识别中，**费雪线性判别**（Fisher's linear discriminant）是一种线性判别方法，其意图是在分类类别为c类时，将d维空间（样品点是d维向量）中的数据点投影到c-1维空间上去，使得不同类的样本点在这个空间上的投影尽量分离，同类的尽量紧凑。

## 两类情况
在二类判别时，费雪线性判别将**d**维空间中的数据点投影到一条直线上去，使得不同类的样本点在这条直线上的投影尽量分离，同类的样本点在这条直线上尽量紧凑。假设有两类样本集\mathcal{D}_1的类别为**ω**1，样本数为**n**1，\mathcal{D}_2的类别为**ω**2，样本数为**n**2。定义样本均值**m**i和类内散布**S**i。

:\mathbf{m}_i=\frac{1}{n_i} \sum_{x\in \mathcal{D}_i} \mathbf{x},i=1,2
:\mathbf{S}_i=\sum_{x\in \mathcal{D}_i} \left( \mathbf{x}-\mathbf{m}_i \right) \left(\mathbf{x}-\mathbf{m}_i \right)^t,i=1,2

投影直线的方向向量为**w**，样本投影在直线上的值为*y*。则可得两类样本投影后的均值和类内散布为\tilde{m}_i和\tilde{s}^2_i，**i**=1,2。
:y=\mathbf{w}^t\mathbf{x} \quad  \tilde{m}_i=\mathbf{w}^t\mathbf{m}_i,i=1,2
:\begin{align}
       \tilde{s}^2_i &=\sum_{y\in \mathcal{Y}_i} \left( y-\tilde{m}_i \right)^2\\
                     &=\sum_{x\in \mathcal{D}_i} \left( \mathbf{w}^t\mathbf{x}-\mathbf{w}^t\mathbf{m}_i \right)^2\\
                     &=\sum_{x\in \mathcal{D}_i} \mathbf{w}^t \left( \mathbf{x}-\mathbf{m}_i \right)\left( \mathbf{x}-\mathbf{m}_i \right)^t \mathbf{w}\\
                    &=\mathbf{w}^t \mathbf{S}_i \mathbf{w}
\end{align}

要使不同类的样本点的投影尽量分离，同类尽量紧凑，可以使两类的投影的均值的差异尽量大，其方差的和尽量小，也就是要求\frac{\left| \tilde{m}_1-\tilde{m}_2 \right|^2 }{\tilde{s}^2_1+\tilde{s}^2_2}最大化。

:\begin{align}
       \boldsymbol{J}(\mathbf{w}) &=\frac{\left| \tilde{m}_1-\tilde{m}_2 \right|^2 }{\tilde{s}^2_1+\tilde{s}^2_2} \\
                    &= \frac{ \left( \mathbf{w}^t\mathbf{m}_1-\mathbf{w}^t\mathbf{m}_2 \right)^2}{\mathbf{w}^t \mathbf{S}_1 \mathbf{w}+\mathbf{w}^t \mathbf{S}_2 \mathbf{w}} \\
                    &=\frac{\mathbf{w}^t \left( \mathbf{m}_1-\mathbf{m}_2 \right)\left( \mathbf{m}_1-\mathbf{m}_2 \right)^t \mathbf{w}} { \mathbf{w}^t \left( \mathbf{S}_1 + \mathbf{S}_2 \right) \mathbf{w} }\\
                    &=\frac{\mathbf{w}^t \mathbf{S_B} \mathbf{w}} {\mathbf{w}^t \mathbf{S_W} \mathbf{w}} \\
\end{align}
:
\mathbf{S_B}=\left( \mathbf{m}_1-\mathbf{m}_2 \right)\left( \mathbf{m}_1-\mathbf{m}_2 \right)^t, \mathbf{S_W}=\left( \mathbf{S}_1 + \mathbf{S}_2 \right)

可以证明当**w**满足\mathbf{S_B w}=\lambda \mathbf{S_W w}，即**w**的方向与\mathbf{S_W}^{-1} \left(  \mathbf{m}_1-\mathbf{m}_2 \right)相同时，***J***(**w**)取得最大值。剩下的问题就是如何求解阈值**w**0，也就是在这个一维空间中把两类分开的那个点的位置。当***J***(**w**)超过**w**0就判决为某一类别**ω**，否则就判决为另一类别。然而目前并没有一个通用的选取方法。

在两个类别的分布是多元正态分布，且协方差矩阵相同时，根据贝叶斯决策理论，\mathbf{w}=\mathbf{\Sigma}^{-1} \left(  \mathbf{u}_1-\mathbf{u}_2 \right)，并且**w**0是一个与**w**和先验概率有关的常数。我们可以用样本均值与样本协方差去估计**u**i和**Σ**。更一般地说，如果我们对投影后的数据进行平滑，或用一维高斯函数进行拟合，**ω**0就位于使两类的后验概率相同的位置上。

## 多类情况

费雪线性判别在面对二类判别时，将两类样本向一条直线投影，也就是将数据从d维空间向1维空间投影。这样在面对c个类的判别时，所要做就是将数据从d维空间向c-1维空间投影。这就需要推广投影方程、类间散布矩阵**S**B和类内散布矩阵**S**W。从d维空间向c-1维空间的投影是通过c-1投影方程进行的：


y_i=\mathbf{w}^t_i \mathbf{x},\mathbf{x}\in \mathcal{D}_i \quad i=1,\ldots,c-1



这里的\mathcal{D}_i为第i类的样本集。设\mathbf{y}=[y_1,y_2,\ldots,y_{c-1}]^t \quad \mathbf{W}=[w_1,w_2,\ldots,w_{c-1}] ，c-1个方程可以更简练地表达：


\mathbf{y}=\mathbf{W}^t \mathbf{x},\mathbf{y}\in \mathcal{Y}_i \quad i=1,\ldots,c-1

这里的\mathcal{Y}_i为第i类的样本的投影向量集。类间散布矩阵**S**B和类内散布矩阵**S**W可以由总体散布矩阵**S**T和总体均值向量**m**推导得到：
\mathbf{m}=\frac{1}{n} \sum_{\mathbf{x}} \mathbf{x}=\frac{1}{n} \sum_{i=1}^c n_i\mathbf{m}_i \qquad \mathbf{S}_T=\sum_{\mathbf{x}}(\mathbf{x}-\mathbf{m})(\mathbf{x}-\mathbf{m})^t



\begin{align}

\mathbf{S}_T & = \sum_{i=1}^{c} \sum_{\mathbf{x} \in \mathcal{D}_i}(\mathbf{x}-\mathbf{m}_i+\mathbf{m}_i-\mathbf{m})(\mathbf{x}-\mathbf{m}_i+\mathbf{m}_i-\mathbf{m})^t \\

& = \sum_{i=1}^{c} \sum_{\mathbf{x} \in \mathcal{D}_i}(\mathbf{x}-\mathbf{m}_i)(\mathbf{x}-\mathbf{m}_i)^t+\sum_{i=1}^{c} \sum_{\mathbf{x} \in \mathcal{D}_i}(\mathbf{m}_i-\mathbf{m})(\mathbf{m}_i-\mathbf{m})^T \\

\end{align}

由此定义类间散布矩阵**S**B和类内散布矩阵**S**W：



\mathbf{S}_W=\sum_{i=1}^{c} \sum_{\mathbf{x} \in \mathcal{D}_i}(\mathbf{x}-\mathbf{m}_i)(\mathbf{x}-\mathbf{m}_i)^t \quad \mathbf{S_B}=\sum_{i=1}^{c} \sum_{\mathbf{x} \in \mathcal{D}_i}(\mathbf{m}_i-\mathbf{m})(\mathbf{m}_i-\mathbf{m})^T 



\mathbf{S}_T=\mathbf{S}_W+\mathbf{S_B}

那么样本数据的投影向量的类间散布矩阵\widetilde{\mathbf{S}}_\mathbf{B}和类内散布矩阵\widetilde{\mathbf{S}}_\mathbf{W}：即为：

\widetilde{\mathbf{S}}_\mathbf{B}=\sum_{i=1}^{c} \sum_{\mathbf{y} \in \mathcal{Y}_i}(\widetilde{\mathbf{m}}_i-\widetilde{\mathbf{m}})(\widetilde{\mathbf{m}}_i-\widetilde{\mathbf{m}})^T=\mathbf{W}^t \mathbf{S_B} \mathbf{W}

\widetilde{\mathbf{S}}_\mathbf{W}=\sum_{i=1}^{c} \sum_{\mathbf{y} \in \mathcal{Y}_i}(\mathbf{y}-\widetilde{\mathbf{m}}_i)(\mathbf{y}-\widetilde{\mathbf{m}}_i)^t=\mathbf{W}^t \mathbf{S_W} \mathbf{W}

与两类情况类似，要找到某一**W**使得类内散布尽量小，类间散布尽量大。但这里的类内散布和类间散布不再是一个值，而是一个矩阵。矩阵的行列式是矩阵的特征值的乘积，也就是数据在各个主要方向的方差的积，相当于类别散布超椭球体的体积的平方。故使用行列式来度量散布，这样判别函数即为\boldsymbol{J}(\mathbf{w})=\frac=\frac

可以证明，当**W**的列向量**w**i是\mathbf{S_B}\mathbf{w}_i=\mathbf{\lambda}_i \mathbf{S_W}\mathbf{w}_i的广义特征向量时，可以使得***J***(**w**)最大。因为**S**B中c个秩为1或0的矩阵相加，而且其中只有c-1个矩阵是相互独立的。所以**S**B的秩最多为c-1。所以最多只有c-1个特征向量是非零的。

## 应用
### 人脸识别
在人脸识别中，每一个人脸图像具有大量的像素点。LDA主要用来将特征减少到一个可以处理的数目在进行分类。每一个新的维度都是原先像素值的线性组合，这就构成了一个模板。这样获得的线性组合被称为Fisher faces,而通过主成分分析获得的则称为特征脸。

## 参考文献

* 

*