आर का उपयोग करके 4 मिलियन एज नेटवर्क में केंद्रीयता उपायों की गणना कैसे करें?


9

मेरे पास एक निर्देशित नेटवर्क के 4 मिलियन किनारों के साथ एक सीएसवी फ़ाइल है, जो एक दूसरे के साथ संवाद करने वाले लोगों का प्रतिनिधित्व करते हैं (जैसे जॉन मैरी को संदेश भेजता है, मैरी एन को एक संदेश भेजता है, जॉन मैरी को एक अन्य संदेश भेजता है , आदि)। मैं दो काम करना चाहूंगा:

  1. प्रत्येक व्यक्ति के लिए डिग्री, बीच और (शायद) eigenvector केंद्रीयता उपायों का पता लगाएं।

  2. नेटवर्क का एक दृश्य प्राप्त करें।

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

बस आपको एक विचार देने के लिए, यह है कि मेरी CSV फ़ाइल कैसी दिखती है:

$ head comments.csv
    "src","dest"
    "6493","139"
    "406705","369798"
$ wc -l comments.csv 
4210369 comments.csv

इन उपायों में से कुछ के लिए कि क्या आर इसे संभाल सकता है या नोट इस बात पर निर्भर करेगा कि नेटवर्क में कितने अलग-अलग लोग (नोड्स) हैं। जरूरी नहीं कि कम्प्यूटेशनल पहलुओं के लिए सबसे अच्छा उपकरण हो। लेसकेवेक के अंतिम नाम के साथ एक लड़का है जो कार्नेगी मेलन पर हुआ करता था --- मुझे लगता है कि एक छात्र के रूप में --- जो बड़े रेखांकन पर वर्णनात्मक आंकड़ों के साथ बहुत सारे सामान करता था। वहाँ बहुत सारी उपयोगिताएँ हैं "रेखांकन" कल्पना करने के लिए, लेकिन ज्यादातर मैंने पाया है कि वे व्याख्या करना या बाहर बहुत समझ बनाने के लिए बहुत कठिन हैं। केवल डिग्री वितरण को रेखांकन करना पहली शुरुआत हो सकती है।
कार्डिनल

यहां तक ​​कि 4 मिलियन अंक की साजिश रचने में थोड़ा समय लग सकता है ...
वोक

@ वोक, नाह। आज के कंप्यूटर पर केक का टुकड़ा। वैसे भी, आप हमेशा पहले पीएनजी को डंप कर सकते हैं और डिग्री वितरण के लिए यह काफी अच्छा है। ओपी का ग्राफ वास्तव में इतना बड़ा नहीं है।
कार्डिनल

जवाबों:


7

आपके पास एक बढ़त सूची है, जिसे नेटवर्क लाइब्रेरी का उपयोग करके नेटवर्क ऑब्जेक्ट में बदला जा सकता है। यहाँ काल्पनिक डेटा का उपयोग करके एक उदाहरण दिया गया है।

library(network)

src <- c("A", "B", "C", "D", "E", "B", "A", "F")
dst <- c("B", "E", "A", "B", "B", "A", "F", "A")

edges <- cbind(src, dst)
Net <- as.network(edges, matrix.type = "edgelist")

summary(Net)
plot(Net)

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

http://www.jstatsoft.org/v24


1
मैं फेसबुक नेटवर्क के विश्व मानचित्र को स्पष्ट रूप से याद करता हूं, जो आर में किया गया था। मुझे लगता है कि लेखक ने अपने ब्लॉग में कुछ प्रक्रिया के बारे में विस्तार से बताया। मुझे लगता है कि एप्रोच के इस्तेमाल से ऐसा मैप तैयार होगा जो 4 मिलियन नोड्स के साथ भी जानकारीपूर्ण है।
ओवे जेसेन

भोले सवाल के लिए क्षमा याचना, लेकिन मैं एक तालिका को कैसे srcऔर किस रूप में परिवर्तित करता हूं dst। यह वह है जो मैं आम तौर पर फाइल लोड करने के लिए करता हूं (अब एक टैब-सीमांकित फ़ाइल):el <- read.csv("comment-net/comments-ouids.tsv",header=T,sep="\t")
amh

