कोर्स

प्रेरणा
कल्पना कीजिए कि आप एक रिटेल कंपनी में डेटा साइंटिस्ट हैं। आपके बॉस आपसे ग्राहकों को उनके खर्च करने के व्यवहार के आधार पर लक्षित मार्केटिंग और प्रोडक्ट सिफारिशों के लिए निम्नलिखित समूहों में विभाजित करने के लिए कहते हैं: लो, एवरेज, मीडियम या प्लेटिनम ग्राहक।
यह जानते हुए कि इन ग्राहकों से जुड़ा कोई ऐतिहासिक लेबल मौजूद नहीं है, उन्हें वर्गीकृत करना कैसे संभव है?
यहीं पर क्लस्टरिंग मदद करती है। यह एक अनसुपरवाइज्ड मशीन लर्निंग तकनीक है जो बिना लेबल वाले डेटा को समान श्रेणियों में समूहित करती है।
यह ट्यूटोरियल अनसुपरवाइज्ड मशीन लर्निंग की कई तकनीकों में से एक, हायरार्किकल क्लस्टरिंग पर केंद्रित रहेगा। यह पहले बताएगा कि हायरार्किकल क्लस्टरिंग क्या है, और फिर इसे कुछ मौजूदा तकनीकों से तुलना करेगा।
इसके बाद, यह लोकप्रिय Scipy लाइब्रेरी का उपयोग करते हुए Python में चरण-दर-चरण इम्प्लीमेंटेशन से आपको रूबरू कराएगा।
हायरार्किकल क्लस्टरिंग की परिभाषा
हायरार्किकल क्लस्टरिंग दृष्टिकोण पहले से बने क्लस्टरों के आधार पर क्रमिक क्लस्टरों के निर्धारण पर आधारित है। इसका लक्ष्य डेंड्रोग्राम कहलाने वाले क्लस्टरों के ट्री में डेटा को समूहित करना है, जो अंतर्निहित क्लस्टरों के बीच हायरार्की संबंध को ग्राफिक रूप से दर्शाता है।
अन्य क्लस्टरिंग तकनीकों की तुलना में हायरार्किकल क्लस्टरिंग
हायरार्किकल क्लस्टरिंग एक शक्तिशाली एल्गोरिद्म है, लेकिन यह अकेली तकनीक नहीं है, और हर प्रकार की क्लस्टरिंग के अपने फायदे और सीमाएँ होती हैं।
आइए समझते हैं कि यह K-means और मॉडल-आधारित क्लस्टरिंग जैसी अन्य तकनीकों से कैसे तुलना करती है। और भी कई तकनीकें हैं, लेकिन ये दो, हायरार्किकल क्लस्टरिंग के साथ, व्यापक रूप से उपयोग होती हैं और दूसरों को बेहतर समझने के लिए ढांचा प्रदान करती हैं।
आप हमारे अलग लेख में मशीन लर्निंग में क्लस्टरिंग के बारे में अधिक जान सकते हैं, जिसमें पाँच आवश्यक क्लस्टरिंग एल्गोरिद्म कवर किए गए हैं।
हायरार्किकल क्लस्टरिंग बनाम K-means क्लस्टरिंग
हायरार्किकल क्लस्टरिंग के विपरीत, K-means क्लस्टरिंग मूल डेटा बिंदुओं को “K” समूहों या क्लस्टरों में विभाजित करना चाहती है जहाँ उपयोगकर्ता पहले से “K” निर्दिष्ट करता है।
सामान्य विचार यह है कि ऐसे क्लस्टर खोजे जाएँ जो सभी विशेषताओं (वेरिएबल्स या फीचर्स) पर केंद्रों से सभी बिंदुओं की स्क्वायर्ड यूक्लिडियन दूरी को न्यूनतम करें और उन व्यक्तियों को क्रमिक रूप से मर्ज करें।
हमारा Scikit-learn के साथ Python में K-means क्लस्टरिंग ट्यूटोरियल एक दिलचस्प केस स्टडी के साथ K-means के आंतरिक कामकाज को समझने में आपकी मदद करेगा।
फायदे
- यह हायरार्किकल क्लस्टरिंग की तुलना में संगणनात्मक रूप से अधिक दक्ष है और बड़े डेटा सेट का विश्लेषण करने में काम आ सकता है।
- K-means समझने और लागू करने में आसान है।
कमियाँ
- यह हायरार्किकल क्लस्टरिंग की तुलना में कम लचीला है क्योंकि यह उपयोगकर्ता को पहले से क्लस्टरों की संख्या बताने के लिए बाध्य करता है, जो कुछ स्थितियों में स्पष्ट नहीं होता।
- परिणाम स्थिर नहीं होते और एक ही डेटा सेट के लिए एक इटरेशन से दूसरे में बदल सकते हैं।
- यह आउट्लायर्स के प्रति अधिक संवेदनशील है क्योंकि डेटा में आउट्लायर का उपयोग क्लस्टर के mean को प्रभावित करता है।
- k-means और हायरार्किकल क्लस्टरिंग, दोनों श्रेणीबद्ध (categorical) डेटा को सीधे संभालने में सक्षम नहीं हैं और असतत या बहुत अधिक वैरिएंस वाले डेटा पर अच्छा काम नहीं कर सकते।
सीमाओं के बावजूद, K-means उपयोग में सरलता और संगणनात्मक दक्षता के कारण अब भी लोकप्रिय विधि है। अन्य क्लस्टरिंग तकनीकों के प्रदर्शन की तुलना करने के लिए इसे अक्सर एक संदर्भ बिंदु के रूप में उपयोग किया जाता है।
मॉडल-आधारित क्लस्टरिंग
K-means और हायरार्किकल क्लस्टरिंग दोनों तकनीकें डेटा सेट के सभी बिंदुओं के बीच की दूरी को दर्शाने के लिए दूरी मैट्रिक्स का उपयोग करती हैं। दूसरी ओर, मॉडल-आधारित क्लस्टरिंग डेटा में क्लस्टरों की पहचान करने के लिए सांख्यिकीय तकनीकों को लागू करती है। सामान्य प्रक्रिया नीचे दी गई है:
- कौन सा सांख्यिकीय मॉडल उपयोग करना है तय करें और क्लस्टरों की संख्या चुनें।
- मॉडल को डेटा पर फिट करें।
- मॉडल पैरामीटर्स के आधार पर क्लस्टरों की पहचान करें।
फायदे
- मॉडल-आधारित क्लस्टरिंग हायरार्किकल क्लस्टरिंग से अधिक लचीली है क्योंकि यह विभिन्न प्रकार के क्लस्टरों की पहचान के लिए अलग-अलग मॉडल उपयोग करने देती है।
- यह जटिल आकार या संरचना वाले डेटा पर बेहतर काम करती है।
कमियाँ
- यह विशेषकर बड़े डेटा के लिए, हायरार्किकल क्लस्टरिंग की तुलना में संगणनात्मक रूप से अधिक महँगी है।
- सांख्यिकीय मॉडलिंग तकनीकों की बेहतर समझ की आवश्यकता होती है क्योंकि मॉडल के चुनाव से अंतिम परिणाम प्रभावित हो सकता है।
- K-means की तरह, इसमें भी पहले से क्लस्टरों की संख्या बतानी पड़ती है।
हायरार्किकल क्लस्टरिंग के उपयोग
हायरार्किकल क्लस्टरिंग के हमारे रोज़मर्रा के जीवन में कई उपयोग हैं, जिनमें (लेकिन इन्हीं तक सीमित नहीं) जीवविज्ञान, इमेज प्रोसेसिंग, मार्केटिंग, अर्थशास्त्र और सोशल नेटवर्क विश्लेषण शामिल हैं।
जीवविज्ञान
DNA सीक्वेंसेज़ का क्लस्टरिंग बायोइन्फॉर्मेटिक्स की सबसे बड़ी चुनौतियों में से एक है।
जीवविज्ञानी, जीवों के बीच आनुवंशिक संबंधों का अध्ययन करने और उन्हें वर्गीकरण (टैक्सोनोमिक) समूहों में बाँटने के लिए हायरार्किकल क्लस्टरिंग का लाभ उठा सकते हैं। यह अंतर्निहित संबंधों के त्वरित विश्लेषण और विज़ुअलाइज़ेशन के लिए उपयोगी है।
इमेज प्रोसेसिंग
इमेज प्रोसेसिंग में, किसी इमेज के समान क्षेत्रों या पिक्सेल्स को रंग, तीव्रता, या अन्य फीचर्स के आधार पर समूहित करने के लिए हायरार्किकल क्लस्टरिंग की जा सकती है। यह इमेज सेगमेंटेशन, इमेज वर्गीकरण और ऑब्जेक्ट रिकग्निशन जैसे आगे के कार्यों में उपयोगी हो सकता है।
मार्केटिंग
मार्केटिंग विशेषज्ञ ग्राहकों की खरीदारी आदतों के आधार पर विभिन्न प्रकार के ग्राहकों के बीच हायरार्की बनाने के लिए हायरार्किकल क्लस्टरिंग का उपयोग कर सकते हैं, जिससे बेहतर मार्केटिंग रणनीतियाँ और प्रोडक्ट सिफारिशें की जा सकें। उदाहरण के लिए, रिटेल्स में अलग-अलग उत्पादों की सिफारिश इस आधार पर की जा सकती है कि ग्राहक लो, मीडियम या हाई स्पेंडर हैं।
सोशल नेटवर्क विश्लेषण
सोशल नेटवर्क, यदि कुशलता से उपयोग किए जाएँ, तो मूल्यवान जानकारी का बेहतरीन स्रोत हैं। हायरार्किकल क्लस्टरिंग का उपयोग समूहों या समुदायों की पहचान करने और उनके आपसी संबंधों तथा पूरे नेटवर्क की संरचना को समझने के लिए किया जा सकता है।
हायरार्किकल क्लस्टरिंग एल्गोरिद्म
इस खंड में हम तीन मुख्य अवधारणाएँ देखेंगे: हायरार्किकल एल्गोरिद्म के चरण, हायरार्किकल क्लस्टरिंग के दो प्रकार (अग्लोमरेटिव और डिवाइसिव) की झलक, और अंत में, सही दूरी माप चुनने की कुछ तकनीकें।
हायरार्किकल क्लस्टरिंग एल्गोरिद्म में शामिल चरण
हायरार्किकल क्लस्टरिंग एल्गोरिद्म, क्लस्टर जनरेट करने के लिए दूरी मापों का उपयोग करता है। यह जनरेशन प्रक्रिया निम्नलिखित मुख्य चरणों में होती है:

