降维是机器学习从业者可视化和理解大型高维数据集的常用方法。最广泛使用的可视化技术之一是 t-SNE,但它的性能受到数据集规模的影响,并且正确使用它可能需要一定学习成本。
UMAP 是 McInnes 等人开发的新算法。与t-SNE
相比,它具有许多优势,最显着的是提高了计算速度并更好地保留了数据的全局结构。在本文中,我们将了解UMAP
背后的理论,以便更好地了解该算法的工作原理、如何正确有效地使用它,以及与t-SNE
进行比较,它的性能如何。
那么,UMAP
带来了什么?最重要的是,UMAP
速度很快,在数据集大小和维度方面都可以很好地扩展。例如,UMAP
可以在不到 3 分钟的时间内降维 784 维、70,000 点的 MNIST 数据集,而 scikit-learn
的t-SNE
需要 45 分钟。此外,UMAP
倾向于更好地保留数据的全局结构。这可以归因于UMAP
强大的理论基础,使得算法能够更好地在强调局部结构与全局结构之间取得平衡。
在深入探讨UMAP
背后的理论之前,让我们看一下它在现实世界的高维数据上的表现。下面的图片显示了使用UMAP
和t-SNE
将 784 维 Fashion MNIST 数据集的子集降维到 3 维上的情况。请注意每个不同类别的聚类程度(局部结构),而相似的类别(例如凉鞋、运动鞋和踝靴)倾向于聚集(全局结构)。
虽然这两种算法都表现出强大的局部聚类,并将相似的类别聚集在一起,但UMAP
更清楚地将这些相似类别的组彼此分开。值得注意的是,计算时间,UMAP
需要 4 分钟,而多核t-SNE
需要 27 分钟。
UMAP
的核心与t-SNE
非常相似,两者都使用图形布局(graph layout
)算法在低维空间中排列数据。简单来说,UMAP
首先构建数据的高维图表示,然后优化低维图以使其在结构上尽可能相似。虽然UMAP
用于构建高维图的数学是复杂的,但背后的想法是非常简单的。
为了构建初始的高维图,UMAP
构建了一个叫做fuzzy simplicial complex
的东西。这实际上只是加权图的表示,边权重表示两个点连接的可能性。为了确定连通性,UMAP
从每个点向外扩展一个半径,当这些半径重叠时连接点。这个半径的选择很关键:太小会导致小而孤立的集群,太大会将所有东西全连接在一起。UMAP
根据到每个点的第 n 个最近邻点的距离在本地选择半径来克服这个困难。UMAP
然后通过随着半径的增长降低连接的可能性来使图形fuzzy
。最后,通过规定每个点必须至少连接到其最近的邻居,UMAP
确保局部结构与全局结构保持平衡。
一旦构建了高维图,UMAP
就会优化低维模拟的布局,使其尽可能相似。这个过程与t-SNE
基本相同,但使用了一些技巧来加速该过程。
有效使用UMAP
的关键在于理解初始高维图的构造。尽管该过程背后的想法非常直观,但该算法依赖于一些高级数学来为该图实际表示数据的程度提供强有力的理论保证。有兴趣的读者可以在:深入了解UMAP理论。
通过理解UMAP
背后的理论后,理解算法的参数变得容易得多,尤其是与t-SNE
中的perplexity
参数相比。我们将考虑两个最常用的参数:n_neighbors
和 min_dist
,它们有效地用于控制最终降维结果中局部和全局结构之间的平衡。
n_neighbors
最重要的参数是n_neighbors
,用于构造初始高维图的近似最近邻的数量。它有效地控制UMAP
如何平衡局部结构与全局结构 :较小的值将通过限制在分析高维数据时考虑的相邻点的数量来推动UMAP
更多地关注局部结构,而较大的值将推动UMAP
代表全局结构,同时失去了细节。
min_dist
我们将研究的第二个参数是 min_dist
,即低维空间中点之间的最小距离。此参数控制UMAP
将点聚集在一起的紧密程度,较低的值会导致嵌入更紧密。较大的 min_dist
值将使UMAP
将点更松散地打包在一起,而是专注于保留广泛的拓扑结构。
下面的可视化,探索了UMAP
参数对 3D 数据的 2D 投影的影响。通过更改 n_neighbors
和min_dist
参数,您可以探索它们对生成投影的影响。
虽然UMAP
的大多数应用都涉及高维数据的投影,但 3D 的投影可以作为一个有用的类比来理解UMAP
如何根据其参数优先考虑全局结构和局部结构。随着n_neighbors
的增加,UMAP
在构建高维数据的图表示时连接的相邻点越来越多,从而导致更准确地反映数据的全局结构的投影。在非常低的值下,任何全局结构的信息都几乎完全丢失。随着min_dist
参数的增加,UMAP
倾向于“散开”投影点,导致数据的聚类减少,对全局结构的重视程度降低。
与t-SNE
相比,UMAP
的输出最大的区别在于局部结构和全局结构之间的平衡,UMAP
通常更擅长在最终投影中保留全局结构。这意味着簇间的关系可能比 t-SNE
更有意义。重要的是,因为UMAP
和t-SNE
在投影到低维时都必然会扭曲数据的高维形状,所以任何给定的轴或较低维度的距离仍然不能用 PCA
等技术直接解释。
回到 3D 猛犸象的例子,我们可以很容易地看到两种算法输出之间的一些巨大差异。对于较低的perplexity
参数值,t-SNE
倾向于“展开”投影数据,而很少保留全局结构。相比之下,UMAP
倾向于将高维结构的相邻部分在低维中组合在一起,这反映了全局结构。注意,使用t-SNE
需要极高的perplexity
(~1000)才能开始看到全局结构,并且在如此大的perplexity
值下,计算时间显著延长。同样值得注意的是,每次运行的t-SNE
投影差异很大,不同的高维数据被投影到不同的位置。虽然UMAP
也是一种随机算法,但令人惊讶的是,每次运行和使用不同参数时,生成的投影是十分相似的。
值得注意的是,t-SNE
和UMAP
在早期图中的玩具示例上的表现非常相似,除了下面的示例例外。有趣的是,UMAP
无法分离两个嵌套集群,尤其是在高维时。
该算法未能处理这种包含的情况可能是由于UMAP
在初始图形构造中使用的是局部距离。由于高维点之间的距离往往非常相似(维度灾难),UMAP
似乎将内部集群的外部点与外部集群的外部点连接起来。这实际上将两个集群混合在一起。
虽然UMAP
提供了许多优于t-SNE
的优势,但它绝不是灵丹妙药,阅读和理解其结果需要小心谨慎。
选择好的超参数并不容易,并且取决于数据和目标。这是UMAP
速度的一大优势所在,通过使用各种超参数多次运行UMAP
,您可以更好地了解投影如何受其参数影响。
就像在t-SNE
中一样,簇相对于彼此的大小本质上是没有意义的。这是因为UMAP
使用局部距离概念来构建其高维图形表示。
同样,集群之间的距离可能毫无意义。虽然确实在UMAP
中更好地保留了集群的全局位置,但它们之间的距离没有意义。同样,这是由于在构建图形时使用了局部距离。
尤其是在n_neighbors
值较低时,可以观察到虚假聚类。
由于UMAP
算法是随机的,因此使用相同超参数的不同运行可能会产生不同的结果。此外,由于超参数的选择非常重要,因此使用各种超参数多次运行投影可能非常有用。
UMAP
是数据科学家武器库中非常强大的工具,与t-SNE
相比具有许多优势。虽然UMAP
和 t-SNE
的输出有些相似,但速度的提高、全局结构的更好保存和更易于理解的参数使UMAP
成为可视化高维数据的更有效工具。最后,重要的是要记住,没有任何降维技术是完美的,UMAP
也不例外。然而,通过建立对算法工作原理的直观理解以及如何调整其参数,我们可以更有效地使用这个强大的工具来可视化和理解大型高维数据集。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。