如何在标签不同时比较两个聚类解决方案

数据挖掘 聚类
2022-03-09 15:14:08

我计划测试一些数据的聚类方法的可靠性。我的计划是重复(有替换)绘制一些随机子样本对(例如总数据的 2x 10%),分别对两者运行聚类,然后比较结果。问题是我正在使用 HDBSCAN,它不仅会创建非固定数量的集群(针对不同的数据集但相同的参数),而且由于未定义 k,因此它也会以不同的方式标记集群,并且输入数据将始终由于可变性,结构略有不同。

我通过在我的数据的两个子样本(A、B)上使用相同的 HDBSCAN 参数对此进行了测试,我的问题很容易看出。A 对应样本的聚类标签为:
{-1: 4306, 0: 1737, 1: 2999, 2: 72068, 3: 20628, 4: 3120}

而对于 B,他们是:
{-1: 4478, 0: 1711, 1: 3048, 2: 72089, 3: 3123, 4: 20408}

由此看来,在我们比较标签 3 之前,该解决方案似乎非常接近。看起来 A 的标签 3 对应于 B 的标签 4。

我最初的想法是,我可以按照每个集群的样本大小的顺序重新标记它们。但这假设这两种解决方案在许多测试中都是相似的(这最终是测试的重点)。所以我的下一个想法是我可以设置以下约束:(1)噪声组中应该有“相似”数量的样本,以及(2)应该找到相同数量的集群。如果满足这两个条件,那么我可以按样本大小的顺序重新标记集群,然后使用 ARI 或 AMI 进行比较。

我怀疑这是否好,因为我不认为(即使考虑到两个约束)根据样本标记为相同的两个集群必然对应于相同的“全局”集群。因此,这对我来说似乎有问题,但我想不出替代方案。

上述做法一般合理吗?如果没有,我还能做些什么来评估 HDBSCAN 解决方案的可靠性/稳定性?作为替代方案,是否只计算 DBCV 分数、噪声百分比和集群数量,然后将其用作集群质量的指标?

1个回答

这只是部分答案,因为我不熟悉 HDBSCAN,希望其他人可以提供更完整的答案。

据我了解,您需要找到 A 中的哪个集群对应于 B 中的哪个集群,即 A 和 B 的集群标签之间的对齐。不建议仅根据大小进行匹配,因为它可能是偶然发生的A 中的集群与 B 中的集群具有相同大小(或相似大小)。由于实例不同,您将不得不依赖该方法如何表示集群。

  • 例如,概率聚类方法将每个聚类表示为特征上的分布,因此可以使用这些分布之间的距离/相似性度量。
  • 使用 k-means 可以比较质心并匹配距离最短的集群对。

我对 HDBSCAN 不熟悉,所以我不知道模型内的集群是如何表示的:不管是什么,我的想法是比较 A 中集群的每个内部表示与 B 中的相同。