PCA、UMAP和t-SNE:三种降维算法的原理与应用
PCA、UMAP和t-SNE:三种降维算法的原理与应用
背景知识与原理
1.PCA(Principal Component Analysis, 主成分分析)
背景:
PCA 是一种经典的线性降维技术,起源于统计学和信号处理领域。它的目标是通过将高维数据投影到低维空间上,找出数据中方差最大的方向,即主成分。这些主成分可以帮助简化数据,去除冗余,同时保留尽可能多的信息。
原理:
PCA 的核心思想是通过寻找数据协方差矩阵的特征值和特征向量来实现降维。
给定一个数据矩阵
image.png
其中 n是样本数,p是维度,PCA 首先通过中心化数据,然后计算数据的协方差矩阵
image.png
- 接着,PCA 通过求解该协方差矩阵的特征值和特征向量,将数据投影到特征向量所定义的新坐标系中,其中特征值大的方向对应的数据方差最大,即主成分。
- PCA 通过保留前几个主成分来达到降维的目的。这种方法具有全局性,即它假定数据在整个高维空间中的分布是线性的。
优点:
- 线性、全局性,适用于线性结构的数据。
- 计算速度快,适合大数据集。
- 可以解释降维后的每个主成分的含义。
缺点:
- 只能捕捉线性关系,对于复杂的非线性结构效果不佳。【所以PCA是“线性的”】
应用场景:
- 数据预处理和去噪。
- 高维数据可视化。
- 特征选择。
2.UMAP(Uniform Manifold Approximation and Projection)
背景:
UMAP 是一种基于拓扑学和流形学习的非线性降维算法,于2018年由 McInnes 和 Healy 提出。它在处理高维复杂数据时表现优异,特别适用于保持数据的全局和局部结构。
原理:
- UMAP 假设数据分布在某个隐含的低维流形上,它通过构建 k 近邻图来捕捉数据的局部结构,假定数据在局部是线性的。
- 它使用 Riemann 度量来构建近邻图,然后通过优化两个低维空间中点的距离,使得原高维空间中的邻近关系尽可能保留。
- UMAP 的目标是最大化近邻点的相似性,同时尽量将不相邻的点分离开。与 t-SNE 相比,UMAP 在大规模数据集上计算速度更快,并且能够更好地保留数据的全局结构。
优点:
- 能够捕捉复杂的非线性结构。
- 比 t-SNE 更快,更适合大规模数据集。
- 能够保留局部和全局结构,适用于高维数据降维。
缺点:
- 调参相对复杂,主要参数包括
n_neighbors
和
min_dist
,这会影响结果的局部与全局平衡。 - 对于某些数据集可能不如 t-SNE 保留局部细节。
应用场景:
- 大规模、高维数据的降维和可视化(如基因表达数据、图像数据等)。
- 特别适用于保留数据的局部和全局结构。
3.t-SNE(t-distributed Stochastic Neighbor Embedding)
背景:
t-SNE 是一种由 Laurens van der Maaten 和 Geoffrey Hinton 于 2008 年提出的非线性降维算法,广泛应用于高维数据的可视化,尤其是在处理非线性数据时效果较好。
原理:
- t-SNE 首先将高维数据中每个数据点的近邻关系转换为概率分布。在高维空间中,给定数据点的近邻点具有较高的相似性概率。
- t-SNE 然后在低维空间中构建一个类似的概率分布,通过优化两者之间的 Kullback-Leibler 散度来最小化低维空间与高维空间的近邻关系差异。
- t-SNE 使用 t 分布来增强低维空间中远离的点,使得不同类的数据点更加分散。这个机制有效地增强了局部结构的保留,但会导致全局结构失真。
优点:
- 在捕捉局部非线性结构方面表现优异。
- 通常用于数据的二维或三维可视化,能够将高维数据的复杂结构很好地展现。
缺点:
- 对于大数据集来说计算开销大。
- 全局结构保留较差,局部细节容易失真。
- 参数(如
perplexity
和学习率)的调整较为复杂。
应用场景:
- 高维复杂数据的可视化,如图像、基因表达、文档表示等。
- 主要用于探索数据中的局部结构模式。
比较
特性 PCA UMAP t-SNE
类型 线性 非线性,基于流形学习 非线性,基于概率嵌入
全局/局部 全局 局部和全局平衡 局部为主
复杂度 低(快,适合大数据集) 中等(更快,更适合大数据集) 高(慢,计算量大)
可解释性 高(主成分可解释) 中等 低(结果不易解释)
保留结构 线性结构 全局和局部 局部(全局失真)
调参难度 低 中(需调整邻居数和距离参数) 高(perplexity 和学习率较难调)
适用场景 特征提取、数据预处理 大规模数据的降维和可视化 小规模数据的精细局部结构探索
具体应用场景
PCA:用于线性数据的降维、去噪和特征提取。适用于初步分析、处理大规模数据以及作为其他复杂分析的前置步骤。
UMAP:适合处理高维、大规模数据,特别是基因表达分析、单细胞 RNA-seq、图像处理和嵌入式学习等领域。UMAP 能很好地平衡局部和全局结构。
t-SNE:通常用于探索数据中的局部复杂结构,广泛用于数据可视化,例如基因表达数据、神经网络特征嵌入等。但它计算速度慢,适合小规模数据集。
如何运用
PCA:
- 使用
sklearn.decomposition.PCA
进行实现:
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
reduced_data = pca.fit_transform(data)
- 常用于特征提取、去噪、降维等。
UMAP:
- 使用
umap-learn
库:
import umap
reducer = umap.UMAP(n_neighbors=15, min_dist=0.1)
reduced_data = reducer.fit_transform(data)
- 可根据数据集的特性调整参数,探索不同的局部与全局结构。
t-SNE:
- 使用
sklearn.manifold.TSNE
或
openTSNE
:
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, perplexity=30)
reduced_data = tsne.fit_transform(data)
- t-SNE 适用于探索局部聚类的可视化。
参考文献
Hotelling, H. (1933). Analysis of a complex of statistical variables into principal components.Journal of Educational Psychology, 24(6), 417–441.
Pearson, K. (1901). On Lines and Planes of Closest Fit to Systems of Points in Space.Philosophical Magazine, 2(11), 559-572.
McInnes, L., Healy, J., & Melville, J. (2018). UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction.arXiv preprint arXiv:1802.03426.
van der Maaten, L., & Hinton, G. (2008). Visualizing Data using t-SNE.