谁能推荐一些可以将距离矩阵作为输入的聚类算法?或者也可以基于距离矩阵来评估聚类“优度”的算法?
此刻,我正在使用 Kruskal 算法的修改版 (http://en.wikipedia.org/wiki/Kruskal%27s_algorithm) 将数据分成两个集群。但它有一个问题。当数据没有不同的簇时,该算法仍将创建两个簇,一个簇包含一个元素,另一个包含所有其余元素。在这种情况下,我宁愿有一个包含所有元素的集群和另一个空的集群。
是否有任何算法能够进行此类聚类?
是否有任何算法可以估计聚类的完成情况,甚至更好地估计数据中有多少个聚类?
算法应该只使用距离(相似度)矩阵作为输入。
最佳答案
Or the algorithm which can assess the "goodness" of the clustering also based on the distance matrix?
KNN 应该有助于评估聚类分配的“优度”。方法如下:
给定一个距离矩阵,每个点都根据它所属的集群(它的“集群标签”)进行标记:
- 根据 k 最近邻分类隐含的聚类标签测试每个点的聚类标签
- 如果 k 最近邻暗示了一个替代集群,则该分类点会降低该集群的整体“良好”评级
- 总结每个像素的“良好评级”贡献以获得整个集群的总“良好评级”
与 k-means 聚类分析不同,您的算法将返回有关分类不佳的点的信息。您可以使用该信息将某些点重新分配给新集群,从而提高集群的整体“优度”。
由于该算法对簇质心的位置一无所知,因此对全局簇密度一无所知,因此确保局部和全局密集的簇的唯一方法是运行该算法的范围k 值并找到一种排列方式,使 k 值范围内的优度最大化。
对于大量的点,您可能需要优化此算法;可能有一个哈希表来跟踪相对于每个点最近的点。否则该算法将需要相当长的时间来计算。
关于algorithm - 以距离矩阵为输入的聚类[评估]算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2939477/