分层聚类将基于相似度矩阵对最相似的项进行分组。但是,如何确定群集的相似之处,以及如何在视觉上显示?
请考虑以下代码:
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)
该表本身包含有关每个州和谋杀率,攻击率,人口等的信息(我将每栏称为属性)。将群集应用于数据时,我们看到像阿拉巴马州,路易斯安那州,佐治亚州和田纳西州群集在一起。
我如何确定哪个属性导致某些状态聚类?例如,可能是上面提到的四个州都具有非常高的攻击率和低谋杀率,以及类似的城市流行音乐。但除了计算每个群集的每个属性的偏差之外,还有一种更简单的方法可以用来确定它,最重要的是可视化它吗?
进行K-means聚类分析可能就是您正在寻找的。这篇文章使用了您如何使用它来将可视化中的每个相似区域分开的确切示例。
https://www.datanovia.com/en/lessons/k-means-clustering-in-r-algorith-and-practical-examples/
我认为你问的是错误的问题。为了使状态处于同一个集群中,它们在所有维度上必须有些相似。我认为一个更好的问题是为什么其他州不属于同一个集群?其他州有什么不同?这里只有四个尺寸,因此很容易看到所有尺寸。我将使用你的阿拉巴马州,路易斯安那州,佐治亚州和田纳西州的例子。
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")
现在我们可以比较不同的集群。例如,集群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组的城市人口较少,但攻击率较高。
据推测,任何一个集群中的点都是相似的。对于任何一对组,您可以在这些图中查看这两个组,看看它们的不同之处。