PCA(主成分分析)相关内容。
0. PCA 解决的是什么问题?(Why PCA)
高维数据普遍存在:
- 维度相关性(correlation)高
- 噪声多,结构难以观察
- 后续模型(线性回归 / 分类)受冗余维度影响严重
- 需要降维以降低复杂度,提升可视化、计算效率、泛化性
目标:
找到一组新的正交方向,使
1)每个方向的”信息量”尽可能大,
2)方向之间互不相关,
3)用少量方向即可近似原数据。
这组方向就是 主成分(principal components)。
1. PCA 数据预处理
数据集:
中心化:
理由:
- 使方差 = 二阶矩:
- 协方差矩阵简化为
- 否则均值会使整个分析复杂化
定义数据矩阵:
协方差矩阵(样本估计):
协方差矩阵的性质:
是对称矩阵: 是半正定矩阵:对任意 ,有 的特征值都是非负实数 的特征向量两两正交
2. PCA 的核心数学目标
2.1 投影的定义
给定方向向量
约定:本文统一采用
的写法,即行向量乘列向量得标量。
2.2 为什么用方差衡量信息量?
直观理解:
- 如果所有点投影到同一位置(方差 = 0),则该方向无法区分数据
- 投影越分散(方差越大),该方向携带的信息越多
数学表述:方向
由于数据已中心化,
2.3 投影方差的矩阵形式
由于
这是 PCA 的核心公式,后面所有推导都等价于最大化它。
2.4 PCA 的优化问题
约束条件:为避免
于是 PCA 的优化问题是:
后续主成分需要加入正交约束(保持方向彼此正交):
3. PCA 的”三大严格推导方式”
3.1 推导一:最大化投影方差(Rayleigh Quotient)
1) 一维主成分的详细推导
Step 1: 建立优化问题
我们希望找到一个单位向量
Step 2: 构造拉格朗日函数
引入拉格朗日乘子
Step 3: 求导并设为零
对
(因为 对称)
因此:
化简得:
这正是特征值问题!
Step 4: 确定哪个特征向量是最优解
将
因此,投影方差 = 特征值
为了最大化方差,应选择最大特征值
Step 5: Rayleigh Quotient 的理解
定义 Rayleigh 商:
对于任意非零向量
的最大值 = (最大特征值) 的最小值 = (最小特征值) - 极值点恰好是对应的特征向量
直观理解:Rayleigh 商衡量的是向量
2) 第二主成分的推导
Step 1: 添加正交约束
第二主成分
- 单位长度:
- 与第一主成分正交:
优化问题:
Step 2: 拉格朗日函数
Step 3: 求导
Step 4: 利用正交性消除
左乘
由于
得:
Step 5: 回代得特征方程
3) K 维主成分的一般推导
矩阵形式的优化问题
寻找矩阵
目标函数(总方差):
为什么是迹?
利用特征分解求解
设
其中
关键引理:对于任意满足
等号成立当且仅当
证明思路:
令
设
由于 $Q^\top Q = IK
为最大化上式,应让大的 $\lambdai
最终结论:
最优投影矩阵由前
3.2 推导二:最小化重建误差(Reconstruction View)
这一视角将 PCA 理解为一个最佳线性近似问题:用低维子空间来近似高维数据。
(1) 一维情形的详细推导
Step 1: 定义重建过程
给定单位方向
- 投影:计算在
方向的坐标 (标量) - 重建:
几何理解:
Step 2: 计算单个点的重建误差
展开这个范数:
Step 3: 计算平均重建误差
分离为两部分:
因此:
Step 4: 等价性
最小化重建误差
直观理解:
- 总能量 = 保留的能量 + 丢失的能量
- 保留越多(
大) 丢失越少( 小)
(2) K 维情形的详细推导
Step 1: 定义 K 维投影空间
设
Step 2: 投影矩阵
投影到
投影矩阵的性质:
(幂等性) (对称性)
Step 3: 重建过程
其中
Step 4: 计算重建误差
令
(利用了 $P\perp^2 = P\perp, P\perp^\top = P\perp$)
Step 5: 平均误差的矩阵形式
利用迹的线性性:
因此:
Step 6: 最优解
由推导一的结论,最优解为:
信息保留率:
这个比例常用于选择
3.3 推导三:SVD 视角(最工程、最稳定)
这一视角直接从数据矩阵出发,利用奇异值分解建立与 PCA 的联系。
(1) SVD 回顾
任意矩阵
其中:
:左奇异向量矩阵, :对角矩阵(奇异值 ) :右奇异向量矩阵,
经济型 SVD(当
其中
(2) SVD 与协方差矩阵的关系
协方差矩阵:
(利用了
设
其中
核心结论:
的特征向量 = 的左奇异向量 的特征值 = 奇异值的平方除以
因此,PCA 主成分方向 = SVD 的左奇异向量!
(3) 最佳低秩近似(Eckart-Young 定理)
定理:在 Frobenius 范数下,
其中
近似误差:
与 PCA 的联系:
PCA 的重建:
可以验证,这与 SVD 低秩近似等价:
(4) 为什么 SVD 比特征分解更稳定?
| 方面 | 特征分解 | SVD |
|---|---|---|
| 计算对象 | 直接对 | |
| 数值稳定性 | 计算 | 更稳定 |
| 条件数 | ||
| 奇异情况 | 可能数值不稳定 | 自然处理秩亏缺 |
Dual PCA(当
计算
然后恢复左奇异向量:
(5) SVD 实现 PCA 的算法流程
1 | 输入: 数据矩阵 X ∈ R^{D×N},目标维度 K |
4. PCA 的几何解释
4.1 椭球与主轴
协方差矩阵
椭球的主轴:
- 方向 =
的特征向量 - 长度 ∝
(特征值的平方根)
PCA 找到的主成分就是这个椭球的主轴方向!
4.2 旋转到主轴坐标系
原始数据的协方差矩阵:
投影后
对角矩阵! 这意味着:
- 各主成分之间不相关
- 第
个主成分的方差 =
4.3 最大方差方向的几何意义
想象数据点形成一个云团:
- 第一主成分:云团最”长”的方向
- 第二主成分:在与第一主成分垂直的平面内,最长的方向
- 以此类推…
1 | PC1 |
5. PCA 的实际应用
5.1 Python 实现
从零实现
1 | import numpy as np |
使用 scikit-learn
1 | from sklearn.decomposition import PCA |
5.2 应用场景
| 应用 | 说明 |
|---|---|
| 数据可视化 | 将高维数据降至 2D/3D 进行可视化 |
| 噪声过滤 | 去除小特征值对应的成分(噪声) |
| 特征提取 | 作为机器学习的预处理步骤 |
| 数据压缩 | 图像压缩、信号压缩 |
| 异常检测 | 重建误差大的点可能是异常 |
6. PCA 的局限性与延伸
6.1 PCA 的局限性
| 局限性 | 说明 |
|---|---|
| 线性假设 | 只能捕捉线性关系 |
| 方差假设 | 假设大方差 = 重要信息 |
| 正交约束 | 主成分必须正交,可能不自然 |
| 对异常值敏感 | 基于协方差矩阵,受极端值影响大 |
| 对尺度敏感 | 不同尺度的特征会影响结果 |
6.2 延伸算法
(1) Probabilistic PCA (PPCA)
概率模型视角:
优势:
- 可以处理缺失值
- 提供概率解释
- 可用 EM 算法求解
(2) Sparse PCA
加入稀疏性约束:
优势:主成分更具可解释性(只涉及少数原始特征)1
2
3
4from sklearn.decomposition import SparsePCA
spca = SparsePCA(n_components=2, alpha=0.1)
X_spca = spca.fit_transform(X)
(3) Incremental PCA
处理大规模数据,分批计算:1
2
3
4
5
6from sklearn.decomposition import IncrementalPCA
ipca = IncrementalPCA(n_components=2, batch_size=100)
for batch in data_generator:
ipca.partial_fit(batch)
X_ipca = ipca.transform(X)
(4) Robust PCA
分解为低秩 + 稀疏:
用于去除稀疏噪声/异常值。
7. 总结
7.1 三种推导的统一
| 视角 | 目标函数 | 最优解 | ||
|---|---|---|---|---|
| 最大方差 | ||||
| 最小重建误差 | $\min \ | X - \hat{X}\ | ^2$ | |
| SVD 低秩近似 | $\min \ | X - \hat{X}\ | _F$ |
三者等价!
7.2 核心公式速查
| 概念 | 公式 | ||
|---|---|---|---|
| 投影 | |||
| 重建 | |||
| 投影方差 | |||
| 重建误差 | $$\ | x - \hat{x}\ | ^2 = \sum_{i>K} \lambda_i$$ |
| 方差保留比 | |||
| SVD 与特征值关系 |

