हाइपर-पैरामोटर ट्यूनिंग आधार परीक्षण डेटा और मॉडल चयन आधार सत्यापन डेटा करने के बाद पूरे डेटा पर अंतिम मॉडल को प्रशिक्षित क्यों नहीं किया जाता है?


9

पूरे डेटा से मेरा मतलब है कि ट्रेन + परीक्षण + सत्यापन

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


2
आपको अपने परीक्षण डेटा का उपयोग करके अपने हाइपरपरमेटर्स को ठीक करना चाहिए। आपने सिर्फ अपने अंधे नियंत्रण समूह (परीक्षण सेट) को हटाकर अपने पूरे प्रयोग को बिगाड़ दिया।
जाह्नवीस 13

@JahKnows एक मॉडल के लिए हाइपर मापदंडों को ट्यून करने के बाद, मुझे नुकसान की समझ नहीं है, सिवाय इसके कि मुझे नहीं पता होगा कि एक अलग डेटासेट पर यह कितना अच्छा है। मैंने अपना प्रयोग कैसे बिगाड़ा? क्या मैं कुछ भूल रहा हूँ?
अपूर्वा अभिषेक

जवाबों:


8

सवाल एक गलत धारणा के तहत है। बहुत से लोग वही करते हैं जो आप कहते हैं कि वे "नहीं" कर सकते हैं।

वास्तव में, व्यापक रूप से तैनात स्केलेर पैकेज में ग्रिड खोज कार्यान्वयन बस यही करता है। जब तक refit=False, यह संपूर्ण डेटा का उपयोग करके अंतिम मॉडल को वापस नहीं लेगा।

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

लेकिन फिर से, ज्यादातर लोग वास्तव में क्रॉस-वैलिडेशन के बाद पूरे डेटा का उपयोग करके पीछे हट जाते हैं, ताकि वे सबसे अच्छे मॉडल के साथ समाप्त हो सकें।

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


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

@NeilSlater मुझे समझ नहीं आ रहा है कि आपने यहाँ क्या कहा है: "यह सुविधा क्रॉस-मान्यता का फिर से उपयोग करने के बारे में है"
रिकार्डो क्रूज़

"सुविधा" -> refitGridSearchCV फ़ंक्शन का विकल्प। यह आयोजित किए गए परीक्षण डेटा को शामिल करने के लिए फिर से फिट नहीं है (यह उस डेटा को देखने के लिए भी नहीं मिलता है)।
नील स्लेटर

@NeilSlater, आप आसानी से अपने लिए कोड की जांच कर सकते हैं यदि आप मुझ पर (यहाँ) विश्वास नहीं करते हैं । यदि refit = True है, तो "संपूर्ण डेटासेट का उपयोग करके सबसे अच्छा अनुमानक फिट करें"।
रिकार्डो क्रूज़

1
@NeilSlater, यह मेरा अनुभव नहीं है, लेकिन मैंने आपके अनुभव को अपनी टिप्पणी में जोड़ा है, ताकि अन्य लोग इससे लाभान्वित हो सकें। धन्यवाद।
रिकार्डो क्रूज़

1

हाँ तुम कर सकते हो।

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

लेकिन यह सच है कि परीक्षण डेटा ट्रेन डेटा के समान सटीक वितरण से आता है, इसलिए वास्तविक एप्लिकेशन केस परिदृश्य में आपको अपने मॉडल की बेहतर सामान्यता मिल सकती है।


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

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

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

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

1

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


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