提问人:TKR 提问时间:11/17/2023 更新时间:11/20/2023 访问量:24
是否可以使 UMAP for HDBScan 聚类的结果更加一致?
Can the results of UMAP for HDBScan clustering be made more consistent?
问:
我有一组 ~40K 短语,在使用 UMAP 进行降维后,我正在使用 HDBScan 进行聚类。步骤如下:
- 使用微调的 BERT 模型生成嵌入
- 使用 UMAP 减小尺寸
- 使用 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 个集群?
答:
除非我们看到一些数据可以重现(例如嵌入的张量),否则我们只能给出有根据的猜测。
首先,我建议在嵌入的文本(BERT 的输出)上绘制几次 UMAP 及其可视化实用程序。请注意,40k 绝对是“可绘制的”,请参阅链接的教程。
其次,可能存在一些不明显的数据问题,导致 UMAP 不太稳定。其中一个问题是当存在许多重复时(例如,在分析口语短语时发生多次)。另一个原因可能是由于 GPU 加速实现可能是实验性的(基于最近的研究论文,尚未得到充分验证)。
我曾经对数百万个短语运行 BERT + UMAP + HDBScan 组合,尽管随机化,但结果稳定。我会责怪数据或具体实现。
下一个:OpenLayers 线串
评论
random_state