बड़े डेटासेट के खोजपूर्ण विश्लेषण को कैसे रोकें?


22

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

क्या खोजपूर्ण विश्लेषण को साफ-सुथरा रखने के लिए कोई अनुशंसित तरीके हैं? विशेष रूप से, आप अन्वेषण की कई शाखाओं (मृतकों के अंत सहित) और भूखंडों के विभिन्न संस्करणों के साथ कैसे व्यवहार करते हैं?


संदर्भ के लिए, मैं भू-वैज्ञानिक डेटा (समय के साथ कई चर, कभी-कभी अंतरिक्ष में भी) पर काम कर रहा हूं। मैं आमतौर पर पायथन या आर के साथ काम करता हूं, और सब कुछ जीआईटी में स्टोर करता हूं, और आईपीथॉन नोटबुक को भी आज़मा रहा हूं। हालांकि, यह अच्छा होगा यदि उत्तर सभी प्रकार के (बड़े?) डेटा के साथ सभी क्षेत्रों में लोगों के लिए कुछ सामान्य और उपयोगी थे


1
मुझे लगता है कि आपको बहुत सी सलाह मिलेगी जो अनुमान या भविष्यवाणी के प्रतिस्पर्धी तरीकों का मूल्यांकन करने के लिए डिज़ाइन किए गए सिमुलेशन अध्ययन पर समान रूप से लागू होगी।
प्रोबेबिलिसलॉजिक

1
हाँ, इस उत्तर को शायद पढ़ने की भी आवश्यकता है: आंकड़े.स्टैकएक्सचेंज . com / questions / 2910/… । मैं सोच रहा था कि अधिक विशिष्ट सलाह हो सकती है, लेकिन मुझे लगता है कि वास्तव में ऐसा नहीं है।
n

जवाबों:


10

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

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

WRT संगठन, प्रत्येक विश्लेषक को एक वर्कफ़्लो ढूंढना होता है जो उसके या उसके लिए काम करता है- ऐसा करना IMO से अधिक महत्वपूर्ण है किसी और के वर्कफ़्लो का पालन करने की कोशिश करना (हालांकि यह हमेशा उपयोगी होता है कि दूसरे क्या कर रहे हैं) से विचार प्राप्त करना। यदि आप प्रोग्रामेटिक रूप से काम कर रहे हैं (यानी, ऐसा कोड लिखना जो परिणाम का एक सेट उत्पन्न / पुनर्जीवित करने के लिए चलाया जा सकता है) और आपके काम को git में जांचना है, तो आप इस संबंध में पहले से ही कई मील आगे हैं। मुझे संदेह है कि आपको अपने कोड को व्यवस्थित करने में कुछ समय बिताने की आवश्यकता हो सकती है, और उसके लिए, मैं आपकी रूपरेखा का अनुसरण करने का सुझाव दूंगा। उदाहरण के लिए, अपनी विश्लेषण फ़ाइलों को अपेक्षाकृत कम और लक्षित रखें, ताकि प्रत्येक एक विशिष्ट प्रश्न का जवाब दे (जैसे, एक विशिष्ट प्रतिरूप मॉडल के लिए नैदानिक ​​भूखंड)। परियोजना के आकार और जटिलता के आधार पर इन्हें एक या दो स्तरों पर उपनिर्देशिकाओं में व्यवस्थित करें। इस तरह, परियोजना स्व-दस्तावेजीकरण बन जाती है; निर्देशिकाओं, उपनिर्देशिकाओं और फाइलों की एक सूची दृश्य (प्रत्येक फ़ाइल के शीर्ष पर टिप्पणी के साथ), सिद्धांत रूप में, आपकी रूपरेखा को पुन: प्रस्तुत करना चाहिए।

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

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

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


4

मुझे नहीं पता कि एक सामान्य उत्तर कितना उपयोगी होगा। आप पूछ रहे हैं कि कुछ कठिन कैसे करना है; अच्छे उत्तर शायद अनुशासन पर निर्भर करेंगे और शायद लंबे और बारीक होंगे। :)

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

