R:使用相似性或相异性矩阵进行聚类?并将结果可视化

R: clustering with a similarity or dissimilarity matrix? And visualizing the results

我有一个使用 Harry 创建的相似度矩阵——一种字符串相似度工具,我想从中绘制一些树状图,看看是否能找到一些聚类/ 数据中的组。我正在使用以下相似性度量:

("For comparison Harry loads a set of strings from input, computes the specified similarity measure and writes a matrix of similarity values to output")

一开始好像是第一次用R,没怎么注意hclust的文档,所以用了一个相似度矩阵。我知道我应该使用 差异矩阵 ,而且我知道,因为我的 相似矩阵 是标准化的 [0,1],所以我可以做 dissimilarity = 1 - similarity 然后使用 hclust.

但是,我使用 hclust 相似度矩阵 得到的组比我使用 hclust 得到的组好得多,它对应 差异矩阵.

我也尝试使用 proxy 包,但同样的问题发生了,我得到的组不是我所期望的。

要使用我做的相似函数得到树状图:

  1. plot(hclust(as.dist(""similarityMATRIX""), "average"))

我试过的相异矩阵:

  1. plot(hclust(as.dist(""dissimilarityMATRIX""), "average"))

  1. plot(hclust(as.sim(""dissimilarityMATRIX""), "average"))

从 (1) 我得到了我认为非常好的树状图,因此我可以从中得到非常好的组。从 (2) 和 (3) 我得到相同的树状图,我可以从中得到的组不如我从 (1)

我说分组是bad/good是因为目前我要分析的数据量有点少,所以我可以很容易地检查它们。

我得到的这些有意义吗?有什么可以证明这一点?关于如何使用相似矩阵进行聚类的一些建议。有没有比树状图更好的可视化相似度矩阵的方法?

您可以使用热图可视化相似度矩阵(例如,使用 heatmaply R 包)。 您可以使用 dendextend R 包函数 cor_cophenetic(使用 github 中的最新版本)检查树状图是否适合。

基于距离的聚类可以使用 hclust 完成,也可以使用 cluster::pam (k-medoids)。