UMAP降维算法原理详解和应用示例
降维不仅仅是为了数据可视化。它还可以识别高维空间中的关键结构并将它们保存在低维嵌入中来克服“维度诅咒”
本文将介绍一种流行的降维技术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 — 学习流形结构
在我们将数据映射到低维之前,肯定首先需要弄清楚它在高维空间中的样子。
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 的两条不同的边合并在一起,那么我们应该有一个权重为
UMAP降维算法原理详解和应用示例相关推荐
- CRF(条件随机场)与Viterbi(维特比)算法原理详解
摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...
- TOPSIS(逼近理想解)算法原理详解与代码实现
写在前面: 个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣.中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所 ...
- 离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)
论文原文:[Yifan Wu, George Tucker, Ofir Nachum: "Behavior Regularized Offline Reinforcement Learnin ...
- 一致性哈希算法原理详解
一.普通 hash 算法 (取模算法): 在了解一致性哈希算法之前,我们先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那 ...
- DES加解密算法原理详解与实现
[DES密码编写] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) softwa ...
- CORDIC算法原理详解及其Verilog实现
CORDIC算法原理详解及其Verilog实现 本文的verilog代码 链接:https://pan.baidu.com/s/1GGbRjxO5CxoIODQAg1l6Lw 提取码:jo0h *本文 ...
- 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))
机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...
- XGBoost核心算法原理详解
XGBoost算法原理详解 前言 boosting和bagging的区别 bagging boosting 提升树-基于残差的训练 学习路径 构造目标函数 Additive Training(叠加式的 ...
- DPC密度峰值聚类算法原理详解二
DPC密度峰值聚类算法原理详解二 1.计算数据点两两之间的距离 1.使用 Numpy 模块查找两点之间的欧几里得距离: 2.使用 distance.euclidean() 函数查找两点之间的欧式距离: ...
最新文章
- Linux C中strcpy , strncpy , strlcpy 的区别
- 【构造】CF12E Start of the season(神奇的构造)难度⭐⭐⭐
- android Adapter剖析理解
- Qt QLabel 显示gif动图
- 已经yum安装的基础上,升级编译安装git
- VSCode搭建ARM(STM32开发环境)
- 51,AVR,PIC,DSP,DIY等资源
- 奔跑了24年,中国零售业会员制到底该怎么玩?
- C语言与sqlserver数据库
- ubuntu16.04配置量化投资tensorflow/pytorch深度学习环境
- 结束语:投递简历和选公司的策略
- leetcode83,删除有序链表中的重复元素
- 一加代言人小罗伯特唐尼竟用华为P30 Pro发微博,当然是笑着原谅他
- Data - 大数据生态圈
- UTF8下的中文截取
- 【数据库原理实验(openGauss)】交互式SQL语句
- 【ZOJ 3715 —— 13年浙江省赛K】Kindergarten Election 【枚举答案进行判断】 【夺宝奇兵 —— CCPC-Wannafly Winter Camp Day1】
- DB2数据库迁移,数据库导入导出
- 组合导航:中海达iNAV2产品描述及接口描述
- 基于社交网络的推荐算法
热门文章
- 【时间管理】提高行动执行力
- java斗鱼_java爬取斗鱼:与虎牙对比
- keil5MDK 及cubeMX安装教程
- 一文了解消费金融风控核心指标——资产质量篇
- Linux 业务突然宕机、系统卡死、磁盘空间爆满,该怎么查?
- 物理学常数 matlab,[转载]科学计算:Python VS. MATLAB(6)----物理常数
- linux下面安装geant4,Ubuntu 12.04 下Geant4的安装
- 一言不合就给大家发数字货币量化和策略的干货啦~
- SEO基础:什么是结构化数据?
- 微信小程序开发者工具中版本管理的实现一(微信小程序tgit)