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