क्लस्टरिंग 1D डेटा


16

मेरे पास एक डेटासेट है, मैं केवल एक चर के आधार पर उस डेटा पर क्लस्टर बनाना चाहता हूं (कोई लापता मान नहीं हैं)। मैं उस एक चर के आधार पर 3 क्लस्टर बनाना चाहता हूं।

कौन सा क्लस्टरिंग एल्गोरिदम का उपयोग करने के लिए, k- साधन, EM, DBSCAN आदि?

मेरा मुख्य प्रश्न यह है कि, किन परिस्थितियों में मुझे k- साधनों का उपयोग EM या EM के k- साधनों के ऊपर करना चाहिए?


1
EM एल्गोरिथ्म लापता डेटा के साथ अधिकतम संभावना आकलन करने के लिए एक सामान्य उद्देश्य उपकरण है - क्या आप इसके बारे में अधिक विशिष्ट हो सकते हैं कि यह "क्लस्टरिंग एल्गोरिथ्म" कैसे है?
मैक्रो

मैं एक उपकरण के रूप में वीका का उपयोग कर रहा हूं, और क्लस्टरिंग एल्गोरिथ्म के तहत, ईएम को एक एल्गोरिथ्म के रूप में सूचीबद्ध किया गया है। मुझे लंगड़ा सवाल के लिए खेद है, मैं डेटा-माइनिंग में नया हूं।
अली

मुझे पता है कि ईएम एल्गोरिथ्म का उपयोग अव्यक्त चर मॉडल के लिए अधिकतम संभावना अनुमान लगाने के लिए किया जाता है (जिसे "लापता डेटा" के रूप में सोचा जा सकता है) और अव्यक्त चर अक्सर मॉडल क्लस्टरिंग के लिए उपयोग किया जाता है। शायद इसका मतलब यही है।
मैक्रो

@ मकारो: आप यहाँ एक नज़र रखना चाहते हैं: एक शुरुआत के लिए stat.washington.edu/mclust
user603

3
क्लस्टरिंग का उद्देश्य क्या है? अधिकांश सांख्यिकीय प्रश्नों के साथ, कई उत्तर हैं और उद्देश्य जानना उचित या अच्छे लोगों का चयन करने के लिए एक आवश्यक मार्गदर्शिका है।
whuber

जवाबों:


11

K- साधन एल्गोरिथ्म और EM एल्गोरिथ्म 1D क्लस्टरिंग के लिए बहुत समान होने जा रहे हैं।

K- साधनों में आप एक अनुमान के साथ शुरू करते हैं जहां साधन हैं और निकटतम बिंदु के साथ प्रत्येक बिंदु को क्लस्टर पर असाइन करते हैं, फिर आप बिंदुओं के वर्तमान असाइनमेंट के आधार पर साधन (और संस्करण) को फिर से जोड़ते हैं, फिर बिंदुओं को आत्मसात करें, फिर अपडेट करें उपाय ...

ईएम में आप एक अनुमान के साथ भी शुरू करेंगे जहां साधन हैं, फिर आप असाइनमेंट के अपेक्षित मान की गणना करते हैं (अनिवार्य रूप से प्रत्येक क्लस्टर में प्रत्येक बिंदु की संभावना), फिर आप अनुमानित मूल्यों का उपयोग करके अनुमानित साधनों (और संस्करण) को अपडेट करते हैं। वजन के रूप में, फिर नए अपेक्षित मूल्यों की गणना करें, फिर नए साधनों की गणना करें, ...

प्राथमिक अंतर यह है कि K- साधनों में गुच्छों को अंकों का असाइनमेंट एक या कुछ भी नहीं है, जहां ईएम समूह सदस्यता की अनुपात / संभावना देता है (एक बिंदु को समूह ए में 80% होने की संभावना के रूप में देखा जा सकता है, 18% संभावना समूह बी में होने की, और समूह सी में होने की 2% संभावना)। यदि समूहों के बीच बहुत अधिक अलगाव है तो 2 विधियां काफी समान परिणाम देने वाली हैं। लेकिन अगर ओवरलैप की उचित मात्रा है तो ईएम शायद अधिक सार्थक परिणाम देगा (इससे भी अधिक अगर विचरण / मानक विचलन ब्याज का है)। लेकिन अगर आप परवाह करते हैं कि मापदंडों के बारे में परवाह किए बिना समूह सदस्यता प्रदान कर रहा है, तो के-साधन संभवतः सरल है।

