मॉडल-निर्माण प्रक्रिया इंटरैक्टिव होने पर बैक-टेस्टिंग या क्रॉस-वैरिफाइंग


9

मेरे पास कुछ पूर्वानुमानित मॉडल हैं, जिनका प्रदर्शन मैं बैक-टेस्ट करना चाहता हूं (अर्थात, मेरे डेटासेट को "रिवाइंड" करके इसे पिछले बिंदु तक ले जाऊंगा और फिर देखूंगा कि मॉडल ने कैसा प्रदर्शन किया है)।

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

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

मैं मॉडल-निर्माण प्रक्रिया के इंटरेक्टिव भागों को स्वचालित करने की सामान्य समस्या (या इन दोनों मामलों के लिए विशिष्ट सलाह) दोनों की सलाह और समाधान की सराहना करता हूं। धन्यवाद!

जवाबों:


4

FYI करें, यह SE.DataScience के लिए अधिक उपयुक्त हो सकता है, लेकिन फिलहाल, मैं इसका उत्तर यहां दूंगा।

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

मोटे तौर पर, यह प्रतीत होता है कि आपके पास विभिन्न मदों की एक जोड़ी है जिन्हें आपको इसे लागू करने के लिए हल करना होगा।

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

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

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

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

यदि इसमें से कोई भी आपके लिए उपयोगी है और आप चाहेंगे कि मैं इसमें से किसी पर विस्तार करूं, तो टिप्पणी करें, मुझे बताएं, और मैं ऐसा करने के लिए खुश हूं।


मुझे वास्तव में कोड लिखने में किसी भी तरह की मदद की आवश्यकता नहीं है, धन्यवाद - हमारा बैकएस्टिंग इन्फ्रास्ट्रक्चर पहले से ही काफी मजबूत है। मैं सिर्फ इस बात में दिलचस्पी रखता हूं कि कोई सांख्यिकीय प्रक्रिया क्या उपयोग कर सकता है। मॉडल-बिल्डिंग के इंटरेक्टिव भाग को स्वचालित रूप से स्वचालित करने के संबंध में: क्या इस बारे में कुछ लिखा गया है? मैंने साहित्य में इस तरह की प्रक्रिया का कोई उल्लेख नहीं देखा है। आप उल्लेख करते हैं "लोगों ने पूरे सॉफ्टवेयर पुस्तकालयों को लिखा है" - क्या आपके पास कोई संदर्भ है?
बेन कुह्न

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


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

@BenKuhn - वास्तविक व्यावसायिक ज्ञान भाग को कार्यान्वित करने के लिए आपको इसे संहिताबद्ध करना होगा और यह सुनिश्चित करना होगा कि आवश्यक होने पर ऐसे निर्धारण करने के लिए आवश्यक डेटा उपलब्ध हो। इसके अलावा, मैं "सॉफ़्टवेयर लाइब्रेरी" शब्द का उपयोग एक कंबल शब्द के रूप में करता हूं, जिसमें एक्सटेंशन से लेकर मौजूदा मॉडलिंग लाइब्रेरी तक सब कुछ शामिल है, जो कुछ अनुप्रयोगों के लिए मॉडल बिल्डिंग को स्वचालित करने के लिए हैं, सभी तरह से औद्योगिक-ग्रेड, मालिकाना विशेषज्ञ और निर्णय समर्थन प्रणाली।
Habu

3

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


स्वचालित ट्यूनिंग (प्रत्येक बैकस्ट टाइम बिंदु पर एक अलग ट्यूनिंग रन के साथ) "वास्तव में ईमानदार बैकस्ट वातावरण" क्यों नहीं होगा?
बेन कुह्न

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

@BenKuhn - मैं इस बारे में andrew की चिंताओं को साझा करता हूं कि क्या बैकस्टेस्ट मॉडल की आउट-ऑफ-सैंपल प्रेडिक्टिव पावर का वास्तव में "ईमानदार" परीक्षण होगा, यदि इस तथ्य के अलावा कोई अन्य कारण नहीं है कि यह प्रतीत होता है कि आपने अपने ट्यूनिंग पैरामीटर विकसित किए हैं आपके लिए संपूर्ण डेटासेट उपलब्ध है; यहां तक ​​कि अगर आप "घड़ी को फिर से हवा देते हैं" और अपने मॉडल को गतिशील रूप से पुनर्निर्माण करते हैं, तो जिस पद्धति से आप ऐसा कर रहे हैं वह संपूर्ण डेटासेट के संदर्भ में विकसित किया गया होगा, इसलिए यह जोखिम मौजूद है कि मॉडल अभी भी ओवरफिट होगा, भले ही यह हो उपलब्ध डेटा के सबसेट पर फिर से प्रशिक्षित।
ha

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

1
और वित्त के रूप में शोर के रूप में एक डोमेन में, आप यह सुनिश्चित करना चाहते हैं कि यदि इतिहास थोड़ा अलग था (लेकिन अभी भी कुछ अंतर्निहित वितरण से तैयार किया गया है) तो आप अभी भी एक समान मॉडल पर पहुंचेंगे। यदि आपको विश्वास है कि आपकी प्रक्रिया नमूने के विचलन से अधिक मजबूत है, तो मुझे लगता है कि आप अच्छे हैं। लेकिन मेरे अनुभव में स्वचालित ट्यूनिंग प्रक्रियाएं नमूने के विचरण के प्रति बहुत संवेदनशील हो सकती हैं।
एंड्रयू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.