主成分分析(PCA)算法的数学推导与降维步骤
题目描述
主成分分析(Principal Component Analysis, PCA)是一种无监督线性降维方法,旨在通过正交变换将原始特征转换为一组线性无关的主成分,使得第一主成分方差最大,后续成分依次递减,从而在保留数据主要信息的同时减少维度。本题目将详细讲解PCA的数学推导步骤、优化目标、特征分解求解以及降维的具体流程。
解题过程
1. 问题形式化
设原始数据矩阵为 \(X \in \mathbb{R}^{n \times d}\),其中 \(n\) 是样本数,\(d\) 是特征数。假设数据已中心化(每列均值为0),即:
\[\sum_{i=1}^n X_{ij} = 0, \quad \forall j=1,\dots,d \]
目标:找到一组正交基(主成分方向)\(\mathbf{w}_1, \mathbf{w}_2, \dots, \mathbf{w}_k\)(\(k \leq d\)),使得将 \(X\) 投影到这些方向后的新特征方差最大,且不同方向之间协方差为0。
2. 第一主成分的优化目标
投影到方向 \(\mathbf{w} \in \mathbb{R}^d\) 后的样本为 \(X\mathbf{w} \in \mathbb{R}^n\),投影后数据的方差为:
\[\text{Var}(X\mathbf{w}) = \frac{1}{n} (X\mathbf{w})^\top (X\mathbf{w}) = \mathbf{w}^\top \left( \frac{1}{n} X^\top X \right) \mathbf{w} \]
其中 \(\frac{1}{n} X^\top X\) 是样本协方差矩阵,记作 \(\Sigma \in \mathbb{R}^{d \times d}\)。
为使方差最大,求解:
\[\max_{\mathbf{w}} \mathbf{w}^\top \Sigma \mathbf{w} \quad \text{s.t.} \quad \mathbf{w}^\top \mathbf{w} = 1 \]
约束 \(\|\mathbf{w}\|_2=1\) 避免方向向量缩放影响方差值。
3. 拉格朗日乘子法求解
构造拉格朗日函数:
\[\mathcal{L}(\mathbf{w}, \lambda) = \mathbf{w}^\top \Sigma \mathbf{w} - \lambda (\mathbf{w}^\top \mathbf{w} - 1) \]
对 \(\mathbf{w}\) 求梯度并令为零:
\[\frac{\partial \mathcal{L}}{\partial \mathbf{w}} = 2\Sigma \mathbf{w} - 2\lambda \mathbf{w} = 0 \]
得到:
\[\Sigma \mathbf{w} = \lambda \mathbf{w} \]
这说明 \(\mathbf{w}\) 是 \(\Sigma\) 的特征向量,\(\lambda\) 是对应的特征值。代回目标函数:
\[\mathbf{w}^\top \Sigma \mathbf{w} = \mathbf{w}^\top (\lambda \mathbf{w}) = \lambda \]
结论:最大化投影方差等价于取 \(\Sigma\) 的最大特征值对应的特征向量作为第一主成分方向。
4. 后续主成分的迭代求解
第二主成分 \(\mathbf{w}_2\) 需与 \(\mathbf{w}_1\) 正交(保证不相关),且投影方差第二大。优化问题为:
\[\max_{\mathbf{w}} \mathbf{w}^\top \Sigma \mathbf{w} \quad \text{s.t.} \quad \mathbf{w}^\top \mathbf{w}=1, \ \mathbf{w}^\top \mathbf{w}_1 = 0 \]
类似推导可得 \(\mathbf{w}_2\) 是 \(\Sigma\) 的第二大特征值对应的特征向量。
一般地,主成分方向是 \(\Sigma\) 的特征向量,按特征值从大到小排列。
5. 特征分解与降维
- 计算协方差矩阵:
\[ \Sigma = \frac{1}{n} X^\top X \]
- 特征分解:
\[ \Sigma = W \Lambda W^\top \]
其中 \(W = [\mathbf{w}_1, \dots, \mathbf{w}_d]\) 是正交矩阵,\(\Lambda = \text{diag}(\lambda_1, \dots, \lambda_d)\) 且 \(\lambda_1 \geq \lambda_2 \geq \dots \geq \lambda_d \geq 0\)。
3. 选择主成分数量 \(k\):
通常根据累计贡献率:
\[ \frac{\sum_{i=1}^k \lambda_i}{\sum_{i=1}^d \lambda_i} \geq \tau \]
\(\tau\) 常取 0.95 或 0.99。
4. 降维转换:
取前 \(k\) 个特征向量组成投影矩阵 \(W_k \in \mathbb{R}^{d \times k}\),降维后的数据为:
\[ Z = X W_k \in \mathbb{R}^{n \times k} \]
6. 步骤总结
- 对数据矩阵 \(X\) 进行中心化(每列减去均值)。
- 计算样本协方差矩阵 \(\Sigma = \frac{1}{n} X^\top X\)。
- 对 \(\Sigma\) 做特征分解,得到特征值 \(\lambda_i\) 和特征向量 \(\mathbf{w}_i\)。
- 按特征值降序排列,选择前 \(k\) 个特征向量构成投影矩阵。
- 将原始数据投影到主成分空间,得到降维后的数据 \(Z\)。
关键点理解
- 方差最大化:PCA本质是寻找使投影后方差最大的正交方向,这等价于对协方差矩阵的特征分解。
- 去相关性:主成分之间协方差为零,因为协方差矩阵的特征向量相互正交。
- 重建误差最小化:PCA也可解释为最小化投影重建误差(与低秩矩阵近似等价)。
- 与SVD的关系:实践中常用对 \(X\) 的奇异值分解(SVD)代替特征分解,避免显式计算 \(\Sigma\),且数值更稳定。