费雪线性判别

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

## 两类情况

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

$$\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} <pre> \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} </pre> \end{align}$$

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

$$\begin{align} <pre> \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}} \\ </pre> \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)取得最大值。剩下的问题就是如何求解阈值w0，也就是在这个一维空间中把两类分开的那个点的位置。当J(w)超过w0就判决为某一类别ω，否则就判决为另一类别。然而目前并没有一个通用的选取方法。

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

## 多类情况

费雪线性判别在面对二类判别时，将两类样本向一条直线投影，也就是将数据从d维空间向1维空间投影。这样在面对c个类的判别时，所要做就是将数据从d维空间向c-1维空间投影。这就需要推广投影方程、类间散布矩阵SB和类内散布矩阵SW。从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类的样本的投影向量集。类间散布矩阵SB和类内散布矩阵SW可以由总体散布矩阵ST和总体均值向量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}$$

由此定义类间散布矩阵SB和类内散布矩阵SW：

$$\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{|\widetilde{\mathbf{S}}_\mathbf{B}|}{|\widetilde{\mathbf{S}}_\mathbf{W}|}=\frac{|\mathbf{W}^t \mathbf{S_B} \mathbf{W}|}{|\mathbf{W}^t \mathbf{S_W} \mathbf{W}|}$

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

## 应用

### 人脸识别

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