डेटा की प्रीप्रोसेसिंग करें: मिसिंग डेटा हटाएँ और अन्य कोई भी कार्य करें जिससे डेटा यथासंभव साफ हो। यह चरण अधिकांश मशीन लर्निंग कार्यों के लिए सामान्य है।
1. किसी विशेष दूरी मीट्रिक जैसे यूक्लिडियन दूरी, मैनहैटन दूरी, या कोसाइन समानता का उपयोग करके प्रत्येक जोड़ी डेटा बिंदुओं के बीच दूरी वाली दूरी मैट्रिक्स की गणना करें। डिफ़ॉल्ट दूरी मीट्रिक यूक्लिडियन है।
2. वे दो क्लस्टर मर्ज करें जो दूरी में सबसे नज़दीक हैं।
3. नए क्लस्टरों के अनुसार दूरी मैट्रिक्स अपडेट करें।
4. चरण 1, 2 और 3 दोहराएँ जब तक कि सभी क्लस्टर मिलकर एक एकल क्लस्टर न बना लें।
हायरार्किकल क्लस्टरिंग के उदाहरण
हम अग्लोमरेटिव और डिवाइसिव क्लस्टरिंग को एक-दूसरे का प्रतिबिंब मान सकते हैं। आइए प्रत्येक के काम करने का तरीका एक उदाहरण और ग्राफिकल विज़ुअलाइज़ेशन के साथ बेहतर समझें।
अग्लोमरेटिव हायरार्किकल क्लस्टरिंग
यह पहला परिदृश्य ऊपर समझाए गए दृष्टिकोण से मेल खाता है। यह प्रत्येक ऑब्ज़र्वेशन को एक सिंगलटन क्लस्टर (केवल एक डेटा बिंदु वाला क्लस्टर) मानकर शुरू होता है। फिर क्रमिक रूप से क्लस्टरों को मर्ज करता है जब तक कि केवल एक क्लस्टर न रह जाए। इस प्रक्रिया को बॉटम-अप अप्रोच भी कहते हैं।
नीचे दिए गए चित्रण में जैसा दिखाया गया है:
- हम प्रत्येक जानवर को उसके अपने अनोखे क्लस्टर के रूप में मानकर शुरू करते हैं।
- फिर हम समानताओं के आधार पर उन विशिष्ट जानवरों से तीन अलग-अलग क्लस्टर बनाते हैं:
- पक्षी: ईगल और पीकॉक
- स्तनधारी: लायन और बेयर
- तीन से अधिक टांगों वाले: स्पाइडर और स्कॉर्पियन।
- हम मर्जिंग प्रक्रिया को दोहराते हैं और सबसे मिलते-जुलते दो क्लस्टरों, पक्षी और स्तनधारी, को मिलाकर वर्टीब्रेट क्लस्टर बनाते हैं।
- इसके बाद, शेष दो क्लस्टर, वर्टीब्रेट और तीन से अधिक टांगें, को मिलाकर एक एकल एनिमल्स क्लस्टर बनाया जाता है।

