अंतिम मॉडल को प्रशिक्षित करने के लिए पूरे डेटासेट का उपयोग करना हमेशा बेहतर होता है?


24

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

मेरा सवाल है: क्या ऐसा करना हमेशा सबसे अच्छा है? यदि वास्तव में प्रदर्शन बिगड़ता है तो क्या होगा?

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

मेरे प्रारंभिक प्रश्न को पुन: प्रकाशित करना:

यदि आपके पास एक मॉडल का एकमुश्त प्रदर्शन था , जैसे कि इसे एम्बेडेड इलेक्ट्रॉनिक्स ऑन-बोर्ड एक महंगे रॉकेट प्रयोग में तैनात करना, तो क्या आप एक मॉडल पर भरोसा करेंगे, जिसे अंतिम चरण में पुन: प्रशिक्षित किए बिना पुन: प्रशिक्षित किया गया है- इसके नए प्रदर्शन पर परीक्षण किया गया?

जवाबों:


14

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

अब, आप परीक्षण डेटा पर सांख्यिकीय / प्रदर्शन दावे नहीं कर सकते क्योंकि आपके पास अब कोई परीक्षण डेटासेट नहीं है।

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

लेकिन अगर आप नए डेटा के लक्ष्य मूल्यों को जानते हैं, तो आप पहले स्थान पर एक मॉडल को क्यों प्रशिक्षित करेंगे?

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


+ 1'd, उत्तर के लिए धन्यवाद! 80/20 में विभाजित होने से पहले डेटासेट के यादृच्छिक फेरबदल की तरह लगता है शायद हमें "सांख्यिकीय" आत्मविश्वास महसूस करता है (:
pcko1

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

13

दिलचस्प सवाल। मैंने व्यक्तिगत रूप से उत्पादों में उत्पादन के लिए नहीं देखा है, लेकिन तर्क को समझें।

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

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

[संपादित करें]

यहां क्रॉस-वैलिडेट पर एक संबंधित प्रश्न है , जहां स्वीकृत उत्तर मेरे लिए समान बिंदु बनाता है और चीजों को करने के अन्य तरीकों का उल्लेख करता है।


हम लूप ओवर:

  1. एक मॉडल को प्रशिक्षित करें
  2. मॉडल बदलें
  3. चरण 1 पर जाएं
  4. परीक्षण सेट पर प्रदर्शन का आकलन करें
  5. चरण 5 में पाया गया परीक्षण सटीकता के साथ वर्तमान मॉडल

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

एक पवित्रता जांच मूल परीक्षण सेट पर फिर से अंतिम प्रशिक्षित मॉडल का परीक्षण करने के लिए होगी; यह अपेक्षा करते हुए कि यह पहले से कहीं अधिक है जब मॉडल ने केवल ट्रेन / वैल सेट को देखा था, क्योंकि यह वास्तव में प्रशिक्षण के दौरान परीक्षण सेट को देखा है। इससे मुझे 100% विश्वास नहीं होगा कि यह अंतिम मॉडल भविष्य के सभी मामलों में बेहतर है, लेकिन कम से कम यह उतना ही अच्छा है जितना कि दिए गए डेटा के साथ हो सकता है।

शायद आप जो कहते हैं (शायद अकादमिक रूप से प्रेरित) करने के खिलाफ अधिक कठोर तर्क हैं, हालांकि यह व्यावहारिक अनुप्रयोगों के लिए आकर्षक लगता है!


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

1
आपका स्वागत है! मैं आपके कथन से पूरी तरह सहमत हूं (हालांकि मैंने मूल परीक्षण डेटा पर अंतिम प्रशिक्षित मॉडल का परीक्षण करने के लिए कहा था , ट्रेन नहीं)। किसी भी मामले में, मैं अभी भी यह देखना चाहता हूं कि अंतिम मॉडल ने पूरी तरह से अप्रत्याशित कुछ नहीं किया है। सिद्धांत और व्यवहार हमेशा संरेखित नहीं करते हैं :)
n1k31t4

6

एक बिंदु जिसे सांख्यिकीय मशीन सीखने के बारे में जोर देने की आवश्यकता है, वह यह है कि कोई गारंटी नहीं है । जब आप किसी आउट-आउट सेट का उपयोग करके प्रदर्शन का अनुमान लगाते हैं, तो यह केवल एक अनुमान है । अनुमान गलत हो सकता है।

यह कुछ करने के लिए इस्तेमाल किया जा रहा है, लेकिन यह कुछ आप के साथ सहज होने जा रहा है। जब आप कहते हैं कि "क्या होगा यदि प्रदर्शन वास्तव में बिगड़ता है?", तो उत्तर निश्चित है, ऐसा हो सकता है। वास्तविक प्रदर्शन आपके द्वारा अनुमानित / अनुमानित से भी बदतर हो सकता है। यह बेहतर भी हो सकता है। दोनों संभव हैं। यह अपरिहार्य है। कुछ अंतर्निहित, अकाट्य अनिश्चितता है।

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

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

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

