主成分分析(PCA)算法的数学推导与降维步骤
字数 2813 2025-12-05 11:24:24

主成分分析(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. 特征分解与降维

  1. 计算协方差矩阵

\[ \Sigma = \frac{1}{n} X^\top X \]

  1. 特征分解

\[ \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. 步骤总结

  1. 对数据矩阵 \(X\) 进行中心化(每列减去均值)。
  2. 计算样本协方差矩阵 \(\Sigma = \frac{1}{n} X^\top X\)
  3. \(\Sigma\) 做特征分解,得到特征值 \(\lambda_i\) 和特征向量 \(\mathbf{w}_i\)
  4. 按特征值降序排列,选择前 \(k\) 个特征向量构成投影矩阵。
  5. 将原始数据投影到主成分空间,得到降维后的数据 \(Z\)

关键点理解

  • 方差最大化:PCA本质是寻找使投影后方差最大的正交方向,这等价于对协方差矩阵的特征分解。
  • 去相关性:主成分之间协方差为零,因为协方差矩阵的特征向量相互正交。
  • 重建误差最小化:PCA也可解释为最小化投影重建误差(与低秩矩阵近似等价)。
  • 与SVD的关系:实践中常用对 \(X\) 的奇异值分解(SVD)代替特征分解,避免显式计算 \(\Sigma\),且数值更稳定。
主成分分析(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 \)。 选择主成分数量 \( k \): 通常根据累计贡献率: \[ \frac{\sum_ {i=1}^k \lambda_ i}{\sum_ {i=1}^d \lambda_ i} \geq \tau \] \( \tau \) 常取 0.95 或 0.99。 降维转换 : 取前 \( 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 \),且数值更稳定。