अब, यह खोजपूर्ण भाग के साथ मदद नहीं करता है। EDA के लिए मैं ESS के माध्यम से emacs में (ज्यादातर) R का उपयोग करता हूं। आपको EDA के लिए एक REPL की आवश्यकता है। मेरा वर्कफ़्लो ईएसएस (एक exploratory.Rप्रकार की फ़ाइल में) में भूखंडों, अनुमानों आदि के साथ खेलना है , यह तय करें कि मैं क्या रखना चाहता हूं, फिर इसे फिर से बनाएं ताकि इसे बैच-निष्पादित किया जा सके। पुन: जीआईटी, मुझे नहीं पता कि आप इसका उपयोग कैसे कर रहे हैं, लेकिन मैं प्रत्येक प्रोजेक्ट (आमतौर पर एक एकल पेपर) के लिए एक रिपॉजिटरी का उपयोग करता हूं और एक स्वच्छ इतिहास रखने के लिए अपने कोडबेस से नरक को वापस करता हूं; यानी मैं उपयोग करता हूं

$ git merge meandering-branch --squash
$ git add -p somefile
$ git rebase -i master
$ git reset HEAD --hard

जिस तरह से मैंने git से शुरुआत की है , उससे कहीं अधिक और जिस तरह से मैं शुरुआत करने की सलाह देता हूं , उससे कहीं अधिक। यदि आप उन सभी आदेशों और विकल्पों से परिचित नहीं हैं, तो आप अधिक गिट सीखना चाह सकते हैं। सबसे बड़ी बात जो मुझे मदद करती है वह है तार्किक रूप से अलग-अलग तरह के कमिट बनाने के बारे में अनुशासित होना; यानी हर कमिटमेंट में वे सभी बदलाव होने चाहिए, जिन्हें आप भविष्य में एक बार में (और कम या ज्यादा नहीं) पूर्ववत करना चाहते हैं।

जहां तक ​​वास्तव में डेटा की खोज करने के बाद, मैंने इन पुस्तकों को उपयोगी और दिलचस्प पाया है, और वे विशेष रूप से बड़े डेटासेट (कम से कम भागों में) के साथ सौदा करते हैं:

  • ग्राफिक्स ऑफ़ लार्ज डेटासैट, जिसे एडविन, थुस और हॉफमैन द्वारा संपादित किया गया है। स्प्रिंगरलिंक के माध्यम से यदि आपके पास पहुंच है, तो अलग-अलग अध्याय संभवत: गुग्लिंग द्वारा उपलब्ध हैं।

  • चेन, हैडल और अनविन द्वारा संपादित डेटा विज़ुअलाइज़ेशन की हैंडबुकस्प्रिंगरलिंक के माध्यम से भी

  • ह्यूबर द्वारा डेटा विश्लेषण (2011) ।।


3

दो शब्द: अवधारणा मानचित्र। यह एकमात्र प्रभावी तरीका है जिसे मैंने बड़े डेटा सेट या किसी भी अवधारणा को विभाजित करने के लिए पाया है जो वास्तव में जटिल है। http://en.wikipedia.org/wiki/Concept_maps

व्यक्तिगत रूप से, मैं स्क्रीन पर कागज की तुलना में बेहतर सोचता हूं, इसलिए मैं सिर्फ दिमाग लगाता हूं कि मैं क्या कर रहा हूं इससे पहले कि मैं कोई बुनियादी विश्लेषण करना शुरू कर दूं। अधिक पेशेवर आरेख के लिए, बहुत सारे माइंड मैपिंग सॉफ़्टवेयर हैं http://en.wikipedia.org/wiki/List_of_concept-_and_mind-mapping_software

माइंड मैपिंग के कई फायदे हैं:

  • मुझे बताता है कि "मुख्य" चर और व्युत्पन्न चर (यदि कोई हो) के संदर्भ में मेरे पास क्या है
  • सिद्धांत / तर्क के आधार पर एक मॉडल के संगठन / निर्माण के लिए अनुमति देता है
  • मुख्य चर जो गायब हो सकते हैं और / या जोड़ सकते हैं, अगर मुख्य चर के बीच के रिश्ते ऐसे नहीं निकलते हैं जैसे मुझे लगता है कि उन्हें चाहिए

