哪种层次聚类算法?

机器算法验证 聚类
2022-03-31 18:46:34

我有一个大距离矩阵3400×3400

我需要对它们进行分层聚类,然后将树切割成簇(如分区方法)。

哪种算法对根据距离矩阵在数据中查找自然聚类最敏感?

我如何评估结果?我计划使用不同级别的树的平均轮廓系数来识别树中的“自然”簇。

谢谢

3个回答

听起来您需要 HAC(分层凝聚聚类)。有许多变体,但基本思想是您从单例集群开始并逐步合并,基于确定哪些集群是“最接近”的不同方式。

有关 HAC 的更多信息,请参阅维基百科条目

您可以尝试一些有趣的事情:

  1. 看看SigClust - 它是一个 R 函数,可让您使用 bootstrapping/monte carlo 模拟来确定聚类的重要性。SigClust 将为两组点之间的聚类操作提供一个 p 值。从理论上讲,您可以在层次聚类树的每个节点上运行它,但它往往很耗时,因此可能在超过 10 个点的节点上运行。在任何一种情况下,如果您 SigClust 始终为点聚类提供高 p 值,那么这些可能会突出显示您正在寻找的自然聚类。

  2. 尝试看看您是否可以使用OREO 或最佳重新排序而不是层次聚类。据我所知,没有可用的 R 实现,但该算法确实产生了非常令人印象深刻的结果(至少在我读过的论文中)。如果您有数学编程方面的背景,我相信您可以使用 CPLEX 得到类似的东西。

您可能想尝试“基于模型的聚类”。该算法使用“BIC”来确定集群的数量。

真挚地