降维算法

PCA · LDA · t-SNE · UMAP · Dimensionality Reduction

问题定义

降维是将高维数据映射到低维空间的过程,目的是减少数据维度,去除噪声,提高计算效率,同时保留数据的主要特征。核心问题包括:如何在降维过程中保留数据的重要信息、如何处理非线性数据、如何评估降维效果。

核心算法

线性降维

主成分分析 (PCA)

通过正交变换将数据转换到新的坐标系,使得第一主成分具有最大方差,后续主成分依次递减。适合线性数据,计算效率高。

步骤:
1. 数据中心化:x_i = x_i - μ
2. 计算协方差矩阵:C = (1/n) X^T X
3. 对协方差矩阵进行特征值分解
4. 选择前 k 个最大特征值对应的特征向量
5. 投影数据:X_k = X * W_k

线性判别分析 (LDA)

监督降维方法,最大化类间方差与类内方差的比值,提高分类性能。适合分类任务。

优化目标:max (W^T S_b W) / (W^T S_w W)
其中 S_b 是类间散度矩阵,S_w 是类内散度矩阵

非线性降维

t-SNE (t-distributed Stochastic Neighbor Embedding)

基于概率分布的非线性降维方法,在低维空间中保持数据的局部结构,适合可视化高维数据。

UMAP (Uniform Manifold Approximation and Projection)

基于流形学习的降维方法,保留数据的局部和全局结构,计算速度比 t-SNE 快,适合大规模数据。

Isomap

基于测地线距离的降维方法,通过构建近邻图并计算最短路径来保持数据的几何结构。

Locally Linear Embedding (LLE)

假设数据在局部是线性的,通过保持局部线性关系来降维,适合处理流形数据。

开源实现

scikit-learn Decomposition

提供 PCA、LDA、t-SNE、Isomap、LLE 等降维算法实现。

UMAP

统一流形近似和投影,结合降维和聚类,适合高维数据可视化。

Point-E

OpenAI 开发的 3D 点云生成模型,使用降维技术处理点云数据。

FAISS

Facebook 开发的高效相似性搜索库,支持降维和索引。

应用场景

评估指标

方差解释率

PCA 中前 k 个主成分解释的方差比例,衡量降维后保留的信息量。

重构误差

降维后再重构数据与原始数据的差异,衡量降维过程中的信息损失。

可视化质量

对于 t-SNE 和 UMAP 等可视化方法,通过人工观察评估降维结果的可读性和聚类效果。

下游任务性能

使用降维后的数据进行分类、聚类等任务,评估降维对下游任务的影响。

参数调优

PCA

选择合适的主成分数量 k,可以通过方差解释率或肘部法则确定。

t-SNE

调整 perplexity 参数(通常在 5-50 之间),学习率(通常在 10-1000 之间)。

UMAP

调整 n_neighbors(近邻数)、min_dist(最小距离)、n_components(降维后的维度)。

LDA

选择合适的维度 k(最多为类别数减 1)。

优缺点分析

PCA

优点:计算效率高,可解释性强,适合线性数据。
缺点:对非线性数据效果不佳,可能丢失局部结构。

t-SNE

优点:保持局部结构,可视化效果好。
缺点:计算时间长,对参数敏感,不适合大规模数据。

UMAP

优点:计算速度快,同时保持局部和全局结构,适合大规模数据。
缺点:参数调优复杂,结果可能不稳定。

LDA

优点:监督降维,提高分类性能。
缺点:需要类别标签,对异常值敏感。

参考文献