【机器学习】UMAP:强大的可视化&降维工具

作者:杰少

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

简介

e8f44f08374a6fcc6c33e2b4fb37f352.png

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

  1. PCA的速度相对很快,但代价是数据缩减后会丢很多底层的结构信息;

  2. tSNE可以保留数据的底层结构,但速度非常慢;

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

1bd28660f8f83a2768517db52402bc52.png

除此之外,UMAP在很多竞赛中也得到了广泛应用,比如在高维数据集中更快更准确的进行异常值检测。

UMAP

9e4359d42efc4eeb784a6c8c34c3970b.png

Uniform Manifold Approximation and Projection (UMAP) 是一种降维技术,它不仅可以进行降维,而且可用于可视化,类似于t-SNE,也可用于一般非线性降维。UMAP基于对数据的三个假设

  1. 数据均匀分布在黎曼流形上(Riemannian manifold);

  2. 黎曼度量是局部const(或可以近似为局部const);

  3. 流形是局部连接的。

根据这些假设,可以用模糊拓扑结构对流形进行建模。UMAP的优点包括:

  1. 速度很快,相较于tSNE等快了非常多;

  2. 因为保留了尽可能多的数据信息,其可视化效果更好;

  3. 还可以用于异常检测等;

但UMAP的问题在于RAM消耗可能有些大。尤其是在装配和创建连接图等图表时,UMAP会消耗大量内存。

代码

b9e6c98162f764f456ae10920da1df5c.png

01

UMAP可视化

import umap
import umap.plot   
from sklearn.impute import SimpleImputer
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import QuantileTransformer
 
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")

02

和IsolationForest一起做异常检测

from sklearn.ensemble import IsolationForest
pipe = make_pipeline(SimpleImputer(), QuantileTransformer(), umap.UMAP(n_components=5))
X_processed = pipe.fit_transform(X)

# Fit IsolationForest and predict labels
iso = IsolationForest(n_estimators=500, n_jobs=9)
labels = iso.fit_predict(X_processed)

适用问题

e5d1f4a8dcbe38055588eda9929644bf.png

涉及到数据降维,数据可视化以及异常检测等都可以考虑使用。

参考文献

c8aaaf431802cf2392e4433b32906e08.png

  1. 8 Booming Data Science Libraries You Must Watch Out For in 2022

  2. https://umap-learn.readthedocs.io/en/latest/

  3. How to Analyze 100-Dimensional Data with UMAP in Breathtakingly Beautiful Ways

 
 
 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载本站qq群955171419,加入微信群请扫码:

7498f29795550563f96b1ba220127682.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值