डेंड्रोग्राम को काटने के लिए कहां?


60

पदानुक्रमित क्लस्टरिंग को डेंड्रोग्राम द्वारा दर्शाया जा सकता है। एक निश्चित स्तर पर एक डेंड्रोग्राम काटना क्लस्टर का एक सेट देता है। दूसरे स्तर पर काटने से क्लस्टर का एक और सेट मिलता है। डेंड्रोग्राम को काटने के लिए आप कैसे उठाएंगे? क्या कोई ऐसी चीज है जिस पर हम एक इष्टतम बिंदु पर विचार कर सकते हैं? अगर मैं समय के साथ-साथ एक डेंड्रोग्राम को देखता हूं, तो क्या मुझे उसी बिंदु पर कटौती करनी चाहिए?


मैंने भी इस समस्या के बारे में सोचा है, लेकिन (दुर्भाग्य से) अभी तक कोई ठोस जवाब नहीं मिला है। मुझे लगता है कि इसका कोई हल नहीं है। ऐसे hopack(और अन्य) R / BioC पैकेज हैं, जो क्लस्टर की संख्या का अनुमान लगा सकते हैं, लेकिन यह आपके प्रश्न का उत्तर नहीं देता है।
सनकूलसु

pvclustके लिए पैकेज Rकार्यों कि dendrogram समूहों के लिए बूटस्ट्रैप दे पी मान होते हैं, तो आप समूहों की पहचान करने की अनुमति: is.titech.ac.jp/~shimo/prog/pvclust
बेन

जवाबों:


45

कोई निश्चित जवाब नहीं है क्योंकि क्लस्टर विश्लेषण अनिवार्य रूप से एक खोजपूर्ण दृष्टिकोण है; परिणामस्वरूप पदानुक्रमित संरचना की व्याख्या संदर्भ-निर्भर है और अक्सर सैद्धांतिक दृष्टिकोण से कई समाधान समान रूप से अच्छे होते हैं।

संबंधित प्रश्न में कई सुराग दिए गए थे, एग्लोमेरेटिव पदानुक्रमित क्लस्टरिंग के लिए क्या स्टॉप-मानदंड व्यवहार में उपयोग किए जाते हैं? मैं आम तौर पर दृश्य मानदंड का उपयोग करता हूं, जैसे सिल्हूट प्लॉट, और कुछ प्रकार के संख्यात्मक मानदंड, जैसे डन की वैधता सूचकांक, ह्यूबर्ट की गामा, जी 2 / जी 3 गुणांक, या सही रैंड इंडेक्स। मूल रूप से, हम यह जानना चाहते हैं कि क्लस्टर स्पेस में ओरिजिनल डिस्टेंस मैट्रिक्स कितनी अच्छी तरह से लगा हुआ है, इसलिए कोपेनैटिक सहसंबंध का एक उपाय भी उपयोगी है। मैं कई शुरुआती मूल्यों के साथ k- साधनों का भी उपयोग करता हूं, और भीतर-एसएस को कम से कम करने वाले समूहों की संख्या निर्धारित करने के लिए अंतर सांख्यिकीय ( दर्पण )। वार्ड पदानुक्रमिक क्लस्टरिंग के साथ समरूपता क्लस्टर समाधान की स्थिरता का एक विचार देती है (आप उपयोग कर सकते हैंmatchClasses()में e1071 कि के लिए पैकेज)।

आपको CRAN टास्क व्यू क्लस्टर में उपयोगी संसाधन मिलेंगे , जिनमें pvclust , fpc , clv सहित अन्य शामिल हैं। एक कोशिश देने के लायक भी क्लीवल पैकेज ( सांख्यिकीय सॉफ्टवेयर जर्नल में वर्णित ) है।

अब, यदि आपके क्लस्टर समय के साथ बदलते हैं, तो यह थोड़ा और मुश्किल है; दूसरे के बजाय पहला क्लस्टर-समाधान क्यों चुना? क्या आप उम्मीद करते हैं कि कुछ व्यक्ति समय के साथ विकसित होने वाली एक अंतर्निहित प्रक्रिया के परिणामस्वरूप एक क्लस्टर से दूसरे में चले जाते हैं?

कुछ उपाय हैं जो उन समूहों से मेल खाने की कोशिश करते हैं जिनके पास अधिकतम निरपेक्ष या सापेक्ष ओवरलैप है, जैसा कि आपके पूर्ववर्ती प्रश्न में आपको सुझाया गया था। को देखो एक अवलोकन - Clusterings तुलना वैगनर और वैगनर से।


12

वास्तव में कोई जवाब नहीं है। यह 1 और एन के बीच कहीं है।

हालांकि, आप इसके बारे में लाभ के दृष्टिकोण से सोच सकते हैं।

उदाहरण के लिए, मार्केटिंग में सेगमेंटेशन का उपयोग किया जाता है, जो कि क्लस्टरिंग जैसा होता है।

एक संदेश (एक विज्ञापन या पत्र, कहते हैं) जो प्रत्येक व्यक्ति के लिए सिलवाया गया है उसकी उच्चतम प्रतिक्रिया दर होगी। औसत के अनुरूप एक सामान्य संदेश में सबसे कम प्रतिक्रिया दर होगी। यह कहना कि तीन खंडों के अनुरूप तीन संदेश कहीं बीच में होंगे। यह राजस्व पक्ष है।

