2010-07-11 10 views
8

मान लीजिए कि मेरे पास ऑब्जेक्ट्स (हजारों या हजारों हजारों) की एक बड़ी सूची है, जिनमें से प्रत्येक को कुछ हद तक टैग के साथ टैग किया गया है। दर्जनों या सैकड़ों संभावित टैग हैं और उनका उपयोग एक सामान्य पावर कानून का पालन करता है: कुछ टैग अक्सर उपयोग किए जाते हैं लेकिन अधिकांश दुर्लभ होते हैं। वास्तव में सबसे अधिक जोड़े गए दर्जन टैगों को आम तौर पर अनदेखा किया जा सकता है।डेटा विज़ुअलाइजेशन: बबल चार्ट, वेन आरेख, और टैग क्लाउड (ओह मेरा!)

अब समस्या यह है कि इन टैग के बीच संबंधों को कैसे विज़ुअलाइज़ किया जाए। एक टैग क्लाउड केवल उनकी आवृत्तियों का एक अच्छा विज़ुअलाइज़ेशन है, लेकिन यह अनदेखा करता है कि कौन से टैग अन्य टैग के साथ होते हैं। मान लीजिए टैग: बार केवल ऑब्जेक्ट्स पर भी होता है टैग की गईं: foo। यह दृष्टि से स्पष्ट होना चाहिए। इसी प्रकार तीन टैग के लिए जो एक साथ होते हैं।

आप प्रत्येक टैग को एक बुलबुला बना सकते हैं और उन्हें आंशिक रूप से एक दूसरे के साथ ओवरलैप कर सकते हैं। तकनीकी रूप से यह एक वेन आरेख है लेकिन इस तरह से इसका इलाज करना मुश्किल नहीं हो सकता है। उदाहरण के लिए, Google चार्ट वेन आरेख बना सकते हैं, लेकिन केवल 3 या कम सेट (टैग) के लिए: http://code.google.com/apis/chart/docs/gallery/venn_charts.html
वे इसे 3 सेट तक सीमित करने का कारण यह है कि अब और यह भयानक लग रहा है। विकिपीडिया पृष्ठ पर "सेट की उच्च संख्या के लिए सीमाएं" देखें: http://en.wikipedia.org/wiki/Venn_diagrams

लेकिन यह केवल तभी होता है जब हर संभव चौराहे खाली न हो। यदि 3 से अधिक टैग कभी भी सह-घटित नहीं होते हैं (शायद दुर्लभ टैग फेंकने के बाद) तो वेन आरेखों का संग्रह काम कर सकता है (टैग आवृत्ति का प्रतिनिधित्व करने वाले बुलबुले के आकार के साथ)।

या संभवतः एक ग्राफ (जैसे कि शिखर और किनारों में) दृष्टि-मोटे या पतले किनारों के साथ सह-घटना की आवृत्ति का प्रतिनिधित्व करने के लिए।

