2016-03-14 51 views
0

我正在R Studio中做一些數據的集羣。我對K-means聚類分析的結果以及繪製分層聚類的結果有問題。所以當我使用函數kmeans時,我得到了4組10,20,30和6個觀測值。儘管如此,當我繪製樹形圖時,我得到了4組,但觀察結果數量不同:23,26,10和7.使用k-means並繪製距離矩陣時結果的差異。爲什麼?

你有沒有發現過這樣的問題?

在這裏,你是我的代碼:

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

的K均值和層次聚類結果不需要在每一個場景相同。

僅舉一個例子,每次運行k-means時,質心的初始選擇都不相同,因此結果不同。

0

這並不奇怪。 K均值聚類隨機初始化,可以給出明確的答案。通常情況下,人們往往會做幾次運行,然後彙總結果以檢查哪些是「核心」集羣。

相比之下,分層聚類是純確定性的,因爲沒有涉及到隨機性。但是像K均值一樣,它是一種啓發式算法:遵循一套規則來創建不考慮任何潛在目標函數的聚類(例如,聚類內部和聚類間差異與總體差異)。現有羣集聚合到單個觀察值的方式對於確定所形成羣集的大小(在hclust命令中作爲方法傳遞的「ward.D2」參數)至關重要。

有一個正確定義的目標函數來優化應該給你一個獨特的答案(或其集合),但問題是NP難的,因爲涉及到的分區的絕對大小(作爲觀察次數的函數) 。這就是爲什麼只有啓發式存在的原因,也是爲什麼任何聚類過程不應該被看作是給出明確答案的工具,而是作爲一個探索性的答案。