利用UMAP进行高效聚类分析的实践指南

利用UMAP进行高效聚类分析的实践指南

umap Uniform Manifold Approximation and Projection umap 项目地址: https://gitcode.com/gh_mirrors/um/umap

前言

UMAP(Uniform Manifold Approximation and Projection)作为一种强大的降维技术,不仅可用于数据可视化,还能显著提升基于密度的聚类算法性能。本文将深入探讨如何利用UMAP作为预处理步骤来增强聚类效果,并通过MNIST手写数字数据集的实际案例展示其应用。

UMAP与聚类的关系

UMAP作为非线性降维方法,能够保留数据的高维结构,这使得它成为聚类前数据预处理的理想选择。然而需要注意:

  1. UMAP不会完全保留原始数据的密度分布
  2. 可能会在聚类中产生虚假的分割
  3. 需要谨慎评估聚类结果的有效性

实验准备

我们使用MNIST数据集进行演示,该数据集包含28×28像素的手写数字灰度图像(0-9),每个样本可表示为784维向量。

from sklearn.datasets import fetch_openml
import numpy as np
import matplotlib.pyplot as plt
import umap
import hdbscan
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score, adjusted_mutual_info_score

mnist = fetch_openml('mnist_784', version=1)
mnist.target = mnist.target.astype(int)

传统聚类方法的局限性

K-Means聚类尝试

首先我们尝试在原始784维空间中使用K-Means聚类:

kmeans_labels = KMeans(n_clusters=10).fit_predict(mnist.data)

评估结果显示调整兰德指数(ARI)和调整互信息(AMI)得分仅为0.37和0.50,表明K-Means在高维空间中表现不佳。

HDBSCAN密度聚类尝试

接着我们尝试更先进的HDBSCAN密度聚类算法:

lowd_mnist = PCA(n_components=50).fit_transform(mnist.data)
hdbscan_labels = hdbscan.HDBSCAN(min_samples=10, min_cluster_size=500).fit_predict(lowd_mnist)

虽然HDBSCAN在已聚类数据上表现极佳(ARI=0.998),但它仅对17%的数据进行了聚类,大部分数据被标记为噪声。

UMAP增强的聚类方法

UMAP参数调优

为聚类优化的UMAP参数设置与可视化不同:

  1. 增大n_neighbors(如30)以关注更全局的结构
  2. 减小min_dist(如0.0)使点更紧密聚集
  3. 选择合适的降维维度(本例使用2维)
clusterable_embedding = umap.UMAP(
    n_neighbors=30,
    min_dist=0.0,
    n_components=2,
    random_state=42,
).fit_transform(mnist.data)

增强后的HDBSCAN聚类

在UMAP降维后的空间中进行HDBSCAN聚类:

labels = hdbscan.HDBSCAN(min_samples=10, min_cluster_size=500).fit_predict(clusterable_embedding)

结果对比

| 方法 | 聚类比例 | ARI(全部) | AMI(全部) | ARI(已聚类) | AMI(已聚类) | |------|---------|----------|----------|------------|------------| | K-Means | 100% | 0.37 | 0.50 | - | - | | HDBSCAN(原始) | 17% | 0.05 | 0.20 | 0.998 | 0.994 | | HDBSCAN+UMAP | 99% | 0.92 | 0.90 | 0.932 | 0.919 |

UMAP增强的方法成功聚类了99%的数据,同时保持了高质量的聚类结果(ARI=0.92),性能接近当前最先进的卷积自编码器技术。

最佳实践建议

  1. 对于聚类任务,UMAP参数应与可视化任务不同
  2. 不要过度降维,选择合适的维度(2-10维)
  3. 结合多种聚类评估指标验证结果
  4. 注意解释聚类结果时考虑UMAP可能引入的伪结构
  5. 对于不同数据集需要调整UMAP和聚类参数

结论

UMAP作为聚类前的预处理步骤,能够有效解决高维数据密度估计困难的问题,显著提升密度聚类算法如HDBSCAN的性能。通过合理参数设置,可以在保持高质量聚类的同时大幅提高可聚类数据的比例。这种方法简单高效,为高维数据聚类提供了实用解决方案。

umap Uniform Manifold Approximation and Projection umap 项目地址: https://gitcode.com/gh_mirrors/um/umap

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

史霁蔷Primrose

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值