अग्लोमरेटिव क्लस्टरिंग अप्रोच का डेंड्रोग्राम
डिवाइसिव क्लस्टरिंग
दूसरी ओर, डिवाइसिव क्लस्टरिंग टॉप-डाउन होती है क्योंकि यह सभी डेटा बिंदुओं को एक अनोखे क्लस्टर के रूप में मानकर शुरू होती है। फिर उन्हें अलग करती है, जब तक कि सभी डेटा बिंदु अपने-अपने अनोखे न हो जाएँ।
इस डिवाइसिव अप्रोच के ग्राफिक से:
- हम देखते हैं कि पूरा जानवर डेटा सेट एक एकल ब्लॉक माना गया है।
- फिर हम उस ब्लॉक को दो क्लस्टरों में बाँटते हैं: वर्टीब्रेट और 3 से अधिक टांगें।
- विभाजन प्रक्रिया को पहले बनाए गए क्लस्टरों पर क्रमिक रूप से लागू किया जाता है जब तक कि हमें अनोखे जानवर न मिल जाएँ।

डिवाइसिव क्लस्टरिंग अप्रोच का डेंड्रोग्राम
सही दूरी माप का चयन
दूरी माप का चुनाव क्लस्टरिंग में एक निर्णायक कदम है और यह आपके समस्या-परिवेश पर निर्भर करता है। निम्न परिदृश्य पर विचार करें: हम छात्रों को कई तरीकों से क्लस्टर कर सकते हैं, जैसे उनके:
- मूल देश
- लिंग, पुरुष या महिला
- पूर्व शैक्षणिक पृष्ठभूमि
ये सभी मान्य क्लस्टर हैं, लेकिन अर्थ में भिन्न हैं।
भले ही यूक्लिडियन दूरी अधिकांश क्लस्टरिंग सॉफ़्टवेयर में सबसे सामान्य दूरी है, अन्य दूरी माप भी मौजूद हैं, जैसे मैनहैटन दूरी, कैनबरा दूरी, पीयरसन या स्पीयरमैन सहसंबंध, और मिंकॉव्स्की दूरी।
क्लस्टरों को मर्ज करने से पहले उन्हें कैसे मापा जाए
उपरोक्त दूरी आइटम्स से संबंधित हैं। इस खंड में, हम क्लस्टरों के निकटतम जोड़े को मर्ज करने से पहले मापने के तीन मानक तरीकों (सम्पूर्ण सूची नहीं) को कवर करेंगे: (1) सिंगल लिंकेंज, (2) कम्प्लीट लिंकेंज, और (3) एवरेज लिंकेंज।
सिंगल लिंकेंज
दो क्लस्टर C1 और C2 में आइटम्स के बीच सभी पेयरवाइज दूरियों में से, सिंगल लिंकेंज क्लस्टरों के बीच दूरी को न्यूनतम दूरी मानता है।
Distance (C1, C2) = Min { d(i, j), जहाँ आइटम i C1 में है, और आइटम j C2 में है}
दोनों क्लस्टरों के आइटम जोड़ों में से, हरे रंग से हाइलाइट किए गए जोड़े की दूरी न्यूनतम है।

