【问题标题】:Why is K-means algorithm preferred over Kruskal's algorithm for Clustering为什么 K-means 算法优于 Kruskal 的聚类算法
【发布时间】:2020-09-19 19:37:18
【问题描述】:

我正在 Coursera 上学习 Andrew Ng 的机器学习课程。在讨论聚类时,他告诉我们 K-means 聚类算法是应用最广泛的。 我之前也使用过 Kruskal 的聚类算法,这是一种非常有效的算法,具有路径压缩和基于秩的联合。 是什么让 K-means 比 Kruskal 算法更好?

【问题讨论】:

    标签: algorithm machine-learning cluster-analysis k-means kruskals-algorithm


    【解决方案1】:

    Kruskal 的算法和 k-means 聚类通常会生成非常不同的聚类,因为它们经过优化可以找到不同的东西。

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

    Kruskal 的算法找到了一个最大分离聚类,这意味着它将节点分开,使聚类之间的距离尽可能大。在这种情况下,如果 k=2,最大分离聚类会是什么样子?由于距离随着我们从左向右移动而增加,因此它会找到“除了最右边的节点”和“最右边的节点”之外的所有内容的聚类。

    另一方面,K-means 聚类发现一个最小化聚类内方差的聚类,这意味着它对节点进行分组,使得聚类的节点通常彼此靠近。在上述数据集上运行 k-means 会将点沿中心线大致分成两半,返回两个大小大致相同的集群。

    那么哪个是“更好”的聚类?这取决于您的应用程序。我怀疑我们通常会喜欢第二个集群,因为我们希望集群中的节点尽可能地相似。这就是为什么我们经常看到 k-means 聚类比 Kruskal 算法使用得更多,尽管在某些情况下 Kruskal 是不错的选择。

    请注意,这种担忧与效率是正交的。是的,Kruskal 的算法非常快,但它计算的东西与 k-means 计算的不同。

    希望这会有所帮助!

    【讨论】:

    • 非常感谢这个例子让我们非常清楚。
    猜你喜欢
    • 2020-03-10
    • 2014-02-02
    • 1970-01-01
    • 2011-10-15
    • 2020-01-31
    • 2017-04-01
    • 2012-01-01
    • 2013-07-03
    • 2010-12-05
    相关资源
    最近更新 更多