聚类质量度量

机器算法验证 聚类
2022-01-31 11:21:48

我有一个带有输入参数(簇数)的聚类算法(不是 k-means)。执行聚类后,我想对该聚类的质量进行一些定量测量。聚类算法有一个重要的性质。对于,如果我将个数据点提供给该算法而它们之间没有任何显着区别,结果我将得到一个包含数据点的集群和一个包含数据点的集群。显然这不是我想要的。所以我想计算这个质量度量来估计这个聚类的合理性。理想情况下,我将能够比较不同的这些措施。所以我将在kk=2NN11kk并选择质量最好的那个。我如何计算这样的质量度量?

更新:

这是是错误聚类的示例。假设平面上有3个点形成等边三角形。将这些点分成 2 个集群显然比将它们分成 1 或 3 个集群更糟糕。(N1,1)

4个回答

指标的选择取决于您认为聚类的目的是什么。就我个人而言,我认为聚类应该是关于识别不同的观察组,每组观察都是由不同的数据生成过程生成的。所以我会通过从已知的数据生成过程生成数据来测试聚类的质量,然后计算模式被聚类错误分类的频率。当然,这涉及对每个生成过程的模式分布进行假设,但您可以使用为监督分类设计的数据集。

其他人将聚类视为试图将具有相似属性值的点组合在一起,在这种情况下,SSE 等措施是适用的。然而,我发现这个聚类的定义相当不令人满意,因为它只告诉你一些关于特定数据样本的信息,而不是关于底层分布的通用信息。方法如何处理重叠集群是此视图的一个特殊问题(对于“数据生成过程”视图,它不会导致真正的问题,您只需获得集群成员资格的概率)。

剪影用于评估聚类结果。它通过比较簇内的平均距离与到最近簇中点的平均距离来实现。

由于聚类是无监督的,因此很难先验地知道最佳聚类是什么。这是研究课题。著名的定量社会科学家 Gary King即将发表一篇关于此主题的文章。

这里有一些措施,但还有更多:

SSE:每个集群项目的平方误差之和。

簇间距离:每个簇质心之间的平方距离之和。

每个簇的簇内距离:每个簇的项目到其质心的平方距离之和。

最大半径:从实例到其簇质心的最大距离。

平均半径:从实例到其簇质心的最大距离之和除以簇数。