सिंगल लिंकेंज का चित्रण
कम्प्लीट लिंकेंज
दो क्लस्टर C1 और C2 में आइटम्स के बीच सभी पेयरवाइज दूरियों में से, कम्प्लीट लिंकेंज क्लस्टरों के बीच दूरी को अधिकतम दूरी मानता है।
Distance (C1, C2) = Max { d(i, j), जहाँ आइटम i C1 में है, और आइटम j C2 में है}
दोनों क्लस्टरों के आइटम जोड़ों में से, हरे रंग से हाइलाइट किए गए जोड़ों की दूरी अधिकतम है।

कम्प्लीट लिंकेंज का चित्रण
एवरेज लिंकेंज
एवरेज लिंकेंज क्लस्टरिंग में, दो दिए गए क्लस्टर C1 और C2 के बीच दूरी, दोनों क्लस्टरों के सभी आइटम जोड़ों के बीच दूरियों के औसत के अनुरूप होती है।
Distance (C1, C2) = Sum{ d(i, j) } / Total Number of distances

एवरेज लिंकेंज का चित्रण
फिर एवरेज लिंकेंज क्लस्टरिंग इस प्रकार की जाती है
d(a,j) + d(a,h) + d(a,n) + d(d,j) + d(d,h) + d(d,n)
—-----------------------------------------------------------, जहाँ कुल दूरियों की संख्या = 6
कुल दूरियों की संख्या
Python में हायरार्किकल क्लस्टरिंग लागू करना
अब आपको समझ आ गया है कि हायरार्किकल क्लस्टरिंग कैसे काम करती है। इस खंड में, हम Python का उपयोग करते हुए तकनीकी इम्प्लीमेंटेशन पर ध्यान देंगे।
यदि आप R प्रोग्रामिंग लैंग्वेज के साथ इम्प्लीमेंटेशन करना अधिक पसंद करते हैं, तो हमारा R में हायरार्किकल क्लस्टरिंग ट्यूटोरियल आरंभ करने के लिए सही स्थान है।
एंवायरनमेंट सेट करना
शुरू करने के लिए, आपके कंप्यूटर पर Python इंस्टॉल होना चाहिए, साथ ही निम्नलिखित लाइब्रेरीज़:
- Pandas, डेटा फ्रेम लोड करने के लिए।
- Scikit-learn, डेटा नॉर्मलाइज़ेशन करने के लिए।
- Seaborn और matplotlib, विज़ुअलाइज़ेशन के लिए।
- Scipy, क्लस्टरिंग लागू करने के लिए।
आप इन लाइब्रेरीज़ को Python पैकेज मैनेजर pip से इस प्रकार इंस्टॉल कर सकते हैं:
pip install scikit-learn
pip install pandas
pip install matplotlib seaborn
pip install scipy
अगला कदम आवश्यक मॉड्यूल्स इम्पोर्ट करना और डेटा सेट लोड करना है। हम scikit-learn के बिल्ट-इन iris डेटा सेट का उपयोग करेंगे, जिसमें अलग-अलग प्रकार के iris फूलों की जानकारी है।
उपयोग-केंद्र को बेहतर ढंग से दर्शाने के लिए, हम DataLab पर उपलब्ध Loan Data का उपयोग करेंगे। इस ट्यूटोरियल का सारा कोड इस DataLab वर्कबुक में उपलब्ध है; आप आसानी से इसकी एक प्रति बना सकते हैं और अपने ब्राउज़र में कोड चला सकते हैं, बिना अपने कंप्यूटर पर कोई सॉफ़्टवेयर इंस्टॉल किए।
डेटा को समझना
डेटा सेट में 9,500 लोन हैं जिनमें लोन की संरचना, उधारकर्ता और लोन पूरी तरह चुकाया गया या नहीं, से जुड़ी जानकारी है। अनसुपरवाइज्ड पहलू बनाए रखने के लिए हम लक्ष्य कॉलम not.fully.paid को हटा देंगे।
import pandas as pd
loan_data = pd.read_csv("loan_data.csv")
loan_data.head()
लोड डेटा की पहली पाँच पंक्तियाँ
निम्न निर्देश दिखाता है कि डेटा में 9,578 पंक्तियाँ और 14 कॉलम हैं, जिनमें से सभी संख्यात्मक प्रकार के हैं, सिवाय purpose के, जो object है और लोन के उद्देश्य का टेक्स्ट विवरण देता है।
loan_data.info()
डेटा के बारे में जानकारी
डेटा की प्रीप्रोसेसिंग
क्लस्टरिंग लागू करने से पहले, डेटा को प्रीप्रोसेस करना ज़रूरी है ताकि मिसिंग जानकारी से निपटा जा सके, कॉलम मानों को नॉर्मलाइज़ किया जा सके और अप्रासंगिक कॉलम हटाए जा सकें।
मिसिंग वैल्यू से निपटना
नीचे के आउटपुट से हमें पता चलता है कि डेटा में कोई मिसिंग वैल्यू नहीं है।
percent_missing =round(100*(loan_data.isnull().sum())/len(loan_data),2)
percent_missing
डेटा में मिसिंग वैल्यू का प्रतिशत
अनचाहे कॉलम हटाएँ
हम निम्नलिखित को छोड़कर सभी कॉलम का उपयोग करके लोन डेटा का विश्लेषण करेंगे:
- Purpose
- Not.fully.paid, क्योंकि यह लेबल है जो बताता है कि उधारकर्ता ने पूरा भुगतान किया या नहीं।
cleaned_data उपरोक्त कॉलमों के बिना डेटा के अनुरूप है।
cleaned_data = loan_data.drop(['purpose', 'not.fully.paid'], axis=1)
cleaned_data.info()
नीचे दी गई इमेज नए डेटा की जानकारी दिखाती है।

