为什么采用K均值算法优于Kruskal的聚类算法

问题描述 投票:3回答:1

我正在使用Coursera上的Andrew Ng的机器学习课程。在讨论聚类时,他告诉我们K-表示聚类算法是使用最广泛的算法。我还使用Kruskal的算法进行了较早的聚类,这是一种非常有效的算法,具有路径压缩和基于等级的并集。是什么让K均值优于Kruskal算法?

algorithm machine-learning cluster-analysis k-means kruskals-algorithm
1个回答
0
投票

Kruskal的算法和k-means聚类通常会产生非常不同的聚类,因为它们经过优化以查找不同的事物。

例如,考虑一条线上的n个点或多或少均匀地隔开,除了每个点离其右侧点比其左侧点稍远一些。也就是说,如果缩小,则或多或少会看到n个均匀分布的点,但是放大时,您会发现距离并不完全相同,而是从左向右增加。

Kruskal的算法找到最大分离聚类,这意味着它将节点分开,以使聚类之间的距离尽可能大。在这种情况下,最大分隔聚类在k = 2的情况下会是什么样?由于距离随着从左向右移动而增加,因此会发现“除最右边的节点以外的所有东西”和“最右边的节点”之外的所有聚类。]

另一方面,

K-均值聚类找到最小化集群内方差的聚类,这意味着它对节点进行了分组,因此聚类的节点通常彼此接近。在上述数据集上运行k均值会将点大致沿中心线分成一半,返回两个大小相同的簇。

那么哪个是“更好的”集群?这取决于您的应用程序。我会怀疑,我们经常希望第二个集群,因为我们希望集群中的节点尽可能彼此相似。这就是为什么我们经常看到k均值聚类比Kruskal的算法使用更多的原因,尽管在某些情况下,Kruskal非常有用。

请注意,这种关注与效率成正比。是的,Kruskal的算法非常快,但是它的计算方式不同于k-means的计算方式。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.