机器学习最强通用降维:UMAP 超通俗完整版

张开发
2026/6/20 16:29:14 15 分钟阅读
机器学习最强通用降维:UMAP 超通俗完整版
机器学习最强通用降维UMAP 超通俗完整版UMAP 是目前工业界、科研圈最火的降维 可视化算法它完美结合了t-SNE 的聚类效果 PCA 的速度 全局结构保留既能画漂亮图又能直接当模型输入特征。这篇文章用大白话 原理拆解 完整代码 参数调优 面试总结本科生、研究生都能轻松看懂。一、先看懂UMAP 到底是什么1. 一句话理解 UMAPUMAP 速度快、效果好、既能可视化又能做降维的全能流形学习算法它能把高维数据图像、文本、特征向量压成 2D/3D同时相似点聚在一起不同类别分得开保留全局结构跑得比 t-SNE 快很多2. 超通俗例子你有 7 万张手写数字784 维PCA糊成一团t-SNE分得清楚但跑得巨慢UMAP分得清楚 速度快 全局结构不乱3. UMAP 最牛的地方✅ 比 t-SNE快 5~20 倍✅同时保留局部聚类 全局结构✅ 支持大数据、高维数据✅ 既能画图又能直接当模型特征✅ 支持各种距离余弦、欧氏、曼哈顿…二、UMAP 核心思想极简版UMAP 基于拓扑学 流形假设只做三件事建邻域图每个点只连附近的邻居保留局部结构。测相似度用高斯核计算点之间的连接强度。优化低维布局在 2D/3D 空间里重新摆放点让高维结构 低维结构。一句话总结UMAP 先看懂数据的拓扑结构再把它平整地展开到低维。三、UMAP 最重要的两个参数必懂1. n_neighbors邻居数控制看多大范围小更关注局部聚类更碎大更关注全局结构更整体常用5 ~ 50图像推荐 10~302. min_dist最小距离控制点挤得多密小点挤在一起聚类明显大点更分散结构更舒展常用0.05 ~ 0.3四、实战代码MNIST 手写数字 UMAP 降维可直接运行importnumpyasnpimportmatplotlib.pyplotaspltimportumapfromsklearn.datasetsimportfetch_openmlfromsklearn.preprocessingimportStandardScalerfromsklearn.decompositionimportPCAimporttime# 1. 加载数据 print(加载 MNIST 数据...)mnistfetch_openml(mnist_784,version1,parserauto)Xmnist.data ymnist.target.astype(int)# 抽样加速可注释掉用全量# idx np.random.choice(len(X), 20000, replaceFalse)# X X.iloc[idx]# y y.iloc[idx]# 2. 标准化 PCA 预降维 scalerStandardScaler()X_scaledscaler.fit_transform(X)# 高维数据先 PCA 降到 50 维速度大幅提升pcaPCA(n_components50,random_state42)X_pcapca.fit_transform(X_scaled)print(PCA 完成形状,X_pca.shape)# 3. UMAP 降维 starttime.time()umap_modelumap.UMAP(n_components2,n_neighbors15,min_dist0.1,metriccosine,random_state42,n_jobs-1)X_umapumap_model.fit_transform(X_pca)endtime.time()print(fUMAP 完成耗时{end-start:.2f}s)# 4. 可视化 plt.figure(figsize(14,10))scatterplt.scatter(X_umap[:,0],X_umap[:,1],cy,cmapSpectral,s1,alpha0.7)plt.colorbar(scatter,ticksrange(10),labelDigit)plt.title(UMAP 手写数字可视化,fontsize16)plt.xlabel(UMAP 1)plt.ylabel(UMAP 2)plt.tight_layout()plt.show()效果说明0~9 每个数字形成清晰团簇全局结构完整相似数字如 4/9靠近但不混淆几万样本也能快速跑完五、UMAP 优缺点面试高频✅ 优点速度极快远快于 t-SNE局部 全局结构都保留吊打 t-SNE支持大数据支持各种距离与数据类型可直接作为模型输入不像 t-SNE 只能画图可视化效果顶尖❌ 缺点对参数敏感n_neighbors、min_dist可解释性一般高维超大数据仍占内存仍是线性化流形不适合极端复杂结构六、UMAP vs PCA vs t-SNE最清晰对比算法全局结构局部聚类速度用途PCA好差极快降维、去噪t-SNE差极好慢仅可视化UMAP极好极好快可视化 降维 特征提取七、什么时候用 UMAP90% 场景首选✅ 推荐使用高维数据可视化图像、文本、 embedding需要同时看局部聚类 全局结构数据量大1 万样本降维后要输入模型训练论文绘图、报告展示❌ 不推荐使用只需要极快的线性降维 → 用 PCA完全不在乎全局结构 → 用 t-SNE超小数据500→ 用 t-SNE 也可以八、UMAP 实战调参技巧直接照抄先 PCA 预降维到 50~100 维速度提升巨大n_neighbors数据量大设大一点15~50min_dist想聚类清晰设 0.05~0.1metric图像用欧氏文本/特征用余弦一定要标准化数据九、总结一句话记住 UMAPUMAP 是目前最全能的降维可视化算法速度快、效果好既保留局部聚类又保留全局结构是机器学习、深度学习、数据分析的首选降维工具。

更多文章