कुछ साल पहले, मैं किताबें पढ़ रहा था और मुझे अपने दिमाग में सभी किरदारों को याद रखने में मुश्किल हो रही थी। (यह आश्चर्य की बात नहीं है - श्रृंखला में 150 से अधिक नामित किरदार हैं!) मैं अध्यायों के बीच आगे-पीछे जा रहा था या कथानक याद रखने के लिए लगातार विकी देख रहा था। मुझे एक मानसिक मानचित्र की आवश्यकता थी - निश्चित रूप से इन किरदारों को का कोई बेहतर तरीका था? गेम ऑफ थ्रोन्स की ए सॉन्ग ऑफ आइस एंड फायर कल्पना करने मूल बातें यहाँ दिखाया गया है जो विभिन्न भाषाओं में विकिपीडिया संपादकों के योगदान को दर्शाता है। इस उदाहरण का उपयोग करते हुए, यहाँ ग्राफ़ सिद्धांत अवधारणाओं की कुछ मूल बातें (या एक त्वरित रिफ्रेशर, यदि आप पहले से ही परिचित हैं) दी गई हैं: विकिपीडिया से लिया गया एक नमूना नेटवर्क ग्राफ़ जिन भाषाओं में लेख लिखे गए थे, उन्हें दर्शाने वाले वृत्त ग्राफ के "शीर्ष" हैं (परस्पर बदले जाने वाले "नोड्स")। "किनारे" प्रत्येक कोने के जोड़े को जोड़ने वाली रेखाएँ हैं। ग्राफ़ में प्रत्येक किनारे को एक घटना फ़ंक्शन के माध्यम से निर्धारित किया जाता है जो कोने के जोड़े को किनारे पर मैप करता है। इस उदाहरण में, प्रत्येक किनारा (लाइन वेट या मोटाई के अनुसार) उन संपादकों की संख्या को दर्शाता है जिन्होंने लाइन को जोड़ने वाली भाषाओं में योगदान दिया है। इसे हम एक अनिर्देशित सरल ग्राफ कहते हैं। "अनिर्देशित" का अर्थ है {en--> fr} और {fr --> en} समान हैं, और "सरल" का अर्थ है कि प्रत्येक कोने के जोड़े को एक से अधिक किनारा नहीं जोड़ता है। ग्राफ "भारित" भी है, जिसका अर्थ है कि किनारों की मोटाई कोने के बीच संबंध की के सापेक्ष है। इस उदाहरण में, भारित घटना फ़ंक्शन कुछ इस तरह दिख सकता है: दोनों ताकत जबकि इस तरह से ग्राफ का दृश्य प्रतिनिधित्व संबंधों को शीघ्रता से दिखाने के लिए एक सहज दृष्टिकोण है ताकि उन्हें समझना आसान हो, डेटासेट को ग्राफ ऑब्जेक्ट के रूप में प्रस्तुत करने से हमें और भी अधिक गहन जानकारी मिल सकती है। हैमिल्टन डेटासेट के लिए डेटा प्राप्त करना "डेटा विज्ञान में, 80 प्रतिशत समय डेटा तैयार करने में व्यतीत होता है, 20 प्रतिशत समय डेटा तैयार करने की आवश्यकता के बारे में शिकायत करने में व्यतीत होता है।" डेटा वैज्ञानिक शायद हर बात पर सहमत न हों — लेकिन हम इस बात पर सहमत हैं कि किसी भी प्रोजेक्ट का सबसे कठिन हिस्सा डेटा प्राप्त करना है। हमारे लिए सौभाग्य की बात है कि इस लेख के लिए वह हिस्सा हमारे पीछे रह गया है। गीतों है जिसे आप आसानी से डाउनलोड कर सकते हैं और ग्राफ़ बनाना शुरू कर सकते हैं। हैमिल्टन का एक अच्छा साफ डेटासेट कागल पर आसानी से उपलब्ध खोजपूर्ण विश्लेषण डेटासेट कुछ इस प्रकार दिखता है। हैमिल्टन प्रत्येक पात्र/गीत/गीत की पंक्ति के लिए एक पंक्ति रिकार्ड की जाती है। - गीत के नाम को संदर्भित करता है। शीर्षक - उस पात्र को संदर्भित करता है जो एक निश्चित पंक्ति गा रहा है। वक्ता - गीत के भीतर गीत की विशेष पंक्ति को संदर्भित करता है। पंक्तियाँ आसन्न मैट्रिक्स का निर्माण सभी स्पीकरों का नेटवर्क ग्राफ़ बनाने के लिए, निम्नलिखित को परिभाषित किया जाना चाहिए: हैमिल्टन नोड्स (स्पीकर की सूची) किनारे (स्पीकर की प्रत्येक जोड़ी को जोड़ने के लिए) शीर्षों के प्रत्येक जोड़े को किनारे पर मैप करने के लिए घटना फ़ंक्शन (वैकल्पिक भार के साथ) मैंने जो घटना फ़ंक्शन चुना है वह है। मेरी धारणा यह है कि जितने अधिक गानों में दो किरदार एक साथ दिखाई देते हैं, उनका रिश्ता उतना ही मजबूत होता है। प्रत्येक जोड़ी वक्ताओं द्वारा एक साथ गाए जाने वाले गानों की संख्या Weight {speaker,x, speaker,y} = #songs that feature both speaker,x and speaker,y R के dplyr का उपयोग करके, मैं अपने मूल डेटासेट को इकाई में बदल सकता हूँ, और फिर उसे एक आसन्न मैट्रिक्स में परिवर्तित कर सकता हूँ। फिर मैं इस आसन्न मैट्रिक्स से एक "ग्राफ़ ऑब्जेक्ट" बनाने के लिए में graph.adjacency का उपयोग कर सकता हूँ, जिसका उपयोग मैं प्लॉटिंग और अन्य विश्लेषणों के लिए कर सकता हूँ। **{src, dest, weight}** R के igraph पैकेज नेटवर्क प्लॉट का दृश्यांकन ग्राफ_ऑब्जेक्ट को फ़ंक्शन का उपयोग करके विज़ुअलाइज़ किया जा सकता है। चूँकि इस फ़ंक्शन में चुनने के लिए कई कस्टम लेआउट हैं, इसलिए मैं "स्टार" लेआउट का उपयोग करके उसी ग्राफ़ को रेंडर करके शुरू करता हूँ। प्लॉट.आईग्राफ तकनीकी रूप से परिणाम एक नेटवर्क प्लॉट है। लेकिन क्या इसे और भी बेहतर बनाना संभव है? ऊपर दिया गया चार्ट यह सुझाव देता है कि सभी कोने और किनारों का समान महत्व है - लेकिन यह एक सामाजिक नेटवर्क को देखने के पूरे उद्देश्य को कमज़ोर करता है। कुछ पात्र वास्तव में अधिक "महत्वपूर्ण" हैं, और कुछ वक्ताओं के दूसरों के सापेक्ष मजबूत संबंध हैं। यह ग्राफ इसे कैसे प्रतिबिंबित कर सकता है? यहीं पर और भूमिका आती है। मैं वजन के सापेक्ष (यानी, प्लॉट में किनारे की मोटाई) और डिग्री के सापेक्ष (यानी, वर्टेक्स का फ़ॉन्ट आकार) बनाने के लिए फ़ंक्शन के मापदंडों के साथ खेलना शुरू करता हूं। एज वेट वर्टेक्स डिग्री की edge.width vertex.label.cex plot.igraph बहुत बेहतर! उच्च डिग्री वाले पात्र दृष्टिगत रूप से बड़े होते हैं, और मजबूत और कमजोर रिश्तों के बीच का अंतर भी रेखाओं के अंधेरे से स्पष्ट होता है। यह पुनरावृत्ति बहुत अधिक सहज है और दर्शकों को पात्रों के बीच संबंधों को तुरंत समझने में मदद करती है। यह भी उचित है कि किंग जॉर्ज एक अकेला नोड है, यह देखते हुए कि उसके गाने हमेशा (बहुत मज़ेदार) मोनोलॉग होते हैं। आप R में लाइब्रेरी का उपयोग नेटवर्क ग्राफ़ बनाने के लिए भी कर सकते हैं। लाइब्रेरी ग्राफ़ के कई हिस्सों को ज़ूम इन और आउट करना संभव बनाती है (विशेष रूप से बड़े ग्राफ़ के साथ उपयोगी), और इसमें शाइनी के लिए समर्थन है। visNetwork इंटरैक्टिव केंद्रीयता उपाय नोड्स के महत्व की पहचान करने के लिए ग्राफ सिद्धांत में एक महत्वपूर्ण अवधारणा है: केंद्रीयता : यह प्रत्येक नोड से जुड़े किनारों की संख्या का माप है। डिग्री केन्द्रीयता : यह इस बात का माप दर्शाता है कि कोई नोड कितना “अच्छी तरह से जुड़ा हुआ” है, कितने लिंक कनेक्शन साझा करते हैं, और इसी तरह नेटवर्क के माध्यम से। यह पूरे नेटवर्क पर प्रभाव रखने वाले नोड्स की पहचान करता है, न कि केवल सीधे उससे जुड़े हुए नोड्स की। आइजेन सेंट्रलिटी यह वस्तुतः यह दर्शाता है कि दिया गया नोड अन्य नोड्स कितना है और नेटवर्क के विभिन्न क्लस्टरों के बीच एक “पुल” के रूप में कार्य करता है। यह नेटवर्क के बाकी हिस्सों पर प्रत्येक कोने के “प्रभाव” का एक माप है। बीचनेस सेंट्रलिटी: के बीच मैं उत्पन्न ग्राफ के लिए केंद्रीयता प्राप्त करने के लिए igraph के degree(), Betweenness(), और eigen_centrality() फ़ंक्शन का उपयोग कर सकता हूं: ऐसा लगता है कि हमारे ग्राफ में एरॉन बूर की ('ब्रिज') सबसे ज़्यादा है, जबकि हैमिल्टन की ('इंफ्लुएंसर') सबसे ज़्यादा है। आप इससे जो चाहें समझ सकते हैं। बीचनेस सेंट्रलिटी आइगेनवेक्टर सेंट्रलिटी निष्कर्ष नेटवर्क ग्राफ़ के व्यावसायिक अनुप्रयोग अनेक हैं: सोशल नेटवर्किंग साइट्स समान उपयोगकर्ताओं के समुदाय बनाने और लक्षित अनुशंसाएँ प्रदान करने के लिए नेटवर्क ग्राफ़ का उपयोग करती हैं। "सुझाए गए मित्र" सुविधा के पीछे एल्गोरिदम का एक प्रारंभिक कार्यान्वयन कुछ इस तरह दिख सकता है: "ऐलिस के दस में से नौ तत्काल मित्र बॉब के भी मित्र हैं -> बॉब को ऐलिस के संभावित मित्र के रूप में सुझाएँ।" ऐसे अनुप्रयोग जो स्थान X से स्थान Y तक की सबसे छोटी दूरी को मैप करते हैं (जैसे मानचित्र, राइड-शेयरिंग सेवाएं, डिलीवरी ट्रकों के लिए आपूर्ति श्रृंखला और लॉजिस्टिक्स, इत्यादि) संभवतः "सबसे छोटे पथ" एल्गोरिदम के वेरिएंट का उपयोग करते हैं, जिन्हें कंप्यूटर विज्ञान में के रूप में जाना जाता है। ट्रैवलिंग सेल्समैन समस्या नेटवर्क सिद्धांत प्राकृतिक भाषा प्रसंस्करण (एनएलपी) के भीतर शाब्दिक और अर्थपूर्ण प्रसंस्करण का एक महत्वपूर्ण घटक है, जिसका प्रयोग चैटबॉट और वर्चुअल सहायकों जैसे एलेक्सा, कोरटाना, सिरी और यहां तक कि आईबीएम के भी किया जाता है, जो कि शब्दों के खेल और सरलता से बहुत दूर का खेल है। वॉटसन द्वारा जेपार्डी में जीतने के लिए जैसे नाम-ड्रॉपिंग पार्टी गेम नेटवर्क ग्राफ़ का उपयोग करते हैं। सिक्स डिग्रीज़ ऑफ़ केविन बेकन महामारी विज्ञान में, महामारी या “सुपर स्प्रेडर” घटनाओं की उत्पत्ति की पहचान करने में केंद्रीयता उपायों का उपयोग किया जा सकता है। अगर आप इसके बारे में सोचें, तो इंटरनेट बस अलग-अलग वेबसाइटों का एक विशाल नेटवर्क है। सर्च इंजन किसी खास सर्च क्वेरी के लिए सबसे ज़्यादा प्रासंगिक पेज दिखाने के लिए माप का इस्तेमाल करते हैं। नॉलेज ग्राफ वे जितने मज़ेदार हैं, यह ध्यान रखना ज़रूरी है कि उत्पादन में इस्तेमाल किए जाने पर नेटवर्क ग्राफ़ कमियों से रहित नहीं हैं। उदाहरण के लिए, वे संसाधन-गहन हो सकते हैं। किसी भी मैट्रिक्स ऑपरेशन के मामले में, स्केलेबिलिटी और प्रदर्शन कभी-कभी प्रभावित होते हैं। एक "कोल्ड स्टार्ट" समस्या भी है - यदि आपका डेटासेट बहुत विरल है या संस्थाओं के बीच वास्तव में बहुत अधिक संबंध नहीं हैं, तो नेटवर्क ग्राफ़ एक प्रभावी समाधान नहीं है। हालांकि, सही तरीके से और सही संदर्भ में उपयोग किए जाने पर, वे व्यवसाय के लिए मूल्यवान हो सकते हैं। • कोड: https://github.com/iswaryam/hamilton/ डेटासेट क्रेडिट: https://www.kaggle.com/lbalter/hamilton-lyrics# यदि आप पॉटरहेड हैं, तो मेरा गिटहब देखें - मैंने के पात्रों का भी इसी प्रकार की विधि से ग्राफ बनाया है। हैरी पॉटर