是否可以使 UMAP for HDBScan 聚类的结果更加一致?

Can the results of UMAP for HDBScan clustering be made more consistent?

提问人:TKR 提问时间:11/17/2023 更新时间:11/20/2023 访问量:24

问:

赏金将在 4 天后到期。这个问题的答案有资格获得 +50 声望赏金。TKR希望引起人们对这个问题的更多关注

我有一组 ~40K 短语,在使用 UMAP 进行降维后,我正在使用 HDBScan 进行聚类。步骤如下:

  1. 使用微调的 BERT 模型生成嵌入
  2. 使用 UMAP 减小尺寸
  3. 使用 HDBScan 的群集

我发现有时,HDBScan 会找到 100-200 个集群,这是预期的结果。但其他时候,它只找到 2-4 个。这是使用相同的数据集,并且 UMAP 或 HDBScan 的参数没有变化。

从UMAP文档中,我看到UMAP是一种随机算法,因此不应期望完全的可重复性。但它也说“理想情况下,运行之间的差异应该相对较小”,但这里的情况并非如此。此外,方差似乎是双峰的——我最终要么得到 2-4 个聚类,要么得到 100+,两者之间没有任何东西。

我尝试了 UMAP(n_components:3、4、6、10;min_dist:0.0、0.1、0.3、0.5;n_neighbors:15、30)和 HDBScan(min_cluster_size:50、100、200)的不同参数值,但到目前为止,我仍然偶尔会得到不需要的 2-4 个集群。

为什么 UMAP 会以这种方式运行,我如何确保它产生所需的 100+ 个集群而不是 2-4 个集群?

python 聚类分析 降维 hdbscan runumap

评论

0赞 colidyre 11/25/2023
您是否尝试过使用随机种子状态? 正如您提供的链接中所记录的那样: 为确保可以准确再现结果,UMAP 允许用户设置随机种子状态。random_state
1赞 Maciej Skorski 11/26/2023
@colidyre我认为真正的问题是为什么随机算法看起来那么不稳定,尽管承诺了很小的方差。在高质量的研究中,人们会检查独立的运行,以确认结果是稳定的,而不是偶然的。可重复性是一个不同的用例。
0赞 Maciej Skorski 11/26/2023
@TKR BERT + UMAP + HDBScan 对文本数据的扫描表明您正在使用 BERTopic,对吗?
0赞 TKR 11/28/2023
@MaciejSkorski我不是因为我不知道 BERTopic,而是现在正在研究它!
0赞 Maciej Skorski 11/28/2023
@TKR BERTopic 本质上是你描述的管道,你可能会喜欢它 - 享受 :-)

答:

1赞 Maciej Skorski 11/26/2023 #1

除非我们看到一些数据可以重现(例如嵌入的张量),否则我们只能给出有根据的猜测。

首先,我建议在嵌入的文本(BERT 的输出)上绘制几次 UMAP 及其可视化实用程序。请注意,40k 绝对是“可绘制的”,请参阅链接的教程。

其次,可能存在一些不明显的数据问题,导致 UMAP 不太稳定。其中一个问题是当存在许多重复时(例如,在分析口语短语时发生多次)。另一个原因可能是由于 GPU 加速实现可能是实验性的(基于最近的研究论文,尚未得到充分验证)。

我曾经对数百万个短语运行 BERT + UMAP + HDBScan 组合,尽管随机化,但结果稳定。我会责怪数据或具体实现。