क्या आपके पास कोई विचार या पॉइंटर्स टू टूल्स या लाइब्रेरीज़ हैं? आदर्श रूप से मैं इसे जावास्क्रिप्ट के साथ करूँगा लेकिन मैं आर और मैथमैटिका या वास्तव में कुछ और चीजों के लिए खुला हूं। यदि कोई उत्सुक है तो मुझे कुछ वास्तविक डेटा साझा करने में खुशी होगी (यदि आप मुझे बताते हैं कि आप क्या कहेंगे तो आप हंसेंगे।

परिशिष्ट: आवेदन मैं मूल रूप से मन में था TagTime था लेकिन यह यह भी है एक स्वादिष्ट बुकमार्क visualizing की समस्या के लिए अच्छी तरह से नक्शे है कि मेरे पास होता है।

+0

आप लग रहे हैं * अपने प्रश्न से प्रोग्रामिंग * के बारे में थोड़ा बाहर छोड़ दिया। –

+0

क्या आपके पास भाषा वरीयता है? साथ ही, क्या आप डेस्कटॉप ऐप या वेब ऐप लिखना चाहते हैं? –

+0

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

उत्तर

2

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

कुछ पुस्तकालयों है कि इस के लिए बहुत अच्छा होगा शामिल हैं:

  • Protovis (जावास्क्रिप्ट)
  • Flare (एडोब फ्लैश)

कुछ अन्य मज़ा जावास्क्रिप्ट में देख लायक पुस्तकालयों हैं:

+0

धन्यवाद जय! मैं protovis के बारे में नहीं पता था; वह तो बहुत ही बढ़िया है। प्लेटफॉर्म/भाषा के लिए, वेब/जावास्क्रिप्ट आदर्श है लेकिन यदि मैथमैटिका या आर या किसी के पास ऐसा करने का एक शानदार तरीका है, तो मुझे इसके बारे में भी जानना अच्छा लगेगा। बल-निर्देशित लेआउट के लिए, मुझे इसके बारे में क्या पसंद नहीं है यह है कि यह सबसेट रिश्तों को कैप्चर नहीं कर रहा है। शायद ऐसा कुछ - http://vis.stanford.edu/protovis/ex/bubble.html - लेकिन जहां बुलबुले एक-दूसरे के अंदर हो सकते हैं। – dreeves

+0

फिर से धन्यवाद, जय। प्रोटोकिस जावास्क्रिप्ट लगता है, फ्लैश नहीं, अगर मुझे गलत नहीं लगता है। – dreeves

+0

ओह। तुम सही हो। मैंने गलती से प्रोटोविस और फ्लेयर को उलट दिया। अभी सही होना चाहिए। –

5

तो मैं आपके सवाल का सही ढंग से समझ, एक छवि मैट्रिक्स अच्छी तरह से यहाँ काम करना चाहिए। मेरे मन में कार्यान्वयन एक एन एक्स एम मैट्रिक्स होगा जिसमें टैग किए गए आइटम पंक्तियां हैं, और प्रत्येक टैग प्रकार एक अलग कॉलम है। मैट्रिक्स में प्रत्येक सेल पूरी तरह से "1" और "0" का होता है, यानी, किसी विशेष आइटम में या तो दिया गया टैग होता है या ऐसा नहीं होता है।

नीचे मैट्रिक्स में (जिसे मैंने 90 डिग्री घुमाया है, तो यह इस विंडो में बेहतर फिट होगा - इसलिए कॉलम वास्तव में टैग किए गए आइटम का प्रतिनिधित्व करते हैं, और प्रत्येक पंक्ति सभी वस्तुओं में दिए गए टैग की उपस्थिति या अनुपस्थिति दिखाती है), मैं अनुकरण करता हूं परिदृश्य जिसमें 8 टैग और 200 टैग किए गए आइटम हैं। , "0" नीला और "1" हल्का पीला है।

इस मैट्रिक्स के सभी मूल्यों को बेतरतीब ढंग से चयन किया गया था (प्रत्येक टैग आइटम आठ दो टोकन, एक नीले और एक पीला (कोई टैग और टैग, क्रमशः) से मिलकर एक बॉक्स से ड्रॉ है। तो आश्चर्य की बात नहीं है कि वहाँ एक का कोई दृश्य सबूत है यहाँ पैटर्न है, लेकिन अगर आपके डेटा में से एक है, इस तकनीक, मृत लागू करने के लिए सरल है जो, आप इसे खोजने में मदद कर सकते हैं।

मैं आर इस्तेमाल किया पैदा करते हैं और नकली डेटा प्लॉट करने के लिए, केवल आधार ग्राफिक्स का उपयोग कर (कोई बाहरी संकुल या पुस्तकालयों):

# create the matrix 
A = matrix(data=r1, nrow=1, ncol=8) 

# populate it with random data 
for (i in seq(0, 200, 1)){r1 = sample(0:1, 8, replace=TRUE); A = rbind(A, r1)} 

# now plot it 
image(z=A, ann=F, axes=F, col=topo.colors(12)) 

alt text http://img690.imageshack.us/img690/3236/imagematrix01.png

+0

वाह, अच्छा विचार! धन्यवाद! मैं कोशिश करूँगा और देखता हूं कि यह कैसा दिखता है। – dreeves

+1

मुझे नहीं लगता कि इस तरह के विज़ुअलाइजेशन डेटा में पैटर्न खोजने में मदद करेगा, क्योंकि "हजारों ऑब्जेक्ट्स" और "सैकड़ों टैग" हैं। परिणामी छवि शायद एक बड़ी शोर तस्वीर होगी। –

+1

एक अच्छा [सीरिएशन] (http://cran.r-project.org/web/packages/seriation/index.html) इस तरह के प्रदर्शन में पैटर्न देखने के लिए बहुत महत्वपूर्ण है – hadley

1

नोट यह मुझे लगता है कि परीक्षण के रूप में नहीं किया, लेकिन यहाँ मैं कैसे शुरू होता है काम करेगा यकीन है कि:

आप के रूप में डग उसके जवाब में पता चलता है एक मैट्रिक्स बना सकते हैं, लेकिन इसके बजाय पंक्तियों और टैग के रूप में दस्तावेज होने के कॉलम के रूप में, आप स्क्वायर मैट्रिक्स लेते हैं जहां टैग पंक्तियां और कॉलम होते हैं। सेल टी 1 का मूल्य; टी 2 टी 1 और टी 2 दोनों के साथ टैग किए गए दस्तावेज़ों की संख्या होगी (ध्यान दें कि ऐसा करने से आपको एक सममित मैट्रिक्स मिलेगा क्योंकि [टी 1; टी 2] के समान मूल्य होगा [टी 2; टी 1]) ।
एक बार ऐसा करने के बाद, प्रत्येक पंक्ति (या कॉलम) टी आयाम वाले स्थान में टैग का पता लगाने वाला वेक्टर होता है। इस जगह में एक दूसरे के पास टैग अक्सर एक साथ होते हैं। सह-घटना को देखने के लिए आप अपनी स्पेस आयामता या किसी भी क्लस्टरिंग विधि को कम करने के लिए एक विधि का उपयोग कर सकते हैं। उदाहरण के लिए आप अपने टी-आयामों को 2 डी स्पेस पर प्रोजेक्ट करने के लिए कोहोनन स्वयं संगठित मानचित्र का उपयोग कर सकते हैं, फिर आपको 2 डी मैट्रिक्स मिल जाएगा जहां प्रत्येक सेल टैग स्पेस में एक सार वेक्टर का प्रतिनिधित्व करता है (जिसका अर्थ है कि वेक्टर आवश्यक नहीं होगा आपके डेटा सेट में)। यह वेक्टर आपके स्रोत स्थान की एक स्थलीय बाधा को प्रतिबिंबित करता है, और कुछ टैग के एक महत्वपूर्ण सह-अवसर को दर्शाते हुए "मॉडल" वेक्टर के रूप में देखा जा सकता है।इसके अलावा, इस मानचित्र पर एक दूसरे के पास की कोशिकाएं स्रोत स्थान में एक दूसरे के करीब वैक्टर का प्रतिनिधित्व करती हैं, इस प्रकार आप 2 डी मैट्रिक्स पर टैग स्पेस को मैप करने की अनुमति देते हैं।
मैट्रिक्स का अंतिम दृश्य कई तरीकों से किया जा सकता है लेकिन मैं आपको पहले प्रसंस्करण के परिणामों को देखे बिना सलाह नहीं दे सकता।

2

हालांकि यह एक पुराना धागा है, मैं आज इसे पार कर गया।

आप Self-Organizing Map का उपयोग करने पर भी विचार करना चाहेंगे।

यहां विश्व गरीबी के लिए स्वयं संगठित मानचित्र का एक उदाहरण दिया गया है। आपने अपनी "ऑब्जेक्ट्स" को व्यवस्थित करने के लिए अपने "टैग" को कॉल करने के 39 में से 3 का उपयोग किया।

http://www.cis.hut.fi/research/som-research/povertymap.gif Self-Organizing Map for World Poverty

संबंधित मुद्दे