अनचाहे कॉलम के बिना नया डेटा
आउट्लायर्स विश्लेषण
हायरार्किकल क्लस्टरिंग की कमजोरियों में से एक यह है कि यह आउट्लायर्स के प्रति संवेदनशील है। प्रत्येक वेरिएबल का वितरण बॉक्सप्लॉट द्वारा दिया गया है।
def show_boxplot(df):
plt.rcParams['figure.figsize'] = [14,6]
sns.boxplot(data = df, orient="v")
plt.title("Outliers Distribution", fontsize = 16)
plt.ylabel("Range", fontweight = 'bold')
plt.xlabel("Attributes", fontweight = 'bold')
show_boxplot(cleaned_data)

डेटा में सभी वेरिएबल्स का बॉक्सप्लॉट
उधारकर्ता का रिवॉल्विंग बैलेंस (revol_bal) अकेला ऐसा एट्रिब्यूट है जिसके डेटा बिंदु बाकी से बहुत दूर हैं।
इंटरक्वार्टाइल रेंज (IQR) विधि का उपयोग करके, हम ऐसे सभी बिंदुओं को हटा सकते हैं जो क्वारटाइल्स +/- 1.5 * IQR द्वारा परिभाषित रेंज के बाहर होते हैं, जहाँ IQR इंटरक्वार्टाइल रेंज है।
यह निम्न हेल्पर फ़ंक्शन से हासिल किया जाता है।
def remove_outliers(data):
df = data.copy()
for col in list(df.columns):
Q1 = df[str(col)].quantile(0.05)
Q3 = df[str(col)].quantile(0.95)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5*IQR
upper_bound = Q3 + 1.5*IQR
df = df[(df[str(col)] >= lower_bound) &
(df[str(col)] <= upper_bound)]
return df
फिर, हम इस फ़ंक्शन को डेटा सेट पर लागू कर सकते हैं।
without_outliers = remove_outliers(cleaned_data)
अब हम नया बॉक्सप्लॉट देख सकते हैं और इसे आउट्लायर्स हटाने से पहले वाले से तुलना कर सकते हैं।
show_boxplot(without_outliers)

