क्लस्टरिंग के लिए मिश्रण मॉडल कैसे फिट करें


15

मेरे दो चर हैं- X और Y और मुझे क्लस्टर अधिकतम बनाने की आवश्यकता है (और इष्टतम) = 5. चलो आदर्श चर का आदर्श प्लॉट निम्नानुसार है:

यहाँ छवि विवरण दर्ज करें

मैं इसके 5 क्लस्टर बनाना चाहूंगा। कुछ इस तरह:

यहाँ छवि विवरण दर्ज करें

इस प्रकार मुझे लगता है कि यह 5 समूहों के साथ मिश्रण मॉडल है। प्रत्येक क्लस्टर में केंद्र बिंदु और उसके चारों ओर एक विश्वास चक्र होता है।

क्लस्टर्स हमेशा इस तरह सुंदर नहीं होते हैं, वे निम्नलिखित की तरह दिखते हैं, जहां कभी-कभी दो क्लस्टर्स एक साथ करीब होते हैं या एक या दो क्लस्टर पूरी तरह से गायब होते हैं।

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

मिश्रण मॉडल को कैसे फिट किया जा सकता है और इस स्थिति में प्रभावी ढंग से वर्गीकरण (क्लस्टरिंग) कर सकता है?

उदाहरण:

set.seed(1234)
X <- c(rnorm(200, 10, 3), rnorm(200, 25,3),
        rnorm(200,35,3), rnorm(200,65, 3), rnorm(200,80,5))
Y <- c(rnorm(1000, 30, 2))
plot(X,Y, ylim = c(10, 60), pch = 19, col = "gray40")

जवाबों:


13

यहाँ mcluster का उपयोग करके मिश्रण मॉडल का उपयोग करने के लिए स्क्रिप्ट है।

X <- c(rnorm(200, 10, 3), rnorm(200, 25,3), rnorm(200,35,3), rnorm(200,65, 3), rnorm(200,80,5))
Y <- c(rnorm(1000, 30, 2))
plot(X,Y, ylim = c(10, 60), pch = 19, col = "gray40")

require(mclust)
xyMclust <- Mclust(data.frame (X,Y))
plot(xyMclust)

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

ऐसी स्थिति में जहां 5 से कम क्लस्टर हैं:

X1 <- c(rnorm(200, 10, 3), rnorm(200, 25,3), rnorm(200,35,3),  rnorm(200,80,5))
Y1 <- c(rnorm(800, 30, 2))
xyMclust <- Mclust(data.frame (X1,Y1))
plot(xyMclust)

यहाँ छवि विवरण दर्ज करें

 xyMclust4 <- Mclust(data.frame (X1,Y1), G=3)
plot(xyMclust4)

यहाँ छवि विवरण दर्ज करें

इस मामले में हम 3 क्लस्टर फिट कर रहे हैं। यदि हम 5 क्लस्टर फिट करते हैं तो क्या होगा?

xyMclust4 <- Mclust(data.frame (X1,Y1), G=5)
plot(xyMclust4)

यह 5 क्लस्टर बनाने के लिए बाध्य कर सकता है।

यहाँ छवि विवरण दर्ज करें

इसके अलावा कुछ रैंडम शोर का परिचय दें:

X2 <- c(rnorm(200, 10, 3), rnorm(200, 25,3), rnorm(200,35,3),  rnorm(200,80,5), runif(50,1,100 ))
Y2 <- c(rnorm(850, 30, 2))
xyMclust1 <- Mclust(data.frame (X2,Y2))
plot(xyMclust1)

mclustशोर के साथ मॉडल-आधारित क्लस्टरिंग की अनुमति देता है , अर्थात् किसी भी क्लस्टर से संबंधित नहीं है। mclustडेटा के लिए फिट को नियमित करने के लिए एक पूर्व वितरण निर्दिष्ट करने की अनुमति देता है। priorControlपूर्व और उसके मापदंडों को निर्दिष्ट करने के लिए एक समारोह mclust में प्रदान किया जाता है। जब इसे अपनी चूक के साथ बुलाया जाता है, तो यह एक अन्य फ़ंक्शन को आमंत्रित करता है, जिसे defaultPriorवैकल्पिक पुजारी निर्दिष्ट करने के लिए एक टेम्पलेट के रूप में काम कर सकता है। मॉडलिंग में शोर को शामिल करने के शोर टिप्पणियों की एक आरंभिक अनुमान में प्रारंभ तर्क के शोर घटक के माध्यम से प्रदान की जानी चाहिए Mclustया mclustBIC

यहाँ छवि विवरण दर्ज करें

अन्य विकल्प mixtools पैकेज का उपयोग करना होगा जो आपको प्रत्येक घटक के लिए माध्य और सिग्मा निर्दिष्ट करने की अनुमति देता है।

X2 <- c(rnorm(200, 10, 3), rnorm(200, 25,3), rnorm(200,35,3),
    rnorm(200,80,5), rpois(50,30))
Y2 <- c(rnorm(800, 30, 2), rpois(50,30))
df <- cbind (X2, Y2)
require(mixtools)
out <- mvnormalmixEM(df, lambda = NULL, mu = NULL, sigma = NULL,
   k = 5,arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08,  maxit = 10000, verb = FALSE)
plot(out, density = TRUE, alpha = c(0.01, 0.05, 0.10, 0.12, 0.15),  marginal = TRUE)

यहाँ छवि विवरण दर्ज करें


2
+1 यह उत्तर बहुत उपयोगी, प्रयोग करने योग्य और रसीला है, और इसका एक आदर्श उदाहरण है कि आर के इस तरह के कामों को करने के लिए गणित को जानने के बिना भी ऐसा करना लगभग आसान है ...
पॉल

3

एक मानक दृष्टिकोण गाऊसी मिक्सचर मॉडल है जो ईएम एल्गोरिथ्म के माध्यम से प्रशिक्षित है। लेकिन जब से आप यह भी नोटिस करते हैं कि क्लस्टर की संख्या भिन्न हो सकती है, तो आप ड्यूरिचलेट जीएमएम की तरह एक गैरपारंपरिक मॉडल पर भी विचार कर सकते हैं, जिसे स्किट-लर्न में भी लागू किया गया है।

आर में, इन दो पैकेजों की पेशकश लगती है कि आपको क्या चाहिए,

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.