【问题标题】:Different results for `hclust' and `agnes' using average link使用平均链接的“hclust”和“agnes”的不同结果
【发布时间】:2017-08-01 11:29:14
【问题描述】:

我正在对自定义模拟相似度矩阵应用一个简单的聚类过程。 (https://github.com/ewouddt/Files/blob/master/sim_col.RData)

但是,当使用 平均链接 时,我注意到 hclustagnes 过程之间存在差异(注意:我观察到 完整链接 的行为相同也)

load("sim_col.RData") # A 606 x 606 similarity matrix
library(cluster)

c1 <- hclust(as.dist(1-sim_col),method="average")
c2 <- as.hclust(agnes(as.dist(1-sim_col),diss=TRUE,method="average"))

dev.new()
plot(c1)
dev.new()
plot(c2)

cut1 <- cutree(c1,k=20)
cut2 <- cutree(c2,k=20)
cut1
cut2

sort(table(cut1))
cut1
# cut1
# 10  18   9  19   3  20   4  11   7  15  17   5   6  12  16   2   8   1  13  14 
#  2   5   7   8  11  13  14  14  15  19  19  21  23  26  27  31  33  80  95 143
sort(table(cut2))
# cut2
# 18  20  19  11  17   7   8   4  12   5   9   3  10  16   2   6  14  13   1  15 
#  4   6   8   9   9  13  13  14  15  16  17  19  20  29  31  31  54  62 115 121

正如预期的那样,由于hclustagnes 的顺序不同,树状图看起来也不同。 然而,切割标签(例如k=20)显示了不同(尽管相似)的观察结果。 (例如,您可以看到两个结果之间的标签数量不同)

我犯了一个愚蠢的错误还是hclustagnes 在砍树后不应该返回完全相同的结果? 如果这两个过程不应该返回相同的结果,那么这两个函数的区别在哪里?

【问题讨论】:

    标签: r cluster-analysis hclust


    【解决方案1】:

    除单链接外,聚类结果可能不是唯一确定的。

    考虑以下数据集:

    1 2 3 4
    

    三个最小值:合并 1 和 2,或 2 和 3,或 3 和 4。

    除了单链接,我们会得到不同的结果,具体取决于我们是先合并 2 和 3 还是其他对中的一对。

    特别是,通常的算法将能够保证找到最佳解决方案。如果你想保证这一点,你很可能是 NP 完全的。但这也可能无关紧要。

    【讨论】:

      猜你喜欢
      • 2021-05-02
      • 1970-01-01
      • 2017-05-16
      • 2017-09-20
      • 2015-06-02
      • 2018-11-18
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多