read.csv () को data.frame का उत्पादन करना चाहिए। as.network () पढ़ सकता है कि सीधे या आपको as.matrix (el) करने की आवश्यकता हो सकती है।
जेसन मॉर्गन

मैं इन पुस्तकालयों के बारे में उलझन में हूँ, लाखों नोड्स के ग्राफ के साथ बहुत कुछ करने में सक्षम हूं। क्या आपने वास्तव में उन्हें तुलनीय डेटासेट के साथ उपयोग किया है?
१०:३५

पोस्टर 4 मिलियन किनारों वाले नेटवर्क का जिक्र कर रहा था , नोड्स का नहीं। मैंने statnet3500 से अधिक नोड्स (~ 8 मिलियन संभव किनारों) के अप्रत्यक्ष नेटवर्क पर पुस्तकालयों के परिवार का उपयोग किया है । यह काफी उल्लेखनीय था, खासकर जब लक्ष्य सिर्फ नेटवर्क के आँकड़ों की गणना करना था। मैंने इस आकार के नेटवर्क पर ईआरजीएम का भी अनुमान लगाया है। लेकिन आपकी बात अच्छी तरह से ली गई है; मुझे संदेह है कि लाखों नोड्स के नेटवर्क का आसानी से विश्लेषण किया जा सकता है।
जेसन मॉर्गन

3

मुझे नहीं लगता कि R यहां पहली पसंद है (शायद मैं गलत हूं)। आपको उचित डेटा प्रारूप में अपने नेटवर्क फ़ाइलों को अनुक्रमित करने और तैयार करने के लिए यहां विशाल सरणियों की आवश्यकता होगी। सबसे पहले, मैं ज्यूरस का उपयोग करने की कोशिश करूँगा (रोब ऊपर पोस्ट में उसका उल्लेख करता है) एसएनएपी लाइब्रेरी; यह C ++ में लिखा गया है और बड़े नेटवर्क पर बहुत अच्छा काम करता है।


SNAP का उल्लेख करने के लिए धन्यवाद। मैं इसे देख रहा हूं। क्या आपने इसका इस्तेमाल किया है? इसके साथ आने वाला केंद्रीयता का नमूना मुझे जो चाहिए, उसके करीब लगता है। मैंने इसे संशोधित करने की कोशिश की तो यह मेरे बहु निर्देशित ग्राफ डेटा के साथ काम करता है लेकिन यह संकलन करने में विफल रहा। मुझे यकीन नहीं है कि अगर यहां इसके बारे में एक प्रश्न पूछना उचित है, तो मैं एक नया Q बना सकता हूं।
15:13

1
@andresmh, आप पहले निर्देशित प्रति जोड़ी एक ही अवलोकन के लिए अपने ग्राफ को कम करने की कोशिश कर सकते हैं। Eigenvalue सामान के लिए, आपका डेटा ग्राफ पर भारित यादृच्छिक चलने के समान या समान होने की संभावना है। मुझे यकीन नहीं है कि अगर SNAP इसका समर्थन करता है, लेकिन इसकी संभावना है। यदि अन्य सभी विफल रहता है, तो आप ज्यूर के लिए एक बहुत ही विशिष्ट ईमेल भेज सकते हैं। वह बहुत अच्छा आदमी है, इसलिए मुझे आश्चर्य नहीं होगा यदि वह कुछ त्वरित मार्गदर्शन प्रदान करता है।
कार्डिनल

