Igraph में सामुदायिक पहचान एल्गोरिदम के बीच अंतर क्या हैं?


84

मेरे पास लगभग 100 igraph ऑब्जेक्ट्स की एक सूची है जिसमें एक विशिष्ट वस्तु लगभग 700 कोने और 3500 किनारों वाली है।

मैं उन समूहों के समूहों की पहचान करना चाहूंगा जिनके भीतर संबंध अधिक हैं। मेरी योजना तब मिश्रित मॉडल का उपयोग करके यह अनुमान लगाने की है कि वर्टेक्स और समूह विशेषताओं का उपयोग करने वाले कितने समूह-समूह संबंधों में वर्टिकल हैं।

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

जवाबों:


191

वर्तमान में igraph में लागू समुदाय का पता लगाने वाले एल्गोरिदम के बारे में एक संक्षिप्त सारांश है:

  • edge.betweenness.communityएक पदानुक्रमित अपघटन प्रक्रिया है जहां किनारों को उनके किनारे के बीच के स्कोर के घटते क्रम में हटा दिया जाता है (यानी किसी दिए गए किनारे से गुजरने वाले सबसे छोटे रास्तों की संख्या)। यह इस तथ्य से प्रेरित है कि विभिन्न समूहों को जोड़ने वाले किनारों को कई लघु पथों में समाहित किए जाने की संभावना है, क्योंकि कई मामलों में वे एक समूह से दूसरे समूह में जाने के लिए एकमात्र विकल्प हैं। इस पद्धति से अच्छे परिणाम प्राप्त होते हैं, लेकिन बढ़त के बीच गणना की गणना की कम्प्यूटेशनल जटिलता के कारण बहुत धीमी है और क्योंकि प्रत्येक किनारे को हटाने के बाद बीच के अंकों की गणना फिर से करनी होती है। ~ 700 कोने और ~ 3500 किनारों वाले आपके ग्राफ़ ग्राफ़ के ऊपरी आकार की सीमा के आसपास हैं जो इस दृष्टिकोण के साथ विश्लेषण किए जाने योग्य हैं। एक और नुकसान यह है किedge.betweenness.communityएक पूर्ण डेंड्रोग्राम बनाता है और आपको अंतिम समूहों को प्राप्त करने के लिए डेंड्रोग्राम को काटने के बारे में कोई मार्गदर्शन नहीं देता है, इसलिए आपको यह तय करने के लिए कुछ अन्य उपाय का उपयोग करना होगा (उदाहरण के लिए, प्रत्येक स्तर पर विभाजन का मॉड्यूलर स्कोर dendrogram)।

  • fastgreedy.communityएक और पदानुक्रमित दृष्टिकोण है, लेकिन यह ऊपर-नीचे के बजाय नीचे-ऊपर है। यह एक गुणवत्ता फ़ंक्शन को एक लालची तरीके से प्रतिरूपकता कहा जाता है का अनुकूलन करने की कोशिश करता है। प्रारंभ में, प्रत्येक शीर्ष एक अलग समुदाय से संबंधित है, और समुदायों को पुनरावृत्त रूप से विलय कर दिया जाता है जैसे कि प्रत्येक मर्ज स्थानीय रूप से इष्टतम होता है (यानी प्रतिरूपता के वर्तमान मूल्य में सबसे बड़ी वृद्धि)। एल्गोरिथ्म बंद हो जाता है जब किसी भी अधिक प्रतिरूपकता को बढ़ाना संभव नहीं होता है, इसलिए यह आपको एक ग्रुपिंग के साथ-साथ डेंड्रोग्राम भी देता है। विधि तेज़ है और यह वह विधि है जिसे आमतौर पर पहले सन्निकटन के रूप में आज़माया जाता है क्योंकि इसमें धुन करने के लिए कोई पैरामीटर नहीं होता है। हालांकि, इसे एक रिज़ॉल्यूशन लिमिट से कम यानी कि किसी दिए गए आकार की सीमा से कम के समुदायों (नोड्स और किनारों की संख्या पर निर्भर करता है, अगर मुझे सही याद है) से हमेशा पड़ोसी समुदायों में विलय हो जाएगा।

  • walktrap.communityयादृच्छिक दृष्टिकोण पर आधारित एक दृष्टिकोण है। सामान्य विचार यह है कि यदि आप ग्राफ़ पर यादृच्छिक चलता है, तो उसी समुदाय के भीतर चलने की अधिक संभावना है क्योंकि कुछ ही किनारे हैं जो किसी दिए गए समुदाय के बाहर ले जाते हैं। वॉकट्रैप 3-4-5 चरणों के छोटे यादृच्छिक चलता है (इसके मापदंडों में से एक पर निर्भर करता है) और अलग-अलग समुदायों को नीचे-ऊपर तरीके से मर्ज करने के लिए इन यादृच्छिक चलता के परिणामों का उपयोग करता है fastgreedy.community। फिर, आप डेंड्रोग्राम को काटने के लिए चयन करने के लिए मॉड्यूलर स्कोर का उपयोग कर सकते हैं। यह तेज लालची दृष्टिकोण की तुलना में थोड़ा धीमा है, लेकिन थोड़ा अधिक सटीक (मूल प्रकाशन के अनुसार) भी है।

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

  • leading.eigenvector.communityएक टॉप-डाउन पदानुक्रमित दृष्टिकोण है जो पुन: मॉड्यूलर फ़ंक्शन को अनुकूलित करता है। प्रत्येक चरण में, ग्राफ को दो भागों में विभाजित किया जाता है, जिससे पृथक्करण ही प्रतिरूपकता में उल्लेखनीय वृद्धि करता है। विभाजन को तथाकथित प्रतिरूपता मैट्रिक्स के प्रमुख आइजनवेक्टर का मूल्यांकन करके निर्धारित किया जाता है, और एक रोक स्थिति भी है जो कसकर जुड़े समूहों को आगे विभाजित होने से रोकती है। शामिल eigenvector गणनाओं के कारण, यह पतित रेखांकन पर काम नहीं कर सकता है जहां ARPACK eigenvector solver अस्थिर है। गैर-पतित रेखांकन पर, यह तेज लालची विधि की तुलना में उच्च प्रतिरूपता स्कोर प्राप्त करने की संभावना है, हालांकि यह थोड़ा धीमा है।

  • label.propagation.communityएक सरल दृष्टिकोण है जिसमें प्रत्येक नोड को k लेबल में से एक सौंपा गया है । विधि फिर पुनरावृत्त रूप से आगे बढ़ती है और नोड्स को फिर से लेबल देती है कि प्रत्येक नोड अपने पड़ोसियों के सबसे लगातार लेबल को एक तुल्यकालिक तरीके से लेता है। प्रत्येक नोड का लेबल उसके पड़ोस में सबसे लगातार लेबल में से एक होने पर विधि बंद हो जाती है। यह बहुत तेज़ है, लेकिन प्रारंभिक कॉन्फ़िगरेशन (जो यादृच्छिक रूप से तय किया गया है) के आधार पर अलग-अलग परिणाम देता है, इसलिए किसी को विधि को बड़ी संख्या में चलाना चाहिए (जैसे, ग्राफ़ के लिए 1000 बार) और फिर सर्वसम्मति लेबलिंग का निर्माण करें, जो हो सकता है दिलचस्प।

