PCA 通过线性变换将高维数据投影到低维空间,在保留主要特征的同时降低计算复杂度。
数学原理
最大投影方差
投影后样本方差:,其中 是协方差矩阵。
优化目标:
解:,即 是协方差矩阵的特征向量。
协方差矩阵分解
前 个特征向量构成投影矩阵,降维表示为:
算法步骤
- 中心化:
- 标准化:
- 计算协方差矩阵:
- 特征分解:得到特征值和特征向量
- 选择主成分:累积贡献率 ≥ 95%
- 投影:
应用场景
| 场景 | 降维目标 | 保留主成分数 |
|---|---|---|
| 人脸识别 | 特征提取 | 50-200 |
| 高光谱图像 | 数据压缩 | 保留95%方差 |
| 金融风险分析 | 消除多重共线性 | 5-10 |
局限性
| 局限 | 解决方案 |
|---|---|
| 仅捕捉线性相关性 | 核PCA、流形学习 |
| 高方差特征主导 | 必须标准化 |
| 解释性弱 | 稀疏PCA |
| 大数据计算复杂 | 增量PCA、随机SVD |
现代变体
| 方法 | 特点 |
|---|---|
| 核PCA (KPCA) | 核函数映射处理非线性 |
| 增量PCA | 分批次处理大数据 |
| 稀疏PCA | L1正则化提升解释性 |
| 自编码器 | 神经网络非线性降维 |
代码示例
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
X_norm = StandardScaler().fit_transform(X)
pca = PCA(n_components=0.95)
Z = pca.fit_transform(X_norm)