ट्रेन में बैठने और परीक्षण से पहले या बाद में प्रतिष्ठा?


18

मेरे पास N ~ 5000 के साथ एक डेटा सेट है और लगभग 1/2 कम से कम एक महत्वपूर्ण चर पर गायब है। मुख्य विश्लेषणात्मक विधि कॉक्स आनुपातिक खतरे होंगे।

मैं कई प्रतिरूपण का उपयोग करने की योजना बना रहा हूं। मैं ट्रेन और टेस्ट सेट में भी बंट जाऊंगा।

क्या मुझे डेटा को विभाजित करना चाहिए और फिर अलग से थोपना चाहिए, या इंप्यूट करना चाहिए और फिर विभाजित करना चाहिए?

अगर यह मायने रखता है, तो PROC MIमें उपयोग करूंगा SAS


2
एक महत्वपूर्ण चर के लिए 50% लापता मान? ओह। थोपने के बजाय, परिवर्तनशील के लिए 'मिसिंग' श्रेणी क्यों नहीं बनाई गई?
राबर्टएफ

किसी एक चर में 50% गायब नहीं है, लेकिन कम से कम एक पर लगभग 50% गायब है। इसके अलावा, वे निरंतर हैं, इसलिए "लापता" चीजों को गड़बड़ कर देगा।
पीटर Flom - को पुनः स्थापित मोनिका

आह। मैं नपुंसकता का उपयोग कर घबरा जाता हूं। मुझे आश्चर्य है कि प्रतियोगिता में 50% मूल्यों के साथ निरंतर चर होने के गुण के बारे में। एक 'लापता' श्रेणी के साथ श्रेणीबद्ध करने के लिए वैरिएबल और गैर-लापता मानों को पकड़ने के लिए पर्याप्त डिब्बे?
राबर्ट एफआर

मुझे लगातार वैरिएबल को कम करना पसंद नहीं है।
पीटर फ्लॉम - मोनिका

जवाबों:


20

आपको पूर्व-प्रसंस्करण या अव्यवस्था से पहले विभाजित होना चाहिए।

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

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

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


जब आप कहते हैं "आप इसे दोनों सेटों पर एक ही तरह से करते हैं", तो क्या आपका मतलब है: "परीक्षण सेट में लापता डेटा को लागू करने के लिए एक ही विधि का उपयोग करें, लेकिन समान डेटा नहीं"?
टाइमविज़

@colorlace अतीत / भविष्य की सादृश्य का उपयोग करें। आपने अतीत में प्रशिक्षण सेट का उपयोग किया, और कुछ मूल्यों को लगाया। अब आप भविष्य में परीक्षण सेट प्राप्त करते हैं, और इसके कुछ मूल्यों को लागू करना चाहते हैं; आप संभवतः उसी विधि का उपयोग करेंगे जैसे कि परीक्षण डेटा पर लागू करने से पहले (हालांकि आप प्रशिक्षण डेटा से जो सीखा है उसे शामिल करने के लिए स्वतंत्र हैं)
हेनरी

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

1
@colorlace: वह अंतिम बिंदु ठीक वही है जो मैं कह रहा हूं: आप प्रशिक्षण डेटा के साथ कुछ भी नहीं करते हैं परीक्षण डेटा द्वारा सूचित किया जाना चाहिए (सादृश्य यह है कि भविष्य अतीत को प्रभावित नहीं करना चाहिए), लेकिन आप परीक्षण डेटा के साथ क्या करते हैं प्रशिक्षण डेटा द्वारा सूचित किया जा सकता है (सादृश्य यह है कि आप भविष्य की भविष्यवाणी करने में मदद करने के लिए अतीत का उपयोग कर सकते हैं)
हेनरी

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

1

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

लेकिन आप पूछ सकते हैं, अगर मैं बंटवारे के बाद थोपता हूं, तो क्रॉस थ्रेडेशन करने की आवश्यकता होने पर यह बहुत थकाऊ हो सकता है। इसके लिए मेरा सुझाव स्केलेरन पाइपलाइन का उपयोग करना है। यह वास्तव में आपके कोड को सरल करता है, और गलती करने की संभावना को कम करता है। पाइपलाइन देखें


0

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

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

मुझे लगता है कि r में कैरेट पैकेज उस सेटिंग में बहुत उपयोगी है। मैं विशिष्ट विशिष्ट पोस्ट में पाया गया कि https://topepo.github.io/caret/model-training-and-tuning.html

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