भारित सामाजिक नेटवर्क / ग्राफ में सामुदायिक पहचान कैसे करें?


42

मैं सोच रहा हूं कि क्या कोई सुझाव दे सकता है कि सामुदायिक शुरुआत / ग्राफ़ विभाजन / भारित , अप्रत्यक्ष किनारों वाले ग्राफ़ पर क्लस्टरिंग / क्लस्टरिंग का प्रदर्शन करने के लिए अच्छे शुरुआती बिंदु क्या हैं । प्रश्न में ग्राफ में लगभग 3 मिलियन किनारों हैं और प्रत्येक किनारे इसे जोड़ने वाले दो कोने के बीच समानता की डिग्री व्यक्त करता है। विशेष रूप से, इस डेटासेट में किनारे व्यक्ति हैं और कोने उनके देखे गए व्यवहार की समानता का एक उपाय हैं।

पिछले दिनों मैंने एक सुझाव का पालन किया था, जो मैंने सांख्यिकी.स्टैकएक्सचेंज डॉट कॉम पर प्राप्त किया था और इसमें न्यूमैन के प्रतिरूपकता क्लस्टरिंग के इग्राफ के कार्यान्वयन का उपयोग किया था और परिणामों से संतुष्ट था, लेकिन यह एक अनवीट किए गए डेटासेट पर था।

क्या कोई विशिष्ट एल्गोरिदम है जिसे मुझे देखना चाहिए?

जवाबों:


20

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


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

9

मुझे पता है कि Gephi अप्रत्यक्ष भारित ग्राफ को संसाधित कर सकता है, लेकिन मुझे याद है कि इसे GDF में संग्रहीत किया जाना है , जो CSV, या Ucinet DL के बहुत करीब है । ज्ञात हो कि यह अभी भी एक अल्फा रिलीज है। अब, अपने ग्राफ को क्लस्ट करने के बारे में, Gephi को क्लस्टरिंग पाइपलाइनों की कमी लगती है, केवल MCL एल्गोरिदम को छोड़कर जो अब नवीनतम संस्करण में उपलब्ध है। 2009 में एक Google कोड प्रोजेक्ट था, Gephi नेटवर्क स्टेटिस्टिक्स (उदाहरण के लिए न्यूमैन की मॉड्यूलर मेट्रिक की विशेषता), लेकिन मुझे नहीं पता कि क्या इस दिशा में कुछ जारी किया गया है। वैसे भी, यह किसी प्रकार की प्रतिरूपकता / क्लस्टरिंग संगणना की अनुमति देता है, लेकिन R और Gep का उपयोग करके सामाजिक नेटवर्क विश्लेषण भी देखें औरR और Gephi ( @Tal के लिए बहुत धन्यवाद) का उपयोग करके सामाजिक नेटवर्क विश्लेषण के लिए डेटा तैयारी

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

आपको INSNA - सोशल नेटवर्क एनालिसिस सॉफ़्टवेयर या टिम इवांस के वेबपेज को कॉम्प्लेक्स नेटवर्क्स और कॉम्प्लेक्सिटी के बारे में भी देखना चाहिए ।


नमस्कार, बस आपको बता दें कि Gephi भारित अप्रत्यक्ष ग्राफ को समुदाय के माध्यम से पहचानने के लिए भारित अप्रत्यक्ष ग्राफ को संभाल नहीं सकता है। धन्यवाद। -गौतम

@ गौतम को जानकर अच्छा लगा, धन्यवाद। मैं वास्तव में गेफी से परिचित नहीं हूं, लेकिन मुझे लगा कि यह सक्रिय विकास में है।
चेर


4

लौवैन मॉड्यूलरिटी एल्गोरिथ्म C ++ में उपलब्ध है: https://sites.google.com/site/findcommunities/

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


लौवेन मॉड्युलैरिटी एल्गोरिथ्म तेज और स्थिर है there मुझे आश्चर्य है कि अगर कोई नक्शा है तो इसका संस्करण कम करें।
पेज

3

यदि आप अजगर का उपयोग कर रहे हैं, और नेटवर्कएक्स का उपयोग करके एक भारित ग्राफ बनाया है , तो आप क्लस्टरिंग के लिए अजगर- लाउवेन का उपयोग कर सकते हैं । जहां जी एक भारित ग्राफ है:

import community 
partition = community.best_partition(G, weight='weight')

1

मैं अभी आर के लिए tnet पैकेज में आया था। निर्माता भारित और द्विदलीय (दो-मोड) ग्राफ़ में सामुदायिक खोज पर शोध कर रहा है।

http://opsahl.co.uk/tnet/content/view/15/27/

मैंने अभी तक इसका उपयोग नहीं किया है।


1

SLPA (जिसे अब GANXiS कहा जाता है) एक तेज एल्गोरिथ्म है जो सामाजिक नेटवर्क में असंतुष्ट और अतिव्यापी दोनों समुदायों का पता लगाने में सक्षम है (अप्रत्यक्ष / निर्देशित और भारहीन / भारित)। यह दिखाया गया है कि एल्गोरिथ्म वास्तविक दुनिया के सामाजिक और जीन नेटवर्क पर सार्थक परिणाम देता है। यह अत्याधुनिक में से एक है। यह पर उपलब्ध है

https://sites.google.com/site/communitydetectionslpa/

अधिक जानकारी के लिए एक अच्छी समीक्षा arxiv.org/abs/1110.5813 देखें


1

मैंने गैर-अतिव्यापी, भारित / बिना वजन वाले नेटवर्क के लिए एक जावा कार्यान्वयन किया है जो शायद 3 मिलियन नोड्स को संभाल सकता है (मैंने इसे एक लाख नोड डेटासेट के लिए परीक्षण किया है)। हालांकि, यह k- साधनों की तरह काम करता है, और एक इनपुट (किमी में किमी) के रूप में पहचाने जाने वाले विभाजन की संख्या की आवश्यकता होती है। आप अधिक जानकारी यहाँ पा सकते हैं , और यहाँ कोड है , github में

चीयर्स,

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