वर्कफ़्लो में हमें लापता डेटा से कैसे निपटना चाहिए?


16

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

पायथन में ऐसा करना काफी सरल है, या तो sklearn.preprocessing.Imputerकक्षा के साथ , pandas.DataFrame.fillnaविधि का उपयोग करके , या हाथ से (उपयोग की गई प्रतिरूपण विधि की जटिलता के आधार पर)। लेकिन जब से मैं सैकड़ों लाखों रिकॉर्ड भर में दर्जनों या सैकड़ों स्तंभों के लिए इसका उपयोग करने जा रहा हूं, मुझे आश्चर्य है कि क्या एसक्यूएल के माध्यम से सीधे समय से पहले ऐसा करने का एक अधिक कुशल तरीका है। वर्टिका जैसे एक वितरित मंच में ऐसा करने की संभावित क्षमताओं के अलावा, इससे हमें तालिकाओं के "पूर्ण" संस्करणों के निर्माण के लिए एक स्वचालित पाइपलाइन बनाने की अनुमति देने का अतिरिक्त लाभ होगा, इसलिए हमें एक नए सेट में भरने की आवश्यकता नहीं है। हर बार जब हम किसी मॉडल को चलाना चाहते हैं, तब से मानों की अनुपलब्धता।

मैं इस बारे में बहुत मार्गदर्शन नहीं कर पाया, लेकिन मुझे लगता है कि हम कर सकते हैं:

  1. प्रत्येक अपूर्ण कॉलम के लिए स्थानापन्न मानों की तालिका (जैसे, माध्य / माध्य / विधा, समग्र या समूह द्वारा) बनाएं
  2. प्रत्येक पंक्ति और अपूर्ण कॉलम के लिए एक स्थानापन्न मान निर्दिष्ट करने के लिए मूल तालिका के साथ स्थानापन्न मान तालिका में शामिल हों
  3. यदि उपलब्ध हो तो मूल मूल्य लेने के लिए केस स्टेटमेंट की एक श्रृंखला का उपयोग करें और स्थानापन्न मूल्य अन्यथा

क्या यह वर्टिका / एसक्यूएल में करने के लिए एक उचित चीज है, या क्या इसके बजाय पायथन में परेशान करने और इसे संभालने का एक अच्छा कारण है? और यदि उत्तरार्द्ध, तो स्केलेर या इसके विपरीत पंडों में ऐसा करने के लिए एक मजबूत मामला है? धन्यवाद!

जवाबों:


14

प्रतिरूपण जैसे स्वचालित कार्यों के बारे में मेरी मज़बूत राय (लेकिन, यहाँ मैं स्केलिंग, सेंटरिंग, फ़ीचर चयन इत्यादि भी शामिल कर सकता हूँ) किसी भी तरह से ऐसे कामों से बचने के लिए है जो आपके डेटा का सावधानीपूर्वक निरीक्षण किए बिना करते हैं।

बेशक, यह तय करने के बाद कि इसे लागू करने के लिए किस तरह का आवेग स्वचालित किया जा सकता है (इस धारणा के तहत कि नए डेटा में एक ही आकार / समस्याएं हैं)।

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

उसके बाद आपको यह समझने की जरूरत है कि किसी दिए गए कार्य के लिए आपके डेटा से बेहतर जानकारी किस तरह की होगी। यह अक्सर ऐसा लगता है कि यह सही करने के लिए बहुत कठिन है।

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


1
+1 ऑटोमेशन जरूरी चीजों को बेहतर नहीं बनाता है, केवल अधिक लगातार और अक्सर तेज होता है!
जेम्स

4

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

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