अब इंटरक्वार्टाइल रेंज के बाहर कोई डेटा बिंदु नहीं है।
without_outliers.shape
डेटा का आकार अब 9,319 पंक्तियाँ और 12 कॉलम है। इसका मतलब 259 ऑब्ज़र्वेशंस आउट्लायर थे, जिन्हें हटा दिया गया है।
डेटा को रिस्केल करें
चूँकि हायरार्किकल क्लस्टरिंग यूक्लिडियन दूरी का उपयोग करती है, जो अलग-अलग स्केल वाले वेरिएबल्स के प्रति बहुत संवेदनशील है, इसलिए दूरी की गणना से पहले सभी वेरिएबल्स को रिस्केल करना उचित है।
यह sklearn के StandardScaler क्लास का उपयोग करके किया जाता है।
from sklearn.preprocessing import StandardScaler
data_scaler = StandardScaler()
scaled_data = data_scaler.fit_transform(without_outliers)
scaled_data.shape
डेटा का आकार वही रहता है (9,319 पंक्तियाँ, 12 कॉलम) क्योंकि नॉर्मलाइज़ेशन डेटा के आकार को प्रभावित नहीं करता।
हायरार्किकल क्लस्टरिंग एल्गोरिद्म लागू करना
अब क्लस्टरिंग एल्गोरिद्म की इम्प्लीमेंटेशन में गहराई से जाने के लिए सभी आवश्यकताएँ पूरी हो चुकी हैं।
इस बिंदु पर, हम linkage() मेथड के method एट्रिब्यूट में यह तय कर सकते हैं कि क्लस्टरिंग के लिए कौन-सा लिंकेंज दृष्टिकोण अपनाना है। इस खंड में, हम यूक्लिडियन दूरी का उपयोग करते हुए सभी तीन लिंकेंज तकनीकों को कवर करेंगे।
संबंधित लाइब्रेरीज़ इम्पोर्ट करने के बाद, यह निम्न कोड से हासिल किया जाता है।
from scipy.cluster.hierarchy import linkage, dendrogram
complete_clustering = linkage(scaled_data, method="complete", metric="euclidean")
average_clustering = linkage(scaled_data, method="average", metric="euclidean")
single_clustering = linkage(scaled_data, method="single", metric="euclidean")
एक बार जब हम तीनों क्लस्टरिंग्स की गणना कर लेते हैं, तो उनके अनुरूप डेंड्रोग्राम इस प्रकार दिखाए जाते हैं, कम्प्लीट क्लस्टरिंग से शुरू करते हुए:
dendrogram(complete_clustering)
plt.show()

