【问题标题】:Difference between Hierarchical and Non Hierarchical Clustering?层次聚类和非层次聚类的区别?
【发布时间】:2013-05-08 16:25:47
【问题描述】:

我想看看两者的性能是否可以根据它们处理的目标函数进行比较?

层次化:单链接、完全链接和平均链接算法

非分层:模糊 C 均值和 K 均值

【问题讨论】:

    标签: performance cluster-analysis hierarchical-clustering


    【解决方案1】:

    不要混淆算法任务

    k-means 的算法不止一种。实际上至少有两打。例如,有些人使用 k-d-trees 进行加速。而且它们都是启发式的,因为我相信找到最佳 k-means 解决方案通常是 NP 难的。

    同样,还有用于层次聚类的朴素的O(n^3)运行时和O(n^2)内存方法,然后还有运行在@987654324中的用于单链接层次聚类的SLINK和用于完全链接层次聚类的CLINK等算法@时间和O(n)内存。

    最后但同样重要的是,如果您使用 DBSCAN 并设置minPts=2,则在epsilon 的高度切割时,结果将有效地与单链接层次聚类相同。然而,通过适当的索引,DBSCAN 可以在 O(n log n) 中运行(例如,在 ELKI 中 - scipy 实现并不那么聪明,它需要 O(n^2) 内存和运行时)。

    那么,为什么您可以为看似相同的任务使用如此不同的运行时?首先,一些算法(和实现)可能非常原始。易于实施和理解,但没有他们想象的那么聪明。其次,一些算法会执行您可能感兴趣或可能不感兴趣的额外工作。单链接层次聚类计算层次结构;带有minPts=2 的 DBSCAN 仅在此层次结构中进行了一次切割 - 比完整层次结构简单得多。最后但同样重要的是,还有启发式。大多数 k-means 变体都属于最后一类:通过接受错过全局最佳解决方案,您当然可以比执行穷举搜索更快。

    【讨论】:

    • 你能解释一下下面提到的语句中的O和n是什么吗?类似地,层次聚类有朴素的 O(n^3) 运行时间和 O(n^2) 内存方法。
    • 复杂性:en.wikipedia.org/wiki/Big_O_notation - 嗯,复杂性会影响运行时性能...
    猜你喜欢
    • 2018-10-04
    • 2014-06-28
    • 2016-08-07
    • 2015-08-12
    • 2020-06-28
    • 2016-09-06
    • 2016-06-06
    • 1970-01-01
    • 2021-07-02
    相关资源
    最近更新 更多