Press "Enter" to skip to content

来个猛的降维工具!

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

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

 

简介

 

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

 

 

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

 

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

 

 

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

 

 

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

 

UMAP

 

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

 

 

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

 

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

 

流形是局部连接的。

 

 

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

 

 

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

 

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

 

还可以用于异常检测等;

 

 

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

 

代码

 

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)

 

适用问题

 

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

 

参考文献

 

 

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

 

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

 

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

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。