降维算法
00:00
PCA、t-SNE、UMAP降维原理、数学推导与应用场景对比。
1. 降维问题概述
降维是将高维数据映射到低维空间,同时尽可能保留原始数据的重要信息。
1.1 降维动机
| 动机 | 说明 |
|---|---|
| 维度灾难 | 高维空间数据稀疏,距离区分度下降 |
| 可视化 | 人类只能理解2D/3D空间 |
| 去噪 | 去除冗余和噪声维度 |
| 加速计算 | 减少特征数量降低计算开销 |
| 缓解过拟合 | 减少模型参数 |
1.2 降维方法分类
| 类型 | 方法 | 特点 |
|---|---|---|
| 线性降维 | PCA | 全局结构、速度快 |
| 非线性降维 | t-SNE、UMAP | 局部结构、可视化好 |
| 流形学习 | Isomap、LLE | 保持流形结构 |
| 自编码器 | AE、VAE | 深度学习方法 |
2. PCA主成分分析
2.1 数学推导
目标:找到正交变换 ,使投影后的方差最大化:
第一步:数据中心化
第二步:最大化投影方差
第一个主成分 :
其中 为协方差矩阵。
第三步:拉格朗日乘子法
即 是 的特征向量, 是对应特征值。
结论:PCA 的主成分就是协方差矩阵的特征向量,按特征值从大到小排列。
2.2 方差解释比
第 个主成分的方差解释比:
累计方差解释比:
通常选择 使累计解释比达到 。
2.3 PCA计算方法
| 方法 | 复杂度 | 适用场景 |
|---|---|---|
| 特征值分解 | ||
| SVD | 通用 | |
| 随机SVD | 大规模数据 |
SVD方法:
- 的列即为主成分方向
- 的对角元素与特征值的关系:
2.4 PCA应用
from sklearn.decomposition import PCA
pca = PCA(n_components=0.95) # 保留95%方差
X_reduced = pca.fit_transform(X)
print(f"原始维度: {X.shape[1]}")
print(f"降维后维度: {X_reduced.shape[1]}")
print(f"方差解释比: {pca.explained_variance_ratio_}")
3. t-SNE
3.1 算法原理
t-SNE(t-Distributed Stochastic Neighbor Embedding)通过保持局部邻域结构实现降维可视化。
高维空间相似度(高斯分布):
对称化:
低维空间相似度(Student-t分布,自由度1即柯西分布):
目标:最小化KL散度:
3.2 为什么用t分布?
- 高维空间中,高斯分布的短尾导致中等距离的点在低维中被挤压
- t分布的长尾允许中等距离的点在低维中推得更远
- 缓解拥挤问题
3.3 困惑度(Perplexity)
其中 为信息熵。
- 困惑度可理解为”有效近邻数”
- 典型值:5~50
- 困惑度越大,关注越全局的结构
3.4 t-SNE注意事项
- 不可用于特征工程:t-SNE不保持全局距离和簇间关系
- 不可增量:新数据需要重新运行
- 随机性:不同运行可能产生不同结果
- 超参数敏感:困惑度、学习率、迭代次数影响结果
- 簇大小不可比较:t-SNE会膨胀密集簇、压缩稀疏簇
4. UMAP
4.1 算法原理
UMAP(Uniform Manifold Approximation and Projection)基于拓扑数据分析和黎曼几何。
步骤1:构建模糊拓扑表示
高维空间中的局部相似度:
其中 为最近邻距离。
步骤2:对称化
步骤3:优化低维嵌入
最小化交叉熵:
4.2 UMAP vs t-SNE
| 维度 | UMAP | t-SNE |
|---|---|---|
| 速度 | 快10~100倍 | 慢 |
| 可扩展维度 | 可降至>2维 | 主要用于2D/3D |
| 全局结构 | 较好保持 | 较差 |
| 增量学习 | 支持(transform) | 不支持 |
| 理论基础 | 拓扑学 | 概率论 |
| 簇间距离 | 有意义 | 不可比较 |
| 参数 | n_neighbors, min_dist | perplexity |
4.3 UMAP参数
| 参数 | 说明 | 典型值 |
|---|---|---|
n_neighbors | 局部vs全局结构平衡 | 5~50 |
min_dist | 嵌入点最小距离 | 0.001~0.5 |
n_components | 目标维度 | 2~100 |
metric | 距离度量 | euclidean/cosine |
5. 降维方法选择指南
| 场景 | 推荐方法 | 原因 |
|---|---|---|
| 特征工程/去噪 | PCA | 线性、可解释、快速 |
| 数据可视化 | t-SNE/UMAP | 非线性、保持局部结构 |
| 大规模数据 | PCA/UMAP | 计算效率高 |
| 保持全局结构 | UMAP | 全局+局部兼顾 |
| 在线/增量 | PCA/UMAP | 支持增量变换 |
| 类别特征 | FAMD/MCA | 专为混合类型设计 |