UMAP:强大的可视化&异常检测工具

简介: UMAP:强大的可视化&异常检测工具

数据降维最为重要的是降低数据的维度的同时尽可能保有大量的原始信息,而其中最为大家熟知的是PCA和tSNE,但是这二者都存在一些问题,

PCA的速度相对很快,但代价是数据缩减后会丢很多底层的结构信息; tSNE可以保留数据的底层结构,但速度非常慢;

UMAP是2018年被提出的降维和可视化算法,它使用Uniform流形近似和投影(UMAP),既可以获得PCA的速度优势,同时还可以保留尽可能多的数据信息,而且其可视化效果也非常美观,如下:

UMAP 在其当前的化身中取得了一些重大胜利。

Umap介绍

统一流形逼近和投影 (UMAP) 是一种降维技术,可用于类似于 t-SNE 的可视化,但也可用于一般的非线性降维。该算法基于对数据的三个假设:

  • 数据均匀分布在黎曼流形上;
  • 黎曼度量是局部常数(或可以近似);
  • 流形是局部连接的。

根据这些假设,可以用模糊拓扑结构对流形进行建模。通过搜索具有最接近的等效模糊拓扑结构的数据的低维投影来找到嵌入。

首先,UMAP 速度很快。它可以毫不费力地处理大型数据集和高维数据,超出大多数 t-SNE 包可以管理的范围。这包括非常高维的稀疏数据集。 UMAP 已成功地直接用于超过一百万维的数据。

其次,UMAP 在嵌入维度上的扩展性很好——它不仅仅用于可视化!您可以使用 UMAP 作为通用降维技术,作为其他机器学习任务的初步步骤。稍加注意,它就可以与 hdbscan 集群库很好地配合(有关更多详细信息,请参阅使用 UMAP 进行集群)。

第三,与大多数 t-SNE 实现相比,UMAP 在保留数据全局结构的某些方面通常表现更好。这意味着它通常可以为您的数据提供更好的“大图”视图,并保留本地邻居关系。

第四,UMAP支持多种距离函数,包括余弦距离和相关距离等非度量距离函数。您终于可以使用余弦距离正确嵌入词向量了!

第五,UMAP 支持通过标准 sklearn 变换方法向现有嵌入添加新点。这意味着 UMAP 可以用作 sklearn 管道中的预处理转换器。

第六,UMAP 支持有监督和半监督的降维。这意味着,如果您希望将标签信息用作降维的额外信息(即使它只是部分标签),您可以这样做——就像在 fit 方法中提供它作为 y 参数一样简单。

第七,UMAP 支持多种额外的实验特性,包括: 一个“逆变换”,可以近似一个高维样本,该样本将映射到嵌入空间中的给定位置;嵌入非欧几里得空间的能力,包括双曲嵌入和具有不确定性的嵌入;还存在对嵌入数据帧的非常初步的支持。

最后,UMAP 在流形学习方面具有扎实的理论基础(参见我们关于 ArXiv 的论文)。这既证明了该方法的合理性,又允许将很快添加到库中的进一步扩展。

代码如下:

import umap
import umap.plot
from sklearn.impute import SimpleImputer
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import QuantileTransformer
from sklearn.datasets import load_digits
X, y = load_digits(return_X_y=True)
pipe = make_pipeline(SimpleImputer(), QuantileTransformer())
X_processed = pipe.fit_transform(X)
manifold = umap.UMAP().fit(X_processed, y)
umap.plot.points(manifold, labels=y, theme="fire")


目录
相关文章
|
SQL Java 数据库连接
|
存储 数据库 时序数据库
InfluxDB基本操作
InfluxDB基本操作
883 0
|
2月前
|
机器学习/深度学习 人工智能 JSON
构建AI智能体:二十八、大语言模型BERT:原理、应用结合日常场景实践全面解析
BERT是谷歌2018年推出的革命性自然语言处理模型,采用Transformer编码器架构和预训练-微调范式。其核心创新在于双向上下文理解和掩码语言建模,能有效处理一词多义和复杂语义关系。BERT通过多层自注意力机制构建深度表示,输入融合词嵌入、位置嵌入和段落嵌入,输出包含丰富上下文信息的向量。主要应用包括文本分类、命名实体识别、问答系统等,在搜索优化、智能客服、内容推荐等领域发挥重要作用。
1265 10
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
496 66
|
XML 存储 数据库
如何使用Android Studio创建一个基本的音乐播放器应用
如何使用Android Studio创建一个基本的音乐播放器应用
752 0
|
安全
如何打开关闭Edge鼠标手势
【8月更文挑战第28天】本文介绍了在 Microsoft Edge 浏览器中开启和关闭鼠标手势的方法。首先,通过浏览器设置菜单进入设置页面;然后,查找“鼠标手势”设置或在相关类别中搜索。由于 Edge 可能未内置此功能,可考虑安装支持鼠标手势的扩展程序,如 CrxMouse 鼠标手势,以实现该功能。安装时需注意安全性和可靠性。
6275 5
|
机器学习/深度学习 人工智能 调度
【AI系统】推理引擎架构
本文详细介绍了推理引擎的基本概念、特点、技术挑战及架构设计。推理引擎作为 AI 系统中的关键组件,负责将训练好的模型部署到实际应用中,实现智能决策和自动化处理。文章首先概述了推理引擎的四大特点:轻量、通用、易用和高效,接着探讨了其面临的三大技术挑战:需求复杂性与程序大小的权衡、算力需求与资源碎片化的矛盾、执行效率与模型精度的双重要求。随后,文章深入分析了推理引擎的整体架构,包括优化阶段的模型转换工具、模型压缩、端侧学习等关键技术,以及运行阶段的调度层、执行层等核心组件。最后,通过具体的开发流程示例,展示了如何使用推理引擎进行模型的加载、配置、数据预处理、推理执行及结果后处理。
1259 0
|
安全 程序员 API
最新 | Python 官方中文文档正式发布!
千呼万唤始出来!Python 官方文档终于发布中文版了!受英语困扰的小伙伴终于可以更轻松地阅读官方文档了。
6376 1
最新 | Python 官方中文文档正式发布!
|
机器学习/深度学习 数据可视化 PyTorch
自编码器AE全方位探析:构建、训练、推理与多平台部署
自编码器AE全方位探析:构建、训练、推理与多平台部署
658 0