降维算法

00:00
9 min Advanced 2026/6/14

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

维度UMAPt-SNE
快10~100倍
可扩展可降至>2维主要用于2D/3D
全局结构较好保持较差
增量学习支持transform支持
理论基础拓扑概率
簇间距离意义不可比较
参数n_neighbors, min_distperplexity

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专为混合类型设计

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式