什么是UMAP:高维数据的非线性降维算法

UMAP(Uniform Manifold Approximation and Projection)

UMAP(均匀流形逼近与投影,Uniform Manifold Approximation and Projection) 是一种 降维算法,用于 数据可视化、特征提取,特别适用于 高维数据的非线性降维,与 t-SNE 类似,但计算速度更快,保留全局结构更好。


1. 为什么使用 UMAP?

在数据分析、机器学习和深度学习任务中,数据通常是 高维的(如 100 维、1000 维),直接分析或可视化较困难。UMAP 可以将高维数据降维至 2D/3D,便于可视化和理解数据结构

UMAP 主要用于:

  • 数据可视化(将高维数据映射到 2D 或 3D)
  • 降维(减少特征维度,加速机器学习)
  • 聚类前处理(降维后进行 K-Means 等聚类)
  • 异常检测(降维后分析数据分布)

2. UMAP vs. t-SNE

UMAP 与 t-SNE 都是常用的降维方法,但 UMAP 更快、可扩展性更强,适用于更大规模数据。

对比项UMAPt-SNE
降维方式拟合流形结构近邻概率映射
速度快(适用于大数据集)慢(计算复杂度高)
保留全局结构(较少丢失全局信息)较差(容易丢失全局结构)
超参数少否(需要调整 perplexity 等参数)
适用于聚类(保持局部和全局结构)较差(点簇可能不稳定)

3. UMAP 代码示例

3.1 安装 umap-learn

pip install umap-learn

3.2 UMAP 处理 MNIST(手写数字)

import umap
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits

# 加载 MNIST 手写数字数据(64 维)
digits = load_digits()
X, y = digits.data, digits.target  # X 是特征,y 是标签

# UMAP 降维到 2D
umap_2d = umap.UMAP(n_components=2, random_state=42)
X_umap = umap_2d.fit_transform(X)

# 可视化 2D 降维结果
plt.scatter(X_umap[:, 0], X_umap[:, 1], c=y, cmap="Spectral", alpha=0.5)
plt.colorbar(label="Digit Label")
plt.title("UMAP on MNIST Digits")
plt.show()

结果

UMAP 可以 将 64 维的手写数字数据映射到 2D 空间,颜色代表不同的数字类别,降维后数据仍然保持了较好的 类别分离性


4. UMAP 主要参数

参数作用
n_neighbors近邻数(控制局部 vs. 全局结构,默认 15
n_components降维目标维度(如 2D3D
metric距离度量(默认 "euclidean",支持 "cosine""manhattan"
min_dist最小距离(控制嵌入数据点之间的密集程度)
random_state随机种子(保证结果可复现)

5. 调整超参数影响

5.1 n_neighbors 控制局部 vs. 全局结构

  • 小值(如 5:保留 局部结构(适合聚类)
  • 大值(如 50:保留 全局结构(适合可视化)
umap_5 = umap.UMAP(n_neighbors=5).fit_transform(X)
umap_50 = umap.UMAP(n_neighbors=50).fit_transform(X)

5.2 min_dist 控制嵌入点的密集程度

  • 小值(如 0.1:数据点更紧密
  • 大值(如 0.8:数据点更分散
umap_dense = umap.UMAP(min_dist=0.1).fit_transform(X)
umap_sparse = umap.UMAP(min_dist=0.8).fit_transform(X)

6. UMAP 在深度学习中的应用

6.1 处理高维特征(BERT 句向量降维)

import umap
import numpy as np

# 假设我们有 768 维的 BERT 句向量
X_bert = np.random.rand(1000, 768)  # 1000 句子,每个 768 维

# UMAP 降维到 2D
X_umap = umap.UMAP(n_components=2, metric="cosine").fit_transform(X_bert)

UMAP 可以 将 BERT 句向量降维,用于 可视化和聚类任务


7. UMAP 在机器学习中的应用

  • 数据可视化:高维数据映射到 2D/3D 进行分析
  • 降维加速计算:降低数据维度,加快训练速度
  • 特征提取:提取有用特征,提高模型性能
  • 聚类前处理:降维后进行 K-Means 聚类

8. 结论

  • UMAP 是一种降维算法,适用于高维数据可视化和特征提取
  • 比 t-SNE 更快,适用于大规模数据集,并且能更好地保留全局和局部结构。
  • 广泛用于 NLP(BERT)、计算机视觉(MNIST)和聚类任务
  • 可调整超参数 n_neighborsmin_dist 以优化降维效果

如果你需要在高维数据上进行降维,可尝试 UMAP 代替 t-SNE 以提高速度和效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值