2010-09-16 11 views
9

के साथ क्लस्टरिंग मेरे पास एक (सममित) मैट्रिक्स M है जो नोड्स की प्रत्येक जोड़ी के बीच की दूरी का प्रतिनिधित्व करता है। उदाहरण के लिए,दूरी मैट्रिक्स

 
    A B C D E F G H I J K L 
A 0 20 20 20 40 60 60 60 100 120 120 120 
B 20 0 20 20 60 80 80 80 120 140 140 140 
C 20 20 0 20 60 80 80 80 120 140 140 140 
D 20 20 20 0 60 80 80 80 120 140 140 140 
E 40 60 60 60 0 20 20 20 60 80 80 80 
F 60 80 80 80 20 0 20 20 40 60 60 60 
G 60 80 80 80 20 20 0 20 60 80 80 80 
H 60 80 80 80 20 20 20 0 60 80 80 80 
I 100 120 120 120 60 40 60 60 0 20 20 20 
J 120 140 140 140 80 60 80 80 20 0 20 20 
K 120 140 140 140 80 60 80 80 20 20 0 20 
L 120 140 140 140 80 60 80 80 20 20 20 0 

वहाँ M से समूहों को निकालने के लिए (यदि आवश्यक हो, समूहों की संख्या निर्धारित किया जा सकता है), ऐसा है कि प्रत्येक समूह उन दोनों के बीच छोटी दूरी के साथ नोड्स शामिल कोई भी तरीका है। उदाहरण में, क्लस्टर (A, B, C, D), (E, F, G, H) और (I, J, K, L) होंगे।

धन्यवाद एक बहुत :)

उत्तर

7

Hierarchical clustering दूरी वास्तविक टिप्पणियों के बजाय मैट्रिक्स के साथ सीधे काम करता है। यदि आप क्लस्टर की संख्या जानते हैं, तो आप पहले से ही अपने रोक मानदंड को जान लेंगे (जब क्लस्टर हैं तो रुकें)। यहां मुख्य चाल उचित linkage method चुनना होगा। इसके अलावा, this paper (पीडीएफ) सभी प्रकार की क्लस्टरिंग विधियों का उत्कृष्ट अवलोकन देता है।

+0

मैंने पहले ही यूपीजीएमए की कोशिश की है लेकिन परिणामस्वरूप क्लस्टर बहुत खराब हैं। कोई विचार? – yassin

+1

यदि मैं आपकी दूरी मैट्रिक्स को सही ढंग से समझता हूं, तो आपके क्लस्टर बहुत अच्छी तरह से अलग होते हैं। उस स्थिति में, एकल और पूर्ण संबंध अच्छी तरह से काम करना चाहिए। आप http://stats.stackexchange.com पर इसे आजमा सकते हैं और पोस्ट कर सकते हैं, ऐसे लोग हैं जो ऐसे विषयों पर अधिक विशिष्ट हैं। –

2

एक और संभावित तरीका Partitioning Around Medoids का उपयोग कर रहा है जिसे अक्सर के-मेडोइड्स कहा जाता है। यदि आप आर-क्लस्टरिंग पैकेज देखते हैं तो आपको पाम फ़ंक्शन दिखाई देगा जो इनपुट डेटा के रूप में दूरी मैट्रिक्स प्राप्त करता है।

0

ठीक है, किसी दिए गए समानता मैट्रिक्स पर के-साधन क्लस्टरिंग करना संभव है, सबसे पहले आपको मैट्रिक्स को केंद्र में रखना होगा और फिर मैट्रिक्स के eigenvalues ​​लेना होगा। अंतिम और सबसे महत्वपूर्ण कदम eigenvectors के पहले दो सेट को eigenvalues ​​के विकर्णों के वर्ग रूट में वैक्टर प्राप्त करने के लिए गुणा कर रहा है और फिर के-साधनों के साथ आगे बढ़ रहा है। कोड के नीचे दिखाता है कि यह कैसे करें। आप समानता मैट्रिक्स बदल सकते हैं। fpdist समानता मैट्रिक्स है।

mds.tau <- function(H) 
{ 
    n <- nrow(H) 
    P <- diag(n) - 1/n 
    return(-0.5 * P %*% H %*% P) 
    } 
    B<-mds.tau(fpdist) 
    eig <- eigen(B, symmetric = TRUE) 
    v <- eig$values[1:2] 
    #convert negative values to 0. 
v[v < 0] <- 0 
X <- eig$vectors[, 1:2] %*% diag(sqrt(v)) 
library(vegan) 
km <- kmeans(X,centers= 5, iter.max=1000, nstart=10000) . 
#embedding using MDS 
cmd<-cmdscale(fpdist) 
संबंधित मुद्दे