R中是否有一种方法可以直观地显示哪个属性导致层次聚类中的聚类?

时间:2019-03-05 00:25:25

标签: r hierarchical-clustering dendrogram

层次结构群集将根据相似度矩阵将最相似的项目分组。但是如何确定集群的相似之处,以及如何直观地显示出来呢?

考虑以下代码:

data(USArrests)
# Compute distances and hierarchical clustering
dd <- dist(scale(USArrests), method = "euclidean")
hc <- hclust(dd, method = "ward.D2")
plot(hc, hang = -1, cex = 0.6)

该表本身包含有关每个州和谋杀率,袭击率,人口等的信息(我将每一列称为属性)。将聚类应用于数据时,我们会看到阿拉巴马州,路易斯安那州,乔治亚州和田纳西州等州聚在一起。

我该如何确定哪个属性导致某些状态聚集?例如,上面提到的四个州的袭击率和谋杀率都很低,而且城市流行率也很相似。但是,除了计算每个聚类的每个属性的偏差之外,还有没有更简单的方法可以确定这一点,并且最重要的是可视化它?

2 个答案:

答案 0 :(得分:0)

您可能正在寻找进行K-均值聚类分析。这是一篇文章,其中使用了确切的示例,说明了如何使用该示例在可视化中对每个相似区域进行分区。

https://www.datanovia.com/en/lessons/k-means-clustering-in-r-algorith-and-practical-examples/

答案 1 :(得分:0)

我认为您问的是错误的问题。为了使状态在同一群集中,它们在 all 维度上必须有些相似。我认为一个更好的问题是,为什么其他国家不属于同一集群?其他州有什么不同?您这里只有四个尺寸,因此很容易查看所有尺寸。我将以您的阿拉巴马州,路易斯安那州,乔治亚州和田纳西州为例。

n = 10
CL = cutree(hc, n)
which(CL ==1)
  Alabama   Georgia Louisiana Tennessee 
        1        10        18        42 

par(mfrow=c(1,2))
plot(USArrests[,2:3], pch=20, col=rainbow(n, end=0.75)[CL])
plot(USArrests[,c(1,4)], pch=20, col=rainbow(n, end=0.75)[CL])
legend("topleft", legend=1:n, pch=20, col=rainbow(n, end=0.75), bty="n")

USArrests

现在,我们可以比较不同的群集。例如,群集10(紫色)完全不同。

which(CL ==10)
North Dakota  South Dakota       Vermont West Virginia 
         34            41            45            48 
集群10在所有四个维度上都很低,而集群1的谋杀率很高,在其他三个维度上都更高。不太相似。

集群9(深蓝色)。

which(CL ==9)
   Mississippi North Carolina South Carolina 
            24             33             40
这些是我们可能期望与群1更相似的其他南方深州。的确,在强奸和谋杀方面,它们非常相似。群集重叠。但是由于其他维度,它们是不同的集群。第9组的城市人口较少,但袭击率较高。

大概,任何一个群集中的点都是相似的。对于任何一对组,您都可以查看这些图中的两个,并了解它们为何不同。