在实践中使用了哪些凝聚层次聚类的停止标准?

机器算法验证 聚类
2022-01-18 00:41:12

我发现了大量文献提出了各种标准(例如Glenn 等人 1985 (pdf) 和Jung 等人 2002 (pdf))。但是,其中大多数都不是那么容易实现(至少从我的角度来看)。我正在使用scipy.cluster.hierarchy来获取集群层次结构,我现在正试图决定如何从中形成平面集群。我的目标是在我的观察中发现共同的模式,所以我没有参考来比较获得的聚类。任何人都可以提出一个务实的解决方案吗?

3个回答

以下 Wikipedia 条目实际上很好地解释了最流行且相对简单的方法:

那里描述的肘部方法启发式可能是最流行的,因为它的简单解释(由簇数解释的方差量)加上视觉检查。信息论方法也不难实现,并且页面有一些可以用来启动的伪代码后者类似于基于模型复杂性的惩罚可能性,如众所周知的信息标准,如 AIC、BIC 等。

无论您使用哪种聚类方法,都很难提供关于如何在数据中选择“最佳”聚类数量的明确解决方案,因为聚类分析旨在隔离统计单位组(无论是个人还是变量) ) 本质上是出于探索性或描述性目的。因此,您还必须解释集群方案的输出,并且几个集群解决方案可能同样有趣。

现在,关于用于决定何时停止聚合数据的常用统计标准,正如@ars 所指出的那样,大多数是视觉引导标准,包括分析树状图或检查聚类轮廓,也称为轮廓图(Rousseeuw,1987) . 还提出了几个数值标准,也称为有效性指数,例如 Dunn 有效性指数、Davies-Bouldin 有效性指数、C 指数、Hubert 伽玛等等。分层聚类通常与 k-means 一起运行(事实上,k-means 的几个实例,因为它是一种随机算法),因此它增加了对找到的聚类解决方案的支持。我不知道所有这些东西在 Python 中是否很容易获得,但是在 R 中提供了大量的方法(参见集群任务视图,@mbq 已经引用了一个相关问题,即哪些工具可用于在 MovieLens 上应用集群算法?)。如果您寻求更稳健的方法来选择数据中的聚类数量,其他方法包括模糊聚类基于模型的聚类(在心理测量学界也称为潜在特征分析)。

顺便说一句,我刚刚看到这个网页scipy-cluster,它是Scipy 的扩展,用于生成、可视化和分析分层集群也许它包括其他功能?我还听说过PyChem,它为多变量分析提供了很好的东西。

以下参考资料也可能会有所帮助:

Steinley, D., & Brusco, MJ (2008)。聚类分析中变量的选择:八个程序的经验比较。心理测量学73,125-144

我最近成为clustergram 可视化方法(在 R 中实现)的基金。

我用它作为一种额外的方法来评估“好”数量的集群。将其扩展到其他聚类方法并不难(我确实做到了,只是没有发布代码)

替代文字