कम्प्लीट क्लस्टरिंग अप्रोच का डेंड्रोग्राम
dendrogram(average_clustering)
plt.show()

एवरेज क्लस्टरिंग अप्रोच का डेंड्रोग्राम
dendrogram(single_clustering)
plt.show()

सिंगल क्लस्टरिंग अप्रोच का डेंड्रोग्राम
परिणामों की व्याख्या (डेंड्रोग्राम का विज़ुअलाइज़ेशन, क्लस्टरों की संख्या निर्धारित करना)
प्रत्येक लिंकेंज अप्रोच के लिए, डेंड्रोग्राम कैसे बनता है और हर डेटा बिंदु अंततः एक ही क्लस्टर में कैसे आ जाता है, यह दर्शता है।
- डेंड्रोग्राम का x-अक्ष डेटा में सैंपल्स को दर्शाता है।
- y-अक्ष उन सैंपल्स के बीच दूरी दर्शाता है। रेखा जितनी ऊँची होगी, वे सैंपल/क्लस्टर उतने ही असमान होंगे।
- हम उपयुक्त क्लस्टरों की संख्या उस सबसे ऊँची वर्टिकल लाइन पर क्षैतिज रेखा खींचकर पाते हैं, और इंटरसेक्शनों की संख्या क्लस्टरों की संख्या के अनुरूप होती है।
सर्वोत्तम क्लस्टरों की संख्या उस सबसे ऊँची वर्टिकल लाइन की पहचान करके प्राप्त की जा सकती है, जिसका अन्य क्लस्टरों (हॉरिज़ॉन्टल लाइन) से कोई इंटरसेक्शन न हो। नीचे ऐसी ही एक रेखा को लाल वृत्त और हरे निशान से दर्शाया गया है।
- कम्प्लीट लिंकेंज के लिए, यह दाईं ओर नीली रेखा है, और यह तीन क्लस्टर जनरेट करती है।

सबसे अधिक दूरी से, बिना इंटरसेक्शन के, सर्वोत्तम क्लस्टरों की संख्या (कम्प्लीट लिंकेंज)
- एवरेज लिंकेंज के लिए, यह पहली नीली वर्टिकल लाइन है, और यह दो क्लस्टर जनरेट करती है।

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