विशेष रूप से, मानक अभ्यास इस प्रकार है:

  1. अपने कुछ डेटा को एक आउट-आउट टेस्ट सेट में आरक्षित करें। किस अंश का उपयोग करना है, इसके बारे में कोई कठिन और तेज़ नियम नहीं है, लेकिन उदाहरण के लिए, आप परीक्षण सेट के लिए 20% आरक्षित कर सकते हैं और शेष 80% प्रशिक्षण और सत्यापन के लिए रख सकते हैं। आम तौर पर, सभी विभाजन यादृच्छिक होना चाहिए।

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

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

  4. जब आप तैयार हो जाते हैं, तो आप पहले चुने गए आर्किटेक्चर और हाइपरपरमेटर्स का उपयोग करके एक मॉडल को पूर्ण प्रशिक्षण + सत्यापन सेट (जो कि 80%) पर प्रशिक्षित करते हैं। फिर, आयोजित परीक्षा के सेट पर इसकी सटीकता को मापें। यह मॉडलिंग दृष्टिकोण कितना सही होगा, इसके लिए आपका अनुमान / भविष्यवाणी है। आपको यहां एक ही नंबर मिलता है। यह संख्या वह है जो है: यदि आप इससे खुश नहीं हैं, तो आप चरण 1 और 2 पर वापस नहीं जा सकते हैं और अधिक प्रयोग कर सकते हैं; यह अमान्य होगा।

  5. अंत में, उत्पादन उपयोग के लिए, आप संपूर्ण डेटा सेट, प्रशिक्षण + सत्यापन + परीक्षण सेट पर एक मॉडल को प्रशिक्षित कर सकते हैं और इसे उत्पादन उपयोग में डाल सकते हैं। ध्यान दें कि आप इस उत्पादन मॉडल की सटीकता को कभी नहीं मापते हैं, क्योंकि आपके पास ऐसा करने के लिए कोई शेष डेटा नहीं है; आपने पहले ही सभी डेटा का उपयोग कर लिया है। यदि आप यह अनुमान लगाते हैं कि यह कितना अच्छा प्रदर्शन करेगा, तो आप चरण 4 से अनुमानित सटीकता का उपयोग करने के हकदार हैं क्योंकि यह आपके उत्पादन में कितना अच्छा प्रदर्शन करेगा, क्योंकि यह भविष्य के प्रदर्शन का सबसे अच्छा उपलब्ध पूर्वानुमान है। हमेशा की तरह, कोई गारंटी नहीं है - यह केवल सबसे अच्छा अनुमान संभव है, हमें उपलब्ध जानकारी दी गई है। यह निश्चित रूप से संभव है कि यह आप की भविष्यवाणी की तुलना में बदतर कर सकता है, या आप की भविष्यवाणी की तुलना में बेहतर है - यह हमेशा सच है।


+ 1 प्रयास के लिए, भले ही मैं पूरी तरह से सहमत न हों :) उदाहरण के लिए जब आप उल्लेख करते हैं "अपेक्षित प्रदर्शन के संदर्भ में, सभी डेटा का उपयोग करना डेटा के कुछ का उपयोग करने की तुलना में बदतर नहीं है, और संभवतः बेहतर है।" मैं इसके पीछे तर्क नहीं देखता। दूसरी ओर, जिस 2 बिंदु का आप उल्लेख करते हैं वह बहुत महत्वपूर्ण लगता है, सत्यापन को पार करें! इसलिए अनिवार्य रूप से आप सभी नमूनों के साथ प्रशिक्षण / सत्यापन करते हैं, इस प्रकार संभवतः आप चुने हुए अंतिम मॉडल में आउटलेर्स को अस्वीकार करते हैं। आपके उत्तर के लिए धन्यवाद।
pcko1

@ pcko1, सिद्धांत सरल है। यदि आपके पास डेटा है, तो क्या आपको इसका उपयोग करना चाहिए, या इसका कुछ? क्यूं कर? हो सकता है कि जब हम डेटा प्राप्त करते हैं, तो इससे पहले कि हम कुछ भी करें, हमें बस 10% लेना चाहिए और इसे फेंक देना चाहिए और इसे कभी नहीं देखना चाहिए। वास्तव में, यदि कुछ फेंकना अच्छा है, तो अधिक फेंकना और भी बेहतर है, इसलिए शायद हमें अपना सारा डेटा फेंक देना चाहिए। यह बेतुका है, है ना? क्यूं कर? देखें कि क्या आप पता लगा सकते हैं कि क्यों, और फिर इसे इस स्थिति में लागू करने का प्रयास करें। उम्मीद है कि यह आपको सोच रहा है!
डीडब्ल्यू

3

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

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