社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

机器学习初学者 • 3 年前 • 430 次点击  
作者:杰少

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

简介

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

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

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

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

UMAP

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

  1. 数据均匀分布在黎曼流形上(Riemannian manifold);
  2. 黎曼度量是局部const(或可以近似为局部const);
  3. 流形是局部连接的。

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

  1. 速度很快,相较于tSNE等快了非常多;
  2. 因为保留了尽可能多的数据信息,其可视化效果更好;
  3. 还可以用于异常检测等;

但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)
适用问题

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

参考文献
  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





    
往期精彩回顾




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/126646
 
430 次点击