बिना इंटरसेक्शन के, सबसे अधिक दूरी से सर्वोत्तम क्लस्टरों की संख्या (सिंगल लिंकेंज)
ऊपर के अवलोकनों से, एवरेज लिंकेंज वह प्रतीत होती है जो सबसे अच्छा क्लस्टरिंग देती है, जबकि सिंगल और कम्प्लीट लिंकेंज क्रमशः एक और तीन क्लस्टर सुझाते हैं। साथ ही, दो का सर्वोत्तम क्लस्टर संख्या हमारे डेटा सेट के पूर्वज्ञान के अनुरूप है, यानी उधारकर्ताओं के दो प्रकार।
अब जब हमने सर्वोत्तम क्लस्टरों की संख्या खोज ली है, तो उधारकर्ता के क्रेडिट स्कोर के आधार पर देखते हैं कि इन क्लस्टरों का क्या अर्थ है।
cluster_labels = cut_tree(average_clustering, n_clusters=2).reshape(-1, )
without_outliers["Cluster"] = cluster_labels
sns.boxplot(x='Cluster', y='fico', data=without_outliers)

ऊपर दिए गए बॉक्सप्लॉट से हम देख सकते हैं कि:
- क्लस्टर 0 के उधारकर्ताओं के क्रेडिट स्कोर सबसे अधिक हैं।
- जबकि क्लस्टर 1 के उधारकर्ताओं के क्रेडिट स्कोर कम हैं।
Python में क्लस्टर विश्लेषण Scipy लाइब्रेरी का उपयोग करते हुए K-means और हायरार्किकल क्लस्टरिंग में गहराई से जाने के लिए अगला अच्छा कदम हो सकता है।
निष्कर्ष
इस लेख में हायरार्किकल क्लस्टरिंग क्या है, उसके फायदे और कमजोरियाँ, और यह K-means और मॉडल-आधारित क्लस्टरिंग की तुलना में कैसी है, कवर किया गया है।
हमें आशा है कि यह लेख आपको अपने बिना लेबल वाले डेटा को प्रभावी ढंग से क्लस्टर करने और निर्णय लेने में सहायक अंतर्दृष्टियाँ प्राप्त करने के लिए प्रासंगिक कौशल प्रदान करता है।
हायरार्किकल क्लस्टरिंग FAQs
आप सही क्लस्टरों की संख्या कैसे चुनते हैं?
हायरार्किकल क्लस्टरिंग में, सही क्लस्टरों की संख्या डेंड्रोग्राम से इस तरह निर्धारित की जा सकती है कि वह सबसे ऊँची वर्टिकल लाइन पहचानी जाए जिसका अन्य क्लस्टरों से कोई इंटरसेक्शन न हो।
हायरार्किकल क्लस्टरिंग में श्रेणीबद्ध डेटा को कैसे संभालें?
डिफ़ॉल्ट रूप से हायरार्किकल क्लस्टरिंग श्रेणीबद्ध (categorical) डेटा के साथ काम नहीं करती। इससे निपटने का एक तरीका यह है कि एल्गोरिद्म लागू करने से पहले उन्हें उचित संख्यात्मक फ़ॉर्मेट, जैसे वन-हॉट एनकोडिंग और ऑर्डिनल एनकोडिंग, में बदल दिया जाए।
बड़े डेटा सेट्स से कैसे निपटें?
डेटा जितना बड़ा होगा, क्लस्टरिंग का समय उतना ही अधिक होगा। अग्लोमरेटिव अप्रोच, डिवाइसिव की तुलना में तेज़ हो सकती है।
अग्लोमरेटिव इन्फॉर्मेशन बॉटलनेक (AIB) क्या है?
यह एक क्लस्टरिंग एल्गोरिद्म है जो डेटा और दी गई श्रेणियों के सेट के बीच प्रति क्लस्टर म्यूचुअल इन्फॉर्मेशन को अधिकतम करता है।
वेटेड हायरार्किकल क्लस्टरिंग क्या है?
यह हायरार्किकल क्लस्टरिंग का एक प्रकार है जो क्लस्टरिंग प्रक्रिया में प्रत्येक डेटा बिंदु के महत्व या प्रासंगिकता को दर्शाने के लिए उसे एक वेट प्रदान करता है।