【问题标题】:Clustering with a distance matrix使用距离矩阵进行聚类
【发布时间】:2011-04-13 02:46:15
【问题描述】:

我有一个(对称)矩阵M,它表示每对节点之间的距离。例如,

A B C D E F G H I J K L 0 20 20 20 40 60 60 60 100 120 120 120 B 20 0 20 20 60 80 80 80 120 140 140 140 C 20 20 0 20 60 80 80 80 120 140 140 140 D 20 20 20 0 60 80 80 80 120 140 140 140 E 40 60 60 60 0 20 20 20 60 80 80 80 F 60 80 80 80 20 0 20 20 40 60 60 60 G 60 80 80 80 20 20 0 20 60 80 80 80 H 60 80 80 80 20 20 20 0 60 80 80 80 100 120 120 120 60 40 60 60 0 20 20 20 Ĵ 120 140 140 140 80 60 80 80 20 0 20 20 K 120 140 140 140 80 60 80 80 20 20 0 20 120 140 140 140 80 60 80 80 20 20 20 0

有没有什么方法可以从M中提取集群(如果需要,集群的数量可以固定),使得每个集群中包含的节点之间的距离很小。在示例中,集群将是 (A, B, C, D)(E, F, G, H)(I, J, K, L)

非常感谢:)

【问题讨论】:

    标签: algorithm matrix cluster-analysis distance


    【解决方案1】:

    Hierarchical clustering 直接使用距离矩阵而不是实际观察值。如果您知道集群的数量,您将已经知道您的停止标准(当有 k 个集群时停止)。这里的主要技巧是选择一个合适的linkage method。此外,this paper(pdf) 对各种聚类方法进行了出色的概述。

    【讨论】:

    • 我已经尝试过 UPGMA,但生成的集群非常糟糕。有什么想法吗?
    • 如果我正确地解释了你的距离矩阵,那么你的集群就会很好地分开。在这种情况下,单一和完整的链接应该可以很好地工作。您可能想尝试在stats.stackexchange.com 上发布此内容,有些人更擅长此类主题。
    【解决方案2】:

    另一种可能的方法是使用通常称为 K-Medoids 的Partitioning Around Medoids。如果您查看 R-clustering 包,您会看到 pam 函数,它接收距离矩阵作为输入数据。

    【讨论】:

      【解决方案3】:

      好吧,可以对给定的相似度矩阵执行 K-means 聚类,首先您需要将矩阵居中,然后取矩阵的特征值。最后也是最重要的一步是将前两组特征向量乘以特征值的对角线的平方根以获得向量,然后继续使用 K-means 。下面的代码显示了如何做到这一点。您可以更改相似度矩阵。 fpdist 是相似度矩阵。

      mds.tau <- function(H)
      {
        n <- nrow(H)
         P <- diag(n) - 1/n
         return(-0.5 * P %*% H %*% P)
        }
        B<-mds.tau(fpdist)
        eig <- eigen(B, symmetric = TRUE)
        v <- eig$values[1:2]
        #convert negative values to 0.
       v[v < 0] <- 0
      X <- eig$vectors[, 1:2] %*% diag(sqrt(v))
      library(vegan)
      km <- kmeans(X,centers= 5, iter.max=1000, nstart=10000) .
      #embedding using MDS
      cmd<-cmdscale(fpdist)
      

      【讨论】:

        猜你喜欢
        • 2014-07-09
        • 2017-04-13
        • 1970-01-01
        • 2019-02-05
        • 2015-04-21
        • 2016-03-20
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        相关资源
        最近更新 更多