@कार्डिनल: मुझे एसएनएपी में एक नमूना कोड मिला, जो कि मैं चाहता हूं, लेकिन एक अप्रत्यक्ष ग्राफ के लिए है। मुझे लगता है कि मेरा ग्राफ वही है जो SNAP डॉक्स "निर्देशित मल्टी-ग्राफ" कहता है। तो मैं सिर्फ एक लाइन बदल centrality.cppसे TUNGraphकरने के लिए TNEGraph(देखें pastebin.com/GHUquJvT लाइन 24)। यह अब संकलन नहीं है। मुझे संदेह है कि इसके लिए एक अलग प्रकार के नोड की आवश्यकता है? मुझे जो त्रुटि मिलती है वह है: centrality.cpp:24: error: conversion from ‘TUNGraph::TNodeI’ to non-scalar type ‘TNEGraph::TNodeI’ requested( pastebin.com/86mCbByG पर पूर्ण त्रुटि देखें )
amh

3

Gephi ( http://gephi.org/ ) डेटा को एक्सप्लोर करने का एक आसान तरीका हो सकता है। आप लगभग निश्चित रूप से इसकी कल्पना कर सकते हैं, और कुछ गणनाएं कर सकते हैं (हालांकि मैंने इसे कुछ समय के लिए उपयोग नहीं किया है, इसलिए मैं सभी कार्यों को याद नहीं कर सकता हूं)।


3

7 मिलियन नोड्स के नेटवर्क के साथ पिछले अनुभव से, मुझे लगता है कि आपके पूर्ण नेटवर्क की कल्पना आपको एक निर्विवाद छवि देगी। मैं आपके डेटा के सबसेट का उपयोग करके विभिन्न विज़ुअलाइज़ेशन का सुझाव दे सकता हूं, जैसे कि इनबाउंड या आउटबाउंड लिंक के साथ शीर्ष 10 नोड्स का उपयोग करना। मैं gephi का उपयोग करने पर दूसरे सेलेनियस का सुझाव देता हूं।


@andresmh, Maslov और Sneppen ( विज्ञान , 2002) में एक दृश्य है जो इस संदर्भ में उपयोगी हो सकता है। हाल के आँकड़ों के माध्यम से खोज करना / कम्प-विज्ञान - इस काम के संबंधित उद्धरण, मैंने यह भी पाया । यहां एक और संबंधित काम हो सकता है।
कार्डिनल

1

यदि आप नेटवर्क के आकार से चिंतित हैं, तो आप igraphR में पैकेज की कोशिश कर सकते हैं और यदि वह R के अंदर खराब प्रदर्शन करता है, तो यह पायथन मॉड्यूल के रूप में बेहतर हो सकता है। या यहां तक ​​कि networkxपायथन के लिए पैकेज


1

क्या आपको संदेह है कि नेटवर्क में बहुत बड़े कनेक्टेड घटकों की एक छोटी संख्या है? यदि नहीं, तो आप इसे अलग-अलग घटकों में विघटित कर सकते हैं जिससे केंद्रीयता के उपायों की गणना करना बहुत आसान हो जाएगा।


+1 से - यदि इसका पूरी तरह से जुड़ा हुआ घटक है, तो यह एक बात है, लेकिन यदि आप नेटवर्क को विघटित कर सकते हैं, तो आपके पास दोनों छोटे डेटा हैं, और वास्तव में कई स्वतंत्र नेटवर्क हैं जिनका समानांतर में विश्लेषण किया जा सकता है।
फोमाइट

1

कई आर सॉफ्टवेयर पैकेज हैं, जिनका उपयोग "sna" और "नेटवर्क" सहित किया जा सकता है। एक बात मैं जरूरी नहीं मानता कि अगर आप sna के साथ प्रदर्शन समस्याएँ हैं तो NetworkX है। मैं NetworkX को मौत से प्यार करता हूं, और इसे अपने अधिकांश विश्लेषण के लिए उपयोग करता हूं, लेकिन NetworkX ज्यादातर विशुद्ध रूप से पायथोनिक कार्यान्वयन होने पर गर्व करता है। यह विशेष रूप से शीघ्र पूर्व संकलित कोड का अच्छी तरह से शोषण नहीं करता है, और sna अक्सर नेटवर्कएक्स को काफी मार्जिन से आगे बढ़ाता है।

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