降维是将高维数据映射到低维空间,同时尽可能保留原始数据的重要信息。
| 动机 | 说明 |
|---|
| 维度灾难 | 高维空间数据稀疏,距离区分度下降 |
| 可视化 | 人类只能理解2D/3D空间 |
| 去噪 | 去除冗余和噪声维度 |
| 加速计算 | 减少特征数量降低计算开销 |
| 缓解过拟合 | 减少模型参数 |
| 类型 | 方法 | 特点 |
|---|
| 线性降维 | PCA | 全局结构、速度快 |
| 非线性降维 | t-SNE、UMAP | 局部结构、可视化好 |
| 流形学习 | Isomap、LLE | 保持流形结构 |
| 自编码器 | AE、VAE | 深度学习方法 |
目标:找到正交变换 W,使投影后的方差最大化:
Z=XW
第一步:数据中心化
Xcentered=X−Xˉ
第二步:最大化投影方差
第一个主成分 w1:
maxw1Var(Xw1)=maxw1w1TSw1s.t.∥w1∥=1
其中 S=n1XTX 为协方差矩阵。
第三步:拉格朗日乘子法
Sw1=λ1w1
即 w1 是 S 的特征向量,λ1 是对应特征值。
结论:PCA 的主成分就是协方差矩阵的特征向量,按特征值从大到小排列。
第 k 个主成分的方差解释比:
Ratiok=∑j=1dλjλk
累计方差解释比:
CumRatio(m)=∑j=1dλj∑k=1mλk
通常选择 m 使累计解释比达到 85%∼95%。
| 方法 | 复杂度 | 适用场景 |
|---|
| 特征值分解 | O(d3) | d<n |
| SVD | O(min(n2d,nd2)) | 通用 |
| 随机SVD | O(nd⋅k) | 大规模数据 |
SVD方法:
X=UΣVT
- V 的列即为主成分方向
- Σ 的对角元素与特征值的关系:λk=σk2/n
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_}")
t-SNE(t-Distributed Stochastic Neighbor Embedding)通过保持局部邻域结构实现降维可视化。
高维空间相似度(高斯分布):
pj∣i=∑k=iexp(−∥xi−xk∥2/2σi2)exp(−∥xi−xj∥2/2σi2)
对称化:
pij=2npj∣i+pi∣j
低维空间相似度(Student-t分布,自由度1即柯西分布):
qij=∑k=l(1+∥yk−yl∥2)−1(1+∥yi−yj∥2)−1
目标:最小化KL散度:
C=KL(P∥Q)=∑i=jpijlogqijpij
- 高维空间中,高斯分布的短尾导致中等距离的点在低维中被挤压
- t分布的长尾允许中等距离的点在低维中推得更远
- 缓解拥挤问题
Perp(Pi)=2H(Pi)
其中 H(Pi)=−∑jpj∣ilog2pj∣i 为信息熵。
- 困惑度可理解为”有效近邻数”
- 典型值:5~50
- 困惑度越大,关注越全局的结构
- 不可用于特征工程:t-SNE不保持全局距离和簇间关系
- 不可增量:新数据需要重新运行
- 随机性:不同运行可能产生不同结果
- 超参数敏感:困惑度、学习率、迭代次数影响结果
- 簇大小不可比较:t-SNE会膨胀密集簇、压缩稀疏簇
UMAP(Uniform Manifold Approximation and Projection)基于拓扑数据分析和黎曼几何。
步骤1:构建模糊拓扑表示
高维空间中的局部相似度:
pj∣i=exp(−σid(xi,xj)−ρi)
其中 ρi=minjd(xi,xj) 为最近邻距离。
步骤2:对称化
pij=pj∣i+pi∣j−pj∣i⋅pi∣j
步骤3:优化低维嵌入
最小化交叉熵:
C=∑(i,j)[−pijlogqij−(1−pij)log(1−qij)]
| 维度 | UMAP | t-SNE |
|---|
| 速度 | 快10~100倍 | 慢 |
| 可扩展维度 | 可降至>2维 | 主要用于2D/3D |
| 全局结构 | 较好保持 | 较差 |
| 增量学习 | 支持(transform) | 不支持 |
| 理论基础 | 拓扑学 | 概率论 |
| 簇间距离 | 有意义 | 不可比较 |
| 参数 | n_neighbors, min_dist | perplexity |
| 参数 | 说明 | 典型值 |
|---|
n_neighbors | 局部vs全局结构平衡 | 5~50 |
min_dist | 嵌入点最小距离 | 0.001~0.5 |
n_components | 目标维度 | 2~100 |
metric | 距离度量 | euclidean/cosine |
| 场景 | 推荐方法 | 原因 |
|---|
| 特征工程/去噪 | PCA | 线性、可解释、快速 |
| 数据可视化 | t-SNE/UMAP | 非线性、保持局部结构 |
| 大规模数据 | PCA/UMAP | 计算效率高 |
| 保持全局结构 | UMAP | 全局+局部兼顾 |
| 在线/增量 | PCA/UMAP | 支持增量变换 |
| 类别特征 | FAMD/MCA | 专为混合类型设计 |