दोनों क्यों नहीं करते और देखते हैं कि उत्तर कितने अलग हैं? यदि वे समान हैं, तो सरल के साथ जाएं, यदि वे अलग हैं तो समूह की तुलना डेटा और बाहरी ज्ञान से करने का निर्णय लें।


धन्यवाद, आपके पोस्ट ने मदद की, मैंने दोनों को लागू किया और ऐसा प्रतीत होता है कि EM ने k-mean से बेहतर क्लस्टर बनाए हैं। (मुझे लगता है कि इसका मुख्य कारण यह है कि मेरे पास जो डेटा है वह निरंतर है और कोई अंतराल नहीं है)। मैं थोड़ा भ्रमित हूं, क्योंकि मेरे पास केवल 1D डेटा है, तो मुझे संभवतः डेटा को श्रेणीबद्ध करने के लिए बिनिंग करना चाहिए। तुम क्या सोचते हो? मापदंडों से आपका वास्तव में क्या मतलब है? क्या यह एक उदाहरण की विशेषताओं को संदर्भित करता है? धन्यवाद अली
अली

अकेले EM EM अपर्याप्त लगता है। आपको मिश्रण के अंतर्निहित वितरण के वितरण पर एक धारणा की आवश्यकता है।
टॉमका

2

परिणामों के संदर्भ में EM, k- साधनों से बेहतर है।

K- साधन, हालांकि, एक तेज रन-टाइम है।

यदि मानक विचलन / सहसंयोजक मैट्रिक्स लगभग समान हैं, तो वे समान परिणाम देंगे। यदि आपको संदेह है कि यह सच है, तो k- साधनों का उपयोग करें।

DBSCAN का उपयोग तब किया जाता है जब डेटा गैर-गाऊसी होता है। यदि आप 1-आयामी डेटा का उपयोग कर रहे हैं, तो यह आमतौर पर लागू नहीं होता है, क्योंकि एक गॉसियन सन्निकटन आमतौर पर 1 आयाम में मान्य होता है।


0

एक और सरल तरीका मूल रूप से 1 डी सरणी की छंटाई का उपयोग करना है: अर्थात प्रत्येक बिंदु पर पुनरावृति और उन मूल्यों को प्राप्त करें जो सकारात्मक और नकारात्मक दोनों दिशाओं में उससे कम से कम दूरी पर हैं। उदाहरण के लिए:

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

बाहर दे देंगे:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

जो इंगित करता है, कि एक विशेष बिंदु के करीब आइटम मूल रूप से इसके समूह के तहत हैं। इस तकनीक में विचार करने के लिए एकमात्र चीज चर k है, जो क्लस्टर का निश्चित आकार है :-)।


-2

यदि केवल एक चर है, तो क्लस्टरिंग की कोई आवश्यकता नहीं है। आप चर के वितरण के आधार पर अपनी टिप्पणियों को आसानी से समूहित कर सकते हैं।

या मैं यहां कुछ बिंदुओं को याद कर रहा हूं?


5
क्या आप एक विशिष्ट उदाहरण दे सकते हैं कि चर के वितरण के आधार पर टिप्पणियों का समूह कैसे बनाया जाए?
अली

@ कंपोजर 314: हिस्टोग्राम के साथ?
निको

1
मुझे क्षमा करें, लेकिन मैं अभी भी पीछा नहीं कर रहा हूं। मैं समूह से संबंधित टिप्पणियों के लिए हिस्टोग्राम का उपयोग कैसे कर सकता हूं? (मुझे लगता है कि मैं जो सवाल पूछ रहा हूं वह वास्तव में है कि हिस्टोग्राम के भीतर कोई कैसे गुच्छों को ढूंढता है? क्या यह वर्णक्रमीय चोटी उठाने के समान होगा?)
अली 16

5
@composer हिस्टोग्राम का उपयोग करना या यहां तक कि एक चिकनी कर्नेल का डेटा आमतौर पर है नहीं क्लस्टर के लिए एक "आसान" जिस तरह से। यदि आप इस तरह से जाना चाहते हैं, तो आपको एक परिमित मिश्रण मॉडल फिट करने की आवश्यकता है । यदि आप अभी चाहते हैं कि हिस्टोग्राम का एक आकस्मिक दृश्य क्या सुझाव दे सकता है, तो के- मीन्स (कार्टनोग्राफर्स के बीच लोकप्रिय जेनक्स विधि के रूप में भी जाना जाता है ) का उपयोग करें।
whuber
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.