我在R Studio中做一些数据集群。我对K-means聚类分析的结果和绘制分层聚类有疑问。因此,当我使用函数kmeans时,我得到4组,分别有10,20,30和6个观察值。然而,当我绘制树形图时,我得到了4组,但观察次数不同:23,26,10和7。
你有没有发现这样的问题?
这是你的代码:
mydata<-scale(mydata0)
# K-Means Cluster Analysis
fit <- kmeans(mydata, 4) # 4 cluster solution
# get cluster means
aggregate(mydata,by=list(fit$cluster),FUN=mean)
# append cluster assignment
mydatafinal <- data.frame(mydata, fit$cluster)
fit$size
[1] 10 20 30 6
# Ward Hierarchical Clustering
d <- dist(mydata, method = "euclidean") # distance matrix
fit2 <- hclust(d, method="ward.D2")
plot(fit2,cex=0.4) # display dendogram
groups <- cutree(fit2, k=4) # cut tree into 4 clusters
# draw dendogram with red borders around the 4 clusters
rect.hclust(fit2, k=4, border="red")
答案 0 :(得分:0)
k-means和层次聚类的结果在每个场景中都不需要相同。
举一个例子,每次你运行k-意味着质心的初始选择是不同的,因此结果是不同的。
答案 1 :(得分:0)
这并不奇怪。 K均值聚类是随机初始化的,可以给出不同的答案。通常,人们倾向于进行多次运行,然后汇总结果以检查哪些是“核心”集群。
相比之下,层次聚类纯粹是确定性的,因为不涉及随机性。但是像K-means一样,它是一种启发式:遵循一组规则来创建集群而不考虑任何潜在的目标函数(例如,集群内和集群间方差与总体方差)。将现有聚类聚合到单个观察的方式对于确定所形成的聚类的大小(您在hclust命令中作为方法传递的“ward.D2”参数)至关重要。具有正确定义的目标函数以进行优化应该给出一个唯一的答案(或其集合)但问题是NP难的,因为所涉及的分区的大小(作为观察数量的函数)。这就是为什么只有启发式存在的原因,以及为什么不应该将任何聚类过程看作是一个给出明确答案的工具,而是作为一个探索性的答案。