跳过正文

线性判别分析(Fisher 判别)

·1927 字·4 分钟

数学基础
#

1. 均值向量
#

对于一维数据:

$$ \bar{x} = \frac{1}{n} \sum_{i=1}^n x^{(i)} $$

但对于多维数据,其中每个样本是一个向量:

$$ \mathbf{x}^{(i)} = \begin{bmatrix} x_1^{(i)} \\ x_2^{(i)} \\ \vdots \\ x_d^{(i)} \end{bmatrix} $$

其均值向量定义为:

$$ \mathbf{\mu} = \frac{1}{n} \sum_{i=1}^n \mathbf{x}^{(i)}, \mathbf{\mu} \in \R^d $$

具体写开为:

$$ \mathbf{\mu} = \begin{bmatrix} \mu_1 \\ \mu_2 \\ \vdots \\ \mu_d \end{bmatrix} = \begin{bmatrix} \frac{1}{n} \sum_{i=1}^n x_1^{(i)} \\ \frac{1}{n} \sum_{i=1}^n x_2^{(i)} \\ \vdots \\ \frac{1}{n} \sum_{i=1}^n x_d^{(i)} \\ \end{bmatrix} $$

例如,假设我们有一个 \(\mathbf{x}\),其中包含三个二维样本:

$$ x^{(1)} = \begin{bmatrix} 1 \\ 2 \end{bmatrix},\space x^{(2)} = \begin{bmatrix} 3 \\ 4 \end{bmatrix},\space x^{(3)} = \begin{bmatrix} 5 \\ 6 \end{bmatrix} $$

则其均值向量为:

$$ \mathbf{\mu} = \frac{1}{3} \left( \begin{bmatrix} 1 \\ 2 \end{bmatrix} + \begin{bmatrix} 3 \\ 4 \end{bmatrix} + \begin{bmatrix} 5 \\ 6 \end{bmatrix} \right) = \begin{bmatrix} 3 \\ 4 \end{bmatrix} $$

2. 协方差矩阵
#

对于一维数据:

$$ \mathrm{Var}(x)=\frac1n\sum (x^{(i)} - \bar x)^2 $$

为了衡量两个变量如何共同变化,我们定义协方差为:

$$ \mathrm{Cov}(x, y) = \frac{1}{n} \sum_{i=1}^{n} (x^{(i)} - \bar{x}) (y^{(i)} - \bar{y}) $$

例如,我们有

$$ x^{(1)} = \begin{bmatrix} 1 \\ 2 \end{bmatrix},\space x^{(2)} = \begin{bmatrix} 3 \\ 4 \end{bmatrix},\space x^{(3)} = \begin{bmatrix} 5 \\ 6 \end{bmatrix} $$

记第一维为 \(x_1\),第二维为 \(x_2\),则

$$ \bar{x}_1 = \frac{1 + 3 + 5}{3} = 3,\space \bar{x}_2 = \frac{2 + 4 + 6}{3} = 4 $$

因此:

$$ \begin{align*} \mathrm{Cov}(x_1, x_2) &= \frac{1}{3}[(1 - 3)(2 - 4) + (3 - 3)(4 - 4) + (5 - 3)(6 - 4)] \\ &= \frac{1}{3}(4 + 0 + 4) = \frac{8}{3} \end{align*} $$

但对于多维数据,其中每个样本是一个向量,其协方差矩阵定义为:

$$ \Sigma = \frac{1}{n} \sum_{i=1}^{n} (\mathbf{x}^{(i)} - \mathbf{\mu})(\mathbf{x}^{(i)} - \mathbf{\mu})^T $$

其中 \(\Sigma \in \mathbb{R}^{d \times d}\)。

\(\Sigma\) 的每个元素表示两个维度之间的协方差:

$$ \Sigma_{jk} = \mathrm{Cov}(x_j, x_k) $$

因此,对于二维向量

$$ \mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} $$

协方差矩阵为:

$$ \Sigma = \begin{bmatrix} \mathrm{Var}(x_1) & \mathrm{Cov}(x_1, x_2) \\ \mathrm{Cov}(x_2, x_1) & \mathrm{Var}(x_2) \end{bmatrix} $$

例如,继续使用上面的数据集:

$$ \mathbf{x}^{(1)} = \begin{bmatrix} 1 \\ 2 \end{bmatrix},\space \mathbf{x}^{(2)} = \begin{bmatrix} 3 \\ 4 \end{bmatrix},\space \mathbf{x}^{(3)} = \begin{bmatrix} 5 \\ 6 \end{bmatrix} $$

我们已经知道:

$$ \mathbf{\mu} = \begin{bmatrix} 3 \\ 4 \end{bmatrix} $$

则:

$$ \mathbf{x}^{(1)} - \mathbf{\mu} = \begin{bmatrix} -2 \\ -2 \end{bmatrix},\space \mathbf{x}^{(2)} - \mathbf{\mu} = \begin{bmatrix} 0 \\ 0 \end{bmatrix},\space \mathbf{x}^{(3)} - \mathbf{\mu} = \begin{bmatrix} 2 \\ 2 \end{bmatrix} $$

因此:

$$ \begin{align*} \Sigma &= \frac{1}{3} \left[ \begin{bmatrix} -2 \\ -2 \end{bmatrix} \begin{bmatrix} -2 & -2 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \end{bmatrix} \begin{bmatrix} 0 & 0 \end{bmatrix} + \begin{bmatrix} 2 \\ 2 \end{bmatrix} \begin{bmatrix} 2 & 2 \end{bmatrix} \right] \\ &= \frac{1}{3} \left[ \begin{bmatrix} 4 & 4 \\ 4 & 4 \end{bmatrix} + \begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix} + \begin{bmatrix} 4 & 4 \\ 4 & 4 \end{bmatrix} \right] \\ &= \frac{1}{3} \begin{bmatrix} 8 & 8 \\ 8 & 8 \end{bmatrix} \\ &= \begin{bmatrix} \frac{8}{3} & \frac{8}{3} \\ \frac{8}{3} & \frac{8}{3} \end{bmatrix} \end{align*} $$

投影到一条直线
#

Fisher 线性判别分析的核心思想是将高维样本投影到一条直线上:

$$ y = \mathbf{w}^T \mathbf{x} $$

其中:

  • \(\mathbf{x} \in \mathbb{R}^d\) 是原始样本,
  • \(\mathbf{w} \in \mathbb{R}^d\) 是投影方向,
  • \(y \in \mathbb{R}\) 是投影后的标量。

从几何上看,这意味着将所有样本投影到由 \(\mathbf{w}\) 张成的直线上。


投影后的均值
#

设原始数据的均值向量为 \(\mathbf{\mu}\)。

则投影后数据的均值为:

$$ \mu_y = \mathbf{w}^T \mathbf{\mu} $$

这由期望的线性性质可得:

$$ \begin{align*} \mu_y &= \mathbb{E}[y] \\ &= \mathbb{E}[\mathbf{w}^T\mathbf{x}] \\ &= \mathbf{w}^T\mathbb{E}[\mathbf{x}] \\ &= \mathbf{w}^T\mathbf{\mu} \end{align*} $$

因此,投影后各类别的中心也会被映射到该直线上。


投影后的方差
#

设原始协方差矩阵为 \(\Sigma\)。

则投影后数据的方差为:

$$ \sigma_y^2 = \mathbf{w}^T \Sigma \mathbf{w} $$

证明:

$$ \begin{align*} \sigma_y^2 &= \mathrm{Var}(y) \\ &= \mathrm{Var}(\mathbf{w}^T\mathbf{x}) \\ &= \mathbb{E}\left[(\mathbf{w}^T\mathbf{x} - \mathbf{w}^T\mathbf{\mu})^2\right] \\ &= \mathbb{E}\left[(\mathbf{w}^T(\mathbf{x}-\mathbf{\mu}))^2\right] \\ &= \mathbb{E}\left[\mathbf{w}^T(\mathbf{x}-\mathbf{\mu})(\mathbf{x}-\mathbf{\mu})^T\mathbf{w}\right] \\ &= \mathbf{w}^T \mathbb{E}\left[(\mathbf{x}-\mathbf{\mu})(\mathbf{x}-\mathbf{\mu})^T\right] \mathbf{w} \\ &= \mathbf{w}^T \Sigma \mathbf{w} \end{align*} $$

因此,投影后的方差是协方差矩阵的一个二次型。


Fisher 准则
#

假设我们有两个类别:

  • 类别 0,均值为 \(\mathbf{\mu}_0\),协方差为 \(\Sigma_0\)
  • 类别 1,均值为 \(\mathbf{\mu}_1\),协方差为 \(\Sigma_1\)

投影到 \(\mathbf{w}\) 后:

  • 投影均值变为:

$$ m_0 = \mathbf{w}^T \mathbf{\mu}_0,\quad m_1 = \mathbf{w}^T \mathbf{\mu}_1 $$

  • 投影方差变为:

$$ s_0^2 = \mathbf{w}^T \Sigma_0 \mathbf{w},\quad s_1^2 = \mathbf{w}^T \Sigma_1 \mathbf{w} $$

投影后,分类问题变成一维问题。
因此,一个好的投影方向应满足:

  1. 投影后的类别中心尽可能远;
  2. 各类别内部投影后尽可能集中。

因此 Fisher 提出如下目标函数:

$$ J(\mathbf{w}) = \frac{(m_0 - m_1)^2}{s_0^2 + s_1^2} $$

其中:

  • 分子衡量投影后类别均值之间的距离;
  • 分母衡量投影后类别内部的总离散程度。

代入均值/方差公式得:

$$ J(\mathbf{w}) = \frac{(\mathbf{w}^T(\mathbf{\mu}_0-\mathbf{\mu}_1))^2}{\mathbf{w}^T(\Sigma_0+\Sigma_1)\mathbf{w}} $$


Scatter Matrices
#

为了简化记号,引入两个散度矩阵。

类内散度矩阵(within-class scatter matrix) 表示各类别内部的离散程度:

$$ S_W = \Sigma_0 + \Sigma_1 $$

类间散度矩阵(between-class scatter matrix) 表示类别中心之间的分离程度:

$$ S_B = (\mathbf{\mu}_0-\mathbf{\mu}_1)(\mathbf{\mu}_0-\mathbf{\mu}_1)^T $$

利用上述定义:

$$ \mathbf{w}^T S_B \mathbf{w} = (\mathbf{w}^T(\mathbf{\mu}_0-\mathbf{\mu}_1))^2 $$

以及

$$ \begin{align*} \mathbf{w}^T S_W \mathbf{w} &= \mathbf{w}^T \Sigma_0 \mathbf{w} + \mathbf{w}^T \Sigma_1 \mathbf{w} \\ &= s_0^2+s_1^2 \end{align*} $$

因此 Fisher 准则可写为:

$$ J(\mathbf{w}) = \frac{\mathbf{w}^T S_B \mathbf{w}}{\mathbf{w}^T S_W \mathbf{w}} $$


最优投影方向
#

我们希望找到使 Fisher 准则最大的投影方向:

$$ \mathbf{w}^* = \arg\max_{\mathbf{w}} \frac{\mathbf{w}^T S_B \mathbf{w}}{\mathbf{w}^T S_W \mathbf{w}} $$

由于缩放 \(\mathbf{w}\) 不会改变该比值,

$$ J(c\mathbf{w}) = J(\mathbf{w}),\quad c\neq 0 $$

因此只有方向重要。

于是可加约束:

$$ \mathbf{w}^T S_W \mathbf{w}=1 $$

将问题转化为:

$$ \max_{\mathbf{w}} \mathbf{w}^T S_B \mathbf{w} \quad \text{subject to } \mathbf{w}^T S_W \mathbf{w}=1 $$


拉格朗日推导
#

构造拉格朗日函数:

$$ L(\mathbf{w},\lambda) = \mathbf{w}^T S_B \mathbf{w} - \lambda(\mathbf{w}^T S_W \mathbf{w}-1) $$

对 \(\mathbf{w}\) 求导并令其为零:

$$ \frac{\partial L}{\partial \mathbf{w}} = 2S_B\mathbf{w} - 2\lambda S_W\mathbf{w} = 0 $$

因此:

$$ S_B\mathbf{w} = \lambda S_W\mathbf{w} $$

这就是一个广义特征值问题。


代入 \(S_B\) 的形式
#

回忆:

$$ S_B = (\mathbf{\mu}_0-\mathbf{\mu}_1)(\mathbf{\mu}_0-\mathbf{\mu}_1)^T $$

代入得:

$$ (\mathbf{\mu}_0-\mathbf{\mu}_1)(\mathbf{\mu}_0-\mathbf{\mu}_1)^T\mathbf{w} = \lambda S_W\mathbf{w} $$

注意到:

$$ (\mathbf{\mu}_0-\mathbf{\mu}_1)^T\mathbf{w} $$

是一个标量。令:

$$ c=(\mathbf{\mu}_0-\mathbf{\mu}_1)^T\mathbf{w} $$

则:

$$ c(\mathbf{\mu}_0-\mathbf{\mu}_1) = \lambda S_W\mathbf{w} $$

两边左乘 \(S_W^{-1}\):

$$ \mathbf{w} = \frac{c}{\lambda} S_W^{-1} (\mathbf{\mu}_0-\mathbf{\mu}_1) $$

由于 \(\frac{c}{\lambda}\) 仅为标量,方向不变,因此得到:

$$ \boxed{ \mathbf{w}^* = S_W^{-1}(\mathbf{\mu}_0-\mathbf{\mu}_1) } $$

这就是 Fisher 线性判别方向。

直观理解:

  • \((\mathbf{\mu}_0-\mathbf{\mu}_1)\) 表示两个类别中心的方向;
  • \(S_W^{-1}\) 会削弱类内方差大的方向的权重。

分类规则
#

得到 \(\mathbf{w}\) 后,将新样本 \(\mathbf{x}\) 投影:

$$ y = \mathbf{w}^T \mathbf{x} $$

一个简单的判别阈值是投影后两个类别均值的中点:

$$ \theta = \frac{m_0 + m_1}{2} $$

其中:

$$ m_0 = \mathbf{w}^T\mathbf{\mu}_0,\quad m_1 = \mathbf{w}^T\mathbf{\mu}_1 $$

分类规则:

$$ \begin{cases} y > \theta,\quad \text{Class 1} \\ y \le \theta,\quad \text{Class 0} \end{cases} $$

即将样本归入投影后距离更近的类别中心。


Fisher LDA 总结
#

Fisher LDA 的完整流程如下:

  1. 计算类别均值 \(\mathbf{\mu}_0,\mathbf{\mu}_1\)
  2. 计算协方差矩阵 \(\Sigma_0,\Sigma_1\)
  3. 构造散度矩阵:

$$ S_W=\Sigma_0+\Sigma_1,\quad S_B=(\mathbf{\mu}_0-\mathbf{\mu}_1)(\mathbf{\mu}_0-\mathbf{\mu}_1)^T $$

  1. 求最优投影方向:

$$ \mathbf{w}^*=S_W^{-1}(\mathbf{\mu}_0-\mathbf{\mu}_1) $$

  1. 将样本投影到直线上:

$$ y=\mathbf{w}^T\mathbf{x} $$

  1. 通过阈值进行分类:

$$ y \mathop{\gtrless}_{\text{Class 0}}^{\text{Class 1}} \theta $$

因此,Fisher LDA 将高维二分类问题转化为一维阈值分类问题。