संपादित करें :

एक उदाहरण के रूप में, यहां कारक विश्लेषण के लिए अवधारणा मानचित्र दिया गया है: http://www.metacademy.org/graphs/concepts/factor_analysis#focus=factor_analysis&mode=explore अब यह विशुद्ध रूप से अवधारणा सीखने के लिए है, विश्लेषण का प्रदर्शन नहीं, लेकिन विचार ऐसा ही है: समय से पहले नक्शा बनाने के लिए कि यह क्या करना है, और फिर इसे करना है।

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


Hrm ... यह अधिक विस्तृत उदाहरण के साथ कर सकता है। मुझे यह देखने में परेशानी हो रही है कि मैं जिस जटिलता के बारे में बात कर रहा हूं, उससे कैसे निपटेंगे। विशेष रूप से, यह उन जांच पथों के विश्लेषण (व्युत्पन्न डेटा, भूखंडों, आदि) के साथ क्या करने में मदद नहीं करता है जो मृत सिरों तक ले जाते हैं।
n

अवधारणा मानचित्र केवल उन पथों की जांच करने के लिए डिज़ाइन किया गया है, जो विषय-विशेष के सिद्धांत के आधार पर कहीं जाने चाहिए। यदि यह पता चलता है कि एक विशेष जांच कहीं नहीं गई, तो आप इसे कांसेप्ट मैप पर नोट कर लें क्योंकि यह आपकी गाइड / टू-डू लिस्ट है। वहां पर, आप तुरंत देखते हैं कि क्या व्युत्पन्न चर प्रभावित हैं और आप कौन सी अन्य जाँच कर सकते हैं। प्रयत्न।
राइनकांटे

3

आप पहले से ही गिट का उपयोग कर रहे हैं: अपनी खोज को व्यवस्थित करने के लिए संस्करण नियंत्रण का उपयोग क्यों नहीं करें? अपने अन्वेषण के प्रत्येक नए "शाखा" के लिए एक नई शाखा बनाएँ, और साथ ही भूखंडों के विभिन्न संस्करणों के लिए शाखाओं को बंद करें। यह विधि आपके अंतिम परिणामों को संयोजित करने के लिए थोड़ा और कठिन बना देगी, लेकिन आप हमेशा एक अनछुए निर्देशिका को बनाए रख सकते हैं जहां आप अपने विश्लेषण के "रत्नों" में छोड़ सकते हैं। आप संभवतः इस निर्देशिका में अपनी फ़ाइलों को किसी भी तरह से लेबल करना चाहते हैं ताकि यह पता चल सके कि वे किस फोर्क / कमिट से आए हैं। इस विधि में diffकमांड के माध्यम से विभिन्न विश्लेषणों के विपरीत करना आसान बनाने का अतिरिक्त लाभ है ।


1

मैं बिजनेस इंटेलिजेंस टूल्स पर ध्यान दूंगा ... जहां इसी तरह के मुद्दे सामने आते हैं। विशेष रूप से (डेटा वेयरहाउस, आयामी विश्लेषण) पदानुक्रम और ड्रिल डाउन।

मूल विचार यह है कि आप अपने अंतर्निहित डेटा को कुल मात्रा के बजाय कुल मात्रा (आय, आय आदि) के रूप में दर्शाने का प्रयास करते हैं। फिर आप विवरणों (जैसे महीने / सप्ताह / ...) पर एकत्र करने के लिए पदानुक्रम डिज़ाइन करते हैं। इससे आप अपने सभी डेटा के सरल ओवरव्यू ले सकते हैं और फिर विशेष क्षेत्रों पर ज़ूम कर सकते हैं। उदाहरण के लिए देखें http://cubes.databrewery.org/ (अजगर) या एक्सेल पॉवर धुरी

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