我有一个大距离矩阵。
我需要对它们进行分层聚类,然后将树切割成簇(如分区方法)。
哪种算法对根据距离矩阵在数据中查找自然聚类最敏感?
我如何评估结果?我计划使用不同级别的树的平均轮廓系数来识别树中的“自然”簇。
谢谢
我有一个大距离矩阵。
我需要对它们进行分层聚类,然后将树切割成簇(如分区方法)。
哪种算法对根据距离矩阵在数据中查找自然聚类最敏感?
我如何评估结果?我计划使用不同级别的树的平均轮廓系数来识别树中的“自然”簇。
谢谢
听起来您需要 HAC(分层凝聚聚类)。有许多变体,但基本思想是您从单例集群开始并逐步合并,基于确定哪些集群是“最接近”的不同方式。
有关 HAC 的更多信息,请参阅维基百科条目。
您可以尝试一些有趣的事情:
看看SigClust - 它是一个 R 函数,可让您使用 bootstrapping/monte carlo 模拟来确定聚类的重要性。SigClust 将为两组点之间的聚类操作提供一个 p 值。从理论上讲,您可以在层次聚类树的每个节点上运行它,但它往往很耗时,因此可能在超过 10 个点的节点上运行。在任何一种情况下,如果您 SigClust 始终为点聚类提供高 p 值,那么这些可能会突出显示您正在寻找的自然聚类。
尝试看看您是否可以使用OREO 或最佳重新排序而不是层次聚类。据我所知,没有可用的 R 实现,但该算法确实产生了非常令人印象深刻的结果(至少在我读过的论文中)。如果您有数学编程方面的背景,我相信您可以使用 CPLEX 得到类似的东西。
您可能想尝试“基于模型的聚类”。该算法使用“BIC”来确定集群的数量。
真挚地