2011-12-26 11 views
13

में वापसी मूल्य मैं kmeans() आर में समारोह का उपयोग कर रहा हूँ और मैं उत्सुक क्या लौटे वस्तु की विशेषताओं tot.withinss totss और के बीच अंतर है था। प्रलेखन से वे एक ही चीज़ लौट रहे प्रतीत होते हैं, लेकिन मेरे डेटासेट पर लागू होते हैं टट्टू का मूल्य 66213.63 है और tot.withinss के लिए 6893.50 है। कृपया मुझे बताएं कि क्या आप मरो विवरण से परिचित हैं। धन्यवाद!kmeans आर

मारियस।

उत्तर

19

को देखते हुए वर्गों betweenss की राशि और प्रत्येक क्लस्टर withinss के लिए वर्गों का योग के भीतर के वेक्टर के बीच सूत्रों ये हैं:

totss = tot.withinss + betweenss 
tot.withinss = sum(withinss) 

उदाहरण के लिए, अगर वहाँ केवल एक क्लस्टर थे तो betweenss0 होगा, withinss और totss = tot.withinss = withinss में केवल एक घटक होगा।

आगे स्पष्टीकरण के लिए, हम क्लस्टर असाइनमेंट को देखते हुए इन विभिन्न मात्राओं की गणना कर सकते हैं और इससे उनके अर्थों को स्पष्ट करने में मदद मिल सकती है। और क्लस्टर असाइनमेंट cl$cluster पर help(kmeans) में उदाहरण से डेटा पर विचार करें। वर्गों समारोह की राशि को परिभाषित करें इस प्रकार है - यह है कि स्तंभ से एक्स के प्रत्येक स्तंभ के मतलब को घटा और फिर शेष मैट्रिक्स के प्रत्येक तत्व के वर्गों का योग:

# or ss <- function(x) sum(apply(x, 2, function(x) x - mean(x))^2) 
ss <- function(x) sum(scale(x, scale = FALSE)^2) 

फिर हम निम्नलिखित है। ध्यान दें कि cl$centers[cl$cluster, ] फिट मान हैं, यानी यह एक पंक्ति प्रति बिंदु के साथ एक मैट्रिक्स है जैसे कि ith पंक्ति क्लस्टर का केंद्र है जो ith बिंदु से संबंधित है।

example(kmeans) # create x and cl 

betweenss <- ss(cl$centers[cl$cluster,]) # or ss(fitted(cl)) 

withinss <- sapply(split(as.data.frame(x), cl$cluster), ss) 
tot.withinss <- sum(withinss) # or resid <- x - fitted(cl); ss(resid) 

totss <- ss(x) # or tot.withinss + betweenss 

cat("totss:", totss, "tot.withinss:", tot.withinss, 
    "betweenss:", betweenss, "\n") 

# compare above to: 

str(cl) 

संपादित करें:

के बाद से इस सवाल का जवाब था, आर जोड़ा गया है अतिरिक्त समान kmeans उदाहरण (example(kmeans)) और एक नया fitted.kmeans विधि और अब हम कैसे फिट विधि अनुगामी टिप्पणी में ऊपर में फिट बैठता है दिखाने कोड लाइनें

+0

अहम। तो * tot.withinss * क्लस्टर विविधता के भीतर कुल होना चाहिए और * टट्टू * समग्र डेटा भिन्नता होना चाहिए। क्लस्टर भिन्नता के भीतर कुल + क्लस्टर केंद्रों के एसएस। सही? – Marius

+0

मैंने कुछ और स्पष्टीकरण जोड़ा है। –

+0

तो, यदि कोई क्लस्टर विविधता के भीतर कुल पता लगाना चाहता है, तो * tot.whitinss * एक है। धन्यवाद। – Marius

0

मुझे लगता है कि आप दस्तावेज में एक त्रुटि ... जो कहते हैं देखा है:

withinss  The within-cluster sum of squares for each cluster. 
totss  The total within-cluster sum of squares. 
tot.withinss  Total within-cluster sum of squares, i.e., sum(withinss). 

आप मदद पृष्ठ उदाहरण में नमूना डेटासेट का उपयोग करते हैं:

> kmeans(x,2)$tot.withinss 
[1] 15.49669 
> kmeans(x,2)$totss 
[1] 65.92628 
> kmeans(x,2)$withinss 
[1] 7.450607 8.046079 

मुझे लगता है कि किसी को करना चाहिए आर-डेवेल मेलिंग सूची के लिए एक अनुरोध लिखें कि सहायता पृष्ठ संशोधित किया जाए। यदि आप नहीं चाहते हैं तो मैं ऐसा करने के लिए तैयार हूं।

+0

त्वरित प्रतिक्रिया के लिए धन्यवाद। मैं वही सोच रहा था .. कि डॉक्टर में एक त्रुटि है .. दुर्भाग्य से मैंने देखा केवल एक ही नहीं। यदि आप उनसे अनुरोध चाहते हैं तो आप लिख सकते हैं। मुख्य बिंदु यह है कि मैं आनुवंशिक के-साधन एल्गोरिदम का भी उपयोग कर रहा हूं और मैं परिणामों की तुलना करना चाहता था। अब मुझे नहीं पता कि कौन सा विचार करना चाहिए .. – Marius

+0

किसके साथ क्या करना है? (बहुत सारे सर्वनाम और विशेषण हैं, आपके भ्रम या मेरे काउंटर-प्रश्न में पर्याप्त संज्ञाएं नहीं हैं।) –

+0

:/यदि कोई प्रोग्रामिंग भाषा वाक्यविन्यास शामिल नहीं है तो आप व्याकरण को चुनते हैं? मैं आनुवंशिक के-साधन एल्गोरिदम के परिणामों की तुलना आर में केमैन फ़ंक्शन के परिणामों के साथ करना चाहता था। मुख्य बिंदु क्लस्टर विविधता के भीतर कम करना है। आर में लौटाए गए केमन्स ऑब्जेक्ट में 2 गुणों को डॉक्टर में परिभाषित किया गया है।तुलना करने के लिए केवल एक ही परिणाम है। – Marius