UMAP降维算法原理详解和应用示例.pdfVIP

  • 0
  • 0
  • 约1.34万字
  • 约 6页
  • 2026-02-04 发布于浙江
  • 举报

UMAP降维算法原理详解和应⽤⽰例

降维不仅仅是为了数据可视化。它还可以识别⾼维空中的关键结构并将它们保存在低维嵌⼊中来克服“维度诅咒”

本⽂将介绍⼀种流⾏的降维技术UniformManifoldApproximationandProjection(UMAP)的内部⼯作原理,并提供⼀个Python⽰

例。

(UMAP)如何⼯作的?

分析UMAP名称

让我们从剖析UMAP名称开始,这将使我们对算法应该做什么有⼀个⼤致的了解。

以下描述不是官⽅定义,⽽是我总结出来的可帮助我们理解UMAP的要点。

Projection——通过投影点在平⾯、曲⾯或线上再现空对象的过程或技术。也可以将其视为对象从⾼维空到低维空的映射。

Approximation——算法假设我们只有⼀组有限的数据样本(点),⽽不是构成流形的整个集合。因此,我们需要根据可⽤数据来近似流

形。

Manifold——流形是⼀个拓扑空,在每个点附近局部类似于欧⼏⾥得空。⼀维流形包括线和圆,但不包括类似数字8的形状。⼆维流形

(⼜名曲⾯)包括平⾯、球体、环⾯等。

Uniform——均匀性假设告诉我们我们的数据样本均匀(均匀)分布在流形上。但是,在现实世界中,这种情况很少发⽣。因此这个假设引

出了在流形上距离是变化的概念。即,空本⾝是扭曲的:空根据数据显得更稀疏或更密集的位置进⾏拉伸或收缩。

综上所述,我们可以将UMAP描述为:

⼀种降维技术,假设可⽤数据样本均匀(Uniform)分布在拓扑空(Manifold)中,可以从这些有限数据样本中近似

(Approximation)并映射(Projection)到低维空。

上⾯对算法的描述可能会对我们理解它的原理有⼀点帮助,但是对于UMAP是如何实现的仍然没有说清楚。为了回答“如何”的问题,让我

们分析UMAP执⾏的各个步骤。

UMAP执⾏的步骤

我们可以将UMAP分为两个主要步骤:

1.学习⾼维空中的流形结构

2.找到该流形的低维表⽰。

下⾯我们将把它分解成更⼩的部分,以加深我们对算法的理解。下⾯的地图显⽰了我们在分析每个部分⼯作流程。

1—学习流形结构

在我们将数据映射到低维之前,肯定⾸先需要弄清楚它在⾼维空中的样⼦。

1.1.寻找最近的邻居

UMAP⾸先使⽤Nearest-Neighbor-Descent算法找到最近的邻居。我们可以通过调整UMAP的n_neighbors超参数来指定我们想要

使⽤多少个近邻点。

试验n_neighbors的数量很重要,因为它控制UMAP如何平衡数据中的局部和全局结构。它通过在尝试学习流形结构时限制局部邻域的

⼤⼩来实现。

本质上,⼀个⼩的n_neighbors值意味着我们需要⼀个⾮常局部的解释,准确地捕捉结构的细节。⽽较⼤的n_neighbors值意味着我们的

估计将基于更⼤的区域,因此在整个流形中更⼴泛地准确。

1.2.构建⼀个图

接下来,UMAP需要通过连接之前确定的最近邻来构建图。为了理解这个过程,我们需要将他分成⼏个⼦步骤来解释邻域图是如何形成

的。

1.2.1变化距离

正如对UMAP名称的分析所述,我们假设点在流形上均匀分布,这表明它们之的空根据数据看起来更稀疏或更密集的位置⽽拉伸或收

缩的。

它本质上意味着距离度量不是在整个空中通⽤的,⽽是在不同区域之变化的。我们可以通过在每个数据点周围绘制圆圈/球体来对其进

⾏可视化,由于距离度量的不同,它们的⼤⼩似乎不同(见下图)。

1.2.2local_connectivity

接下来,我们要确保试图学习的流形结构不会导致许多不连通点。所以需要使⽤另⼀个超参数local_connectivity(默认值=1)来解决这个潜

在的问题

当我们设置local_connectivity=1时,我们告诉⾼维空中的每⼀个点都与另⼀个点相关联。

1.2.3模糊区域

你⼀定已经注意到上⾯的图也包含了模糊的圆圈延伸到最近的邻居之外。这告诉我们,当我们离感兴趣的点越远,与其他点联系的确定性就

越⼩。

这两个超参数(local_connectivity和n_neighbors)最简单的理解就是可以将他们视为下限和上限:

Local_connectivity(默认值为1):100%确定每个点⾄少

文档评论(0)

1亿VIP精品文档

相关文档