数学基础 #
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} $$
投影后,分类问题变成一维问题。
因此,一个好的投影方向应满足:
- 投影后的类别中心尽可能远;
- 各类别内部投影后尽可能集中。
因此 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 的完整流程如下:
- 计算类别均值 \(\mathbf{\mu}_0,\mathbf{\mu}_1\)
- 计算协方差矩阵 \(\Sigma_0,\Sigma_1\)
- 构造散度矩阵:
$$ S_W=\Sigma_0+\Sigma_1,\quad S_B=(\mathbf{\mu}_0-\mathbf{\mu}_1)(\mathbf{\mu}_0-\mathbf{\mu}_1)^T $$
- 求最优投影方向:
$$ \mathbf{w}^*=S_W^{-1}(\mathbf{\mu}_0-\mathbf{\mu}_1) $$
- 将样本投影到直线上:
$$ y=\mathbf{w}^T\mathbf{x} $$
- 通过阈值进行分类:
$$ y \mathop{\gtrless}_{\text{Class 0}}^{\text{Class 1}} \theta $$
因此,Fisher LDA 将高维二分类问题转化为一维阈值分类问题。