从代码学习机器学习 - UMAP降维算法 scikit-learn版
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、UMAP降维算法介绍
- 二、代码实践
- 三、代码中可调整的降维参数
- 总结
前言
在机器学习和数据科学领域,我们经常会遇到高维数据。高维数据虽然包含了丰富的信息,但也带来了“维度灾难”的问题,使得数据分析、可视化和模型训练变得更加困难和低效。降维技术应运而生,它旨在将高维数据转换到低维空间,同时尽可能保留原始数据中的重要信息和结构。主成分分析(PCA)等线性降维方法简单高效,但难以处理非线性结构的数据。流形学习作为非线性降维的重要分支,其中的t-SNE算法在可视化高维数据方面表现出色,但其计算成本较高且难以保留全局结构。近年来,统一流形近似与投影(UMAP)作为一种新的非线性降维算法逐渐流行起来。
一、UMAP降维算法介绍
统一流形近似与投影(UMAP,Uniform Manifold Approximation and Projection)是一种新兴的非线性降维算法,与 t-SNE 类似,旨在将高维数据映射到低维空间,常用于数据可视化和探索性数据分析。UMAP 凭借其在速度、保留数据全局结构方面的优势,近年来受到广泛关注。
核心思想:
UMAP 的理论基础根植于黎曼几何和代数拓扑。其核心思想是假设高维数据 Lying on or near a low-dimensional manifold(躺在或接近一个低维流形上)。算法试图在低维空间中构建一个与高维空间中数据拓扑结构相似的表示。简单来说,UMAP 致力于在降维后的空间中,维持数据点之间的“邻近”关系,使得原本在高维空间中靠近的点在低维空间中依然靠近,同时尽可能地反映数据整体的结构。
算法步骤:
UMAP 算法主要包含以下两个主要步骤:
-
构建高维空间的模糊拓扑结构:
- 对于高维空间中的每个数据点,UMAP 首先寻找其最近邻点。
- 基于这些最近邻信息,构建一个加权图。图中的边代表数据点之间的连接,边的权重反映了连接的强度或概率。这种权重的计算方式基于黎曼几何中的概念,旨在捕捉数据在局部区域的流形结构。
- 通过对这个加权图进行处理,UMAP 构建一个“模糊的”拓扑表示,它不是一个 rigid 的结构,而是允许一定的灵活性,以更好地适应数据的内在流形结构。
-
在低维空间优化嵌入:
- 在低维目标空间(例如二维或三维用于可视化)中随机初始化数据点的位置。
- UMAP 使用了一种基于交叉熵的损失函数,来衡量高维空间中构建的模糊拓扑结构与低维空间中对应点的距离关系的相似性。
- 通过随机梯度下降等优化方法,调整低维空间中数据点的位置,最小化损失函数。这个优化过程旨在使得低维嵌入能够最好地近似高维空间的拓扑结构。
与 t-SNE 的比较:
UMAP 与 t-SNE 在目标上相似,都是为了在高维数据中发现隐藏的结构并进行可视化,但在方法和性能上存在一些关键差异:
- 速度: UMAP 通常比 t-SNE 快得多,尤其是在处理大规模数据集时。这是因为 UMAP 在构建高维图时采用了更高效的算法,并且其优化过程也相对更快。
- 全局结构保留: 相较于 t-SNE 更侧重于保留数据的局部结构,UMAP 在保留数据的全局结构方面表现更好。这意味着 UMAP 生成的低维嵌入更能反映数据整体的聚类和分布情况。
- 理论基础: UMAP 拥有更坚实的数学理论基础,借鉴了黎曼几何和代数拓扑的概念,这使得其行为更容易理解和预测。
- 参数敏感性: 尽管 UMAP 也有参数需要调整,但通常来说,UMAP 对参数的敏感性低于 t-SNE,更容易获得稳定的结果。
- 确定性: 在相同的参数和输入数据下