एक संदेश जो प्रत्येक व्यक्ति के अनुरूप है, उसकी लागत सबसे अधिक होगी। औसत के अनुरूप एक सामान्य संदेश में सबसे कम लागत होगी। तीन खंडों के अनुरूप तीन संदेश कहीं बीच में होंगे।

कहो कि एक लेखक को एक कस्टम संदेश लिखने के लिए 1000, दो लागत 2000 और इतने पर भुगतान करना पड़ता है।

एक संदेश का उपयोग करके कहें, आपका राजस्व 5000 होगा। यदि आपने अपने ग्राहकों को 2 खंडों में विभाजित किया है, और प्रत्येक खंड के अनुरूप संदेश लिखे हैं, तो आपकी प्रतिक्रिया दर अधिक होगी। कहते हैं कि राजस्व अब 7500 है। तीन खंडों के साथ, थोड़ी अधिक प्रतिक्रिया दर, और आपका राजस्व 9000 है। एक और खंड, और आप 9500 पर हैं।

लाभ को अधिकतम करने के लिए, तब तक सेगमेंट करते रहें जब तक कि सेगमेंट से सीमांत राजस्व सेगमेंट की सीमांत लागत के बराबर न हो जाए। इस उदाहरण में, आप अधिकतम लाभ कमाने के लिए तीन खंडों का उपयोग करेंगे।

Segments  Revenue  Cost  Profit
1         5000     1000  4000
2         7500     2000  5500
3         9000     3000  6000
4         9500     4000  5500

यह एक दिलचस्प परिप्रेक्ष्य है!
एंडीएफ

5

शायद सबसे सरल तरीकों में से एक एक ग्राफिकल प्रतिनिधित्व होगा जिसमें x- अक्ष समूहों की संख्या और y- अक्ष किसी भी मूल्यांकन मीट्रिक की दूरी या समानता के रूप में है। उस प्लॉट में आप आमतौर पर दो विभेदित क्षेत्रों का निरीक्षण कर सकते हैं, जो कि क्लस्टर के 'इष्टतम' नंबर की रेखा के 'घुटने' पर x- अक्ष मान है।

ऐसे कुछ आँकड़े भी हैं जो इस कार्य को प्रभावित कर सकते हैं: ह्यूबर्ट 'गामा, छद्म-टी, छद्म-एफ या क्यूबिक क्लस्टरिंग मानदंड (सीसीसी)।


मैं chl से सहमत हूँ। क्लस्टर विश्लेषण अन्वेषणात्मक दृष्टिकोण और परिणामों की व्याख्या है, इस विशेष मामले के लिए समूहों की इष्टतम संख्या, आपके संदर्भ पर निर्भर करती है। उदाहरण के लिए, मेरे काम में कई विशेषताओं के आधार पर व्यक्तियों को वर्गीकृत करने के लिए उपयोग किए गए क्लस्टर विश्लेषण आम हैं और कभी-कभी समूहों की संख्या पूर्व निर्धारित होती है। इस मामले में, हमारा उद्देश्य विभिन्न प्रकार के समूहों से संबंधित व्यक्तियों को अलग करने वाले शास्त्रीय वैरिएबल के सेट को खोजना है।
मैनुअल रमन


3

पदानुक्रमित क्लस्टरिंग में आउटपुट विभाजन की संख्या केवल क्षैतिज कटौती नहीं है, बल्कि गैर-क्षैतिज कटौती भी है जो अंतिम क्लस्टरिंग का फैसला करती है। इस प्रकार इसे 1. दूरी मीट्रिक और 2. लिंकेज मानदंड को एक तिहाई मानदंड के रूप में देखा जा सकता है । http://en.wikipedia.org/wiki/Hierarchical_clustering

आपके द्वारा उल्लिखित मानदंड एक 3 प्रकार है जो पदानुक्रम में विभाजन के सेट पर एक प्रकार का अनुकूलन बाधा है। यह औपचारिक रूप से इस पत्र में प्रस्तुत किया गया है और विभाजन के उदाहरण दिए गए हैं!

http://www.esiee.fr/~kiranr/ClimbingECCV2012_Preprint.pdf


1

जैसा कि अन्य उत्तरों में कहा गया है, यह निश्चित रूप से व्यक्तिपरक है और इस बात पर निर्भर करता है कि आप किस प्रकार की ग्रैन्युलैरिटी का अध्ययन करने की कोशिश कर रहे हैं। एक सामान्य दृष्टिकोण के लिए, मैंने मुझे 2 क्लस्टर्स और 1 बाह्य रूप से देने के लिए इसे काट दिया। मैं फिर दोनों समूहों पर ध्यान केंद्रित करूंगा कि क्या उनके बीच कुछ महत्वपूर्ण था।

# Init
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

# Load data
from sklearn.datasets import load_diabetes

# Clustering
from scipy.cluster.hierarchy import dendrogram, fcluster, leaves_list
from scipy.spatial import distance
from fastcluster import linkage # You can use SciPy one too

%matplotlib inline

# Dataset
A_data = load_diabetes().data
DF_diabetes = pd.DataFrame(A_data, columns = ["attr_%d" % j for j in range(A_data.shape[1])])

# Absolute value of correlation matrix, then subtract from 1 for disimilarity
DF_dism = 1 - np.abs(DF_diabetes.corr())

# Compute average linkage
A_dist = distance.squareform(DF_dism.as_matrix())
Z = linkage(A_dist,method="average")

# Dendrogram
D = dendrogram(Z=Z, labels=DF_dism.index, color_threshold=0.7, leaf_font_size=12, leaf_rotation=45)

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

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