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

2021-11-16 11:26:19 浏览数 (1)

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

本文将介绍一种流行的降维技术Uniform Manifold Approximation and Projection (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.2 local_connectivity

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

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

1.2.3 模糊区域

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

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

Local_connectivity(默认值为1):100%确定每个点至少连接到另一个点(连接数量的下限)。

n_neighbors(默认值为15):一个点直接连接到第 16 个以上的邻居的可能性为 0%,因为它在构建图时落在 UMAP 使用的局部区域之外。

2 到 15 :有一定程度的确定性(>0% 但 <100%)一个点连接到它的第 2 个到第 15 个邻居。

1.2.4 边的合并

最后,我们需要了解上面讨论的连接确定性是通过边权重(w)来表达的。

由于我们采用了不同距离的方法,因此从每个点的角度来看,我们不可避免地会遇到边缘权重不对齐的情况。例如,点 A→B 的边权重与 B→A 的边权重不同。

UMAP 通过取两条边的并集克服了我们刚刚描述的边权重不一致的问题。UMAP 文档解释如下:

如果我们想将权重为 a 和 b 的两条不同的边合并在一起,那么我们应该有一个权重为

0 人点赞