igraph 0.6 में अत्याधुनिक Infomap समुदाय पहचान एल्गोरिथ्म भी शामिल होगा, जो सूचना सिद्धांत सिद्धांतों पर आधारित है; यह एक समूह बनाने की कोशिश करता है जो ग्राफ पर एक यादृच्छिक चलने के लिए सबसे छोटी विवरण लंबाई प्रदान करता है, जहां वर्णन लंबाई को यादृच्छिक चलने के रास्ते को एनकोड करने के लिए आवश्यक प्रति बिट बिट्स की अपेक्षित संख्या से मापा जाता है।

वैसे भी, मैं शायद पहले सन्निकटन के साथ fastgreedy.communityया walktrap.communityफिर जाऊँगा और फिर अन्य तरीकों का मूल्यांकन करूँगा जब यह पता चलेगा कि ये दोनों किसी कारण से किसी विशेष समस्या के लिए उपयुक्त नहीं हैं।


3
जहां तक ​​मुझे पता है कि यह गैर-नियतात्मक एल्गोरिदम के साथ करने के लिए काफी सामान्य बात है। हालाँकि, आपको सावधान रहना चाहिए क्योंकि एल्गोरिथ्म के एक भाग में समुदाय i आवश्यक नहीं हो सकता है कि मैं दूसरे भाग में समुदाय से मेल खाऊं क्योंकि सामुदायिक आईडी का कोई अर्थ नहीं है।
तमसे

2
एक नया है multilevel.community:। मन इसे अपनी सूची में जोड़ने? (मौजूदा उत्तर उत्कृष्ट btw है। धन्यवाद!)
Zach

1
@ तमेस आप multilevel.communityऔर fastgreedy.communityअल्गो के बीच अंतर बता सकते हैं ? ऐसा लगता है कि ये दोनों बहुत समान हैं। आपका अग्रिम रूप से बोहोत धन्यवाद।
एंटोनी

3
वे एक जैसे नहीं हैं; fastgreedy.communityसमुदायों के जोड़े को पुनरावृत्त करता है, हमेशा उस जोड़ी का चयन करता है जो समग्र रूपांतर में अधिकतम वृद्धि प्राप्त करता है । में multilevel.community, समुदायों को विलय नहीं किया जाता है; इसके बजाय, नोड्स को समुदायों के बीच ले जाया जाता है जैसे कि प्रत्येक नोड एक स्थानीय निर्णय लेता है जो मॉड्यूलरिटी स्कोर में अपने स्वयं के योगदान को अधिकतम करता है । जब यह प्रक्रिया अटक जाती है (अर्थात कोई भी नोड अपनी सदस्यता नहीं बदलता है), तो सभी समुदाय एकल नोड में ढह जाते हैं और प्रक्रिया जारी रहती है (इसीलिए यह बहुस्तरीय है)।
तमसा

2
@Antoine: InfoMap एल्गोरिथ्म में निर्देशित किनारों को संभालने के लिए एक अच्छा और वैज्ञानिक रूप से ध्वनि दृष्टिकोण है। इग्राफ में कार्यान्वयन सबसे कुशल (लाइसेंसिंग मुद्दों के कारण) नहीं है, लेकिन इसे छोटे रेखांकन के लिए काम करना चाहिए। यदि ऐसा पाया जाता बहुत धीमी गति से होने के लिए आपको से एल्गोरिथ्म के लेखकों में से कोड की कोशिश कर सकते mapequation.org
तमस

13

विभिन्न समुदाय का पता लगाने वाले एल्गोरिदम का सारांश यहां पाया जा सकता है: http://www.r-bloggers.com/summary-of-community-detection-al एल्गोरिदम-in-igraph-0-6 /

विशेष रूप से, InfoMAP एल्गोरिदम एक नया नवागंतुक है जो उपयोगी हो सकता है (यह निर्देशित ग्राफ़ का भी समर्थन करता है)।


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