ओवरफ़िटिंग

ओवरफ़िटिंग का मतलब है, ऐसा मॉडल बनाना जो ट्रेनिंग सेट से इतना ज़्यादा मैच (याद रखता है) करता है कि वह नए डेटा के लिए सही अनुमान नहीं लगा पाता. ओवरफ़िट मॉडल, किसी ऐसे आविष्कार की तरह है जो लैब में अच्छा परफ़ॉर्म करता है, लेकिन असल दुनिया में काम का नहीं होता.

कल्पना करें कि इमेज 11 में, हर ज्यामितीय आकार किसी स्क्वेयर फ़ॉरेस्ट में पेड़ की पोज़िशन दिखाता है. नीले रंग के डायमंड से, स्वस्थ पेड़ों की जगहों को मार्क किया जाता है, जबकि नारंगी रंग के सर्कल से, बीमार पेड़ों की जगहों को मार्क किया जाता है.

इमेज 11. इस आंकड़े में करीब 60 बिंदु हैं. इनमें से आधे बिंदु,
            स्वस्थ पेड़ों के और आधे बिंदु, बीमार पेड़ों के हैं.
            सेहतमंद पेड़ मुख्य रूप से उत्तर-पूर्वी क्वाड्रेंट में हैं. हालांकि, कुछ सेहतमंद पेड़ उत्तर-पश्चिमी क्वाड्रेंट में भी हैं. बीमार पेड़ मुख्य रूप से दक्षिण-पूर्व क्वार्ट्रेंट में हैं, लेकिन कुछ बीमार पेड़ दूसरे क्वार्ट्रेंट में भी हैं.
11वां डायग्राम. ट्रेनिंग सेट: किसी स्क्वेयर फ़ॉरेस्ट में, स्वस्थ और बीमार पेड़ों की जगहें.

 

स्वस्थ पेड़ों को बीमार पेड़ों से अलग करने के लिए, मन में कोई भी आकार बनाएं—रेखाएं, कर्व, ओवल...कुछ भी. इसके बाद, अगली लाइन को बड़ा करके, अलग होने की संभावित वजह की जांच करें.

इमेज 12 में दिखाए गए जटिल आकार, पेड़ों के दो आकारों को छोड़कर, बाकी सभी आकारों को सही कैटगरी में डाल पाए. अगर हम आकारों को मॉडल के तौर पर देखते हैं, तो यह एक बेहतरीन मॉडल है.

या फिर ऐसा होना चाहिए? बेहतरीन मॉडल, नए उदाहरणों को सही कैटगरी में बांटता है. 13वें चित्र में दिखाया गया है कि जब वही मॉडल, टेस्ट सेट के नए उदाहरणों के आधार पर अनुमान लगाता है, तो क्या होता है:

इमेज 13. 12वीं इमेज में दिखाए गए मॉडल पर, स्वस्थ और बीमार पेड़ों का नया बैच ओवरले किया गया है. मॉडल, कई पेड़ों को गलत कैटगरी में डालता है.
इमेज 13.टेस्ट सेट: बीमार और स्वस्थ पेड़ों में अंतर करने के लिए एक जटिल मॉडल.

 

इसलिए, 12वें चित्र में दिखाया गया कॉम्प्लेक्स मॉडल, ट्रेनिंग सेट पर बेहतरीन परफ़ॉर्म करता है, लेकिन टेस्ट सेट पर बहुत खराब परफ़ॉर्म करता है. यह ट्रेनिंग सेट के डेटा के लिए, मॉडल के ओवरफ़िट होने का एक क्लासिक उदाहरण है.

फ़िटिंग, ओवरफ़िटिंग, और अंडरफ़िटिंग

मॉडल को नए डेटा के आधार पर अच्छे अनुमान लगाने चाहिए. इसका मतलब है कि आपको ऐसा मॉडल बनाना है जो नए डेटा के हिसाब से "काम" करे.

जैसा कि आपने देखा है, ओवरफ़िट मॉडल, ट्रेनिंग डेटा के लिए बेहतर अनुमान लगाता है, लेकिन नए डेटा के लिए खराब अनुमान लगाता है. अंडरफ़िट मॉडल, ट्रेनिंग डेटा के आधार पर भी अच्छे अनुमान नहीं लगाता. अगर ओवरफ़िट मॉडल, ऐसे प्रॉडक्ट की तरह है जो लैब में अच्छा परफ़ॉर्म करता है, लेकिन असल दुनिया में खराब परफ़ॉर्म करता है, तो अंडरफ़िट मॉडल, ऐसे प्रॉडक्ट की तरह है जो लैब में भी अच्छा परफ़ॉर्म नहीं करता.

चौदहवां चित्र. कार्टेशियन प्लॉट. एक्स-ऐक्सिस को 'ट्रेनिंग सेट पर अनुमानों की क्वालिटी' के तौर पर लेबल किया गया है. Y-ऐक्सिस को 'असल डेटा के आधार पर, अनुमान की क्वालिटी' के तौर पर लेबल किया गया है. कर्व, ऑरिजिन से शुरू होता है और धीरे-धीरे बढ़ता है,
            लेकिन फिर उतनी ही तेज़ी से गिरता है. कर्व के सबसे नीचे बाईं ओर मौजूद हिस्से को 'अंडरफ़िट मॉडल' लेबल किया गया है. इसमें, असल डेटा पर आधारित अनुमान की क्वालिटी और ट्रेनिंग सेट पर आधारित अनुमान की क्वालिटी, दोनों खराब होती हैं. कर्व के सबसे नीचे दाईं ओर मौजूद हिस्से को 'ओवरफ़िट मॉडल' लेबल किया गया है. इस हिस्से में, असल डेटा पर अनुमान की क्वालिटी कम होती है, लेकिन ट्रेनिंग सेट पर अनुमान की क्वालिटी ज़्यादा होती है. कर्व के सबसे ऊपरी हिस्से (असल डेटा पर आधारित अनुमान की अच्छी क्वालिटी और ट्रेनिंग सेट पर आधारित अनुमान की औसत क्वालिटी) को 'फ़िट मॉडल' के तौर पर लेबल किया गया है.
चौदहवीं इमेज. अंडरफ़िट, फ़िट, और ओवरफ़िट मॉडल.

 

जनरलाइज़ेशन, ओवरफ़िटिंग के उलट होता है. इसका मतलब है कि बेहतर तरीके से सामान्य बनाने वाला मॉडल, नए डेटा के लिए अच्छे अनुमान लगाता है. आपका लक्ष्य ऐसा मॉडल बनाना है जो नए डेटा के लिए भी काम करता हो.

ओवरफ़िटिंग का पता लगाना

इन कर्व की मदद से, ओवरफ़िटिंग का पता लगाया जा सकता है:

  • लॉस कर्व
  • सामान्यीकरण कर्व

लॉस कर्व, ट्रेनिंग के दोहराव की संख्या के हिसाब से मॉडल के लॉस को प्लॉट करता है. दो या उससे ज़्यादा लॉस कर्व दिखाने वाले ग्राफ़ को जनरलाइज़ेशन कर्व कहा जाता है. नीचे दिया गया जनरलाइज़ेशन कर्व, दो लॉस कर्व दिखाता है:

इमेज 15. ट्रेनिंग सेट के लिए लॉस फ़ंक्शन धीरे-धीरे कम होता है. पुष्टि करने वाले सेट के लिए लॉस फ़ंक्शन भी कम हो जाता है,
            लेकिन कुछ बार दोहराए जाने के बाद यह बढ़ने लगता है.
15वीं इमेज. सामान्यीकरण का ऐसा कर्व जो ओवरफ़िटिंग का पता लगाता है.

 

ध्यान दें कि दोनों लॉस कर्व पहले एक जैसे दिखते हैं और फिर अलग-अलग हो जाते हैं. इसका मतलब है कि कुछ बार दोहराए जाने के बाद, ट्रेनिंग सेट के लिए लॉस कम हो जाता है या एक जैसा रहता है (कंसीव हो जाता है), लेकिन पुष्टि करने वाले सेट के लिए बढ़ जाता है. इससे ओवरफ़िट होने का पता चलता है.

इसके उलट, अच्छी तरह से फ़िट किए गए मॉडल के लिए जनरलाइज़ेशन कर्व, दो लॉस कर्व दिखाता है, जिनका आकार एक जैसा होता है.

ओवरफ़िटिंग की वजह क्या है?

आम तौर पर, ओवरफ़िट होने की समस्या इनमें से किसी एक या दोनों वजहों से होती है:

  • ट्रेनिंग सेट, असल ज़िंदगी के डेटा (या पुष्टि करने वाले सेट या टेस्ट सेट) को सही तरीके से नहीं दिखाता.
  • मॉडल बहुत जटिल है.

सामान्य बनाने की शर्तें

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

  • उदाहरणों को अलग-अलग और एक जैसा डिस्ट्रिब्यूट किया जाना चाहिए. इसका मतलब है कि आपके उदाहरणों का एक-दूसरे पर असर नहीं पड़ सकता.
  • डेटासेट स्टेशनरी है. इसका मतलब है कि डेटासेट में समय के साथ काफ़ी बदलाव नहीं होता.
  • डेटासेट के अलग-अलग हिस्सों में डेटा का बंटवारा एक जैसा होता है. इसका मतलब है कि ट्रेनिंग सेट के उदाहरण, आंकड़ों के हिसाब से पुष्टि करने वाले सेट, टेस्ट सेट, और असल दुनिया के डेटा के उदाहरणों से मिलते-जुलते हैं.

नीचे दिए गए एक्सरसाइज़ की मदद से, ऊपर बताई गई शर्तों के बारे में जानें.

एक्सरसाइज़: देखें कि आपको क्या समझ आया

डेटासेट के इन सेगमेंट पर विचार करें.
एक हॉरिज़ॉन्टल बार, जिसे तीन हिस्सों में बांटा गया है: बार का 70% हिस्सा
                     ट्रेनिंग सेट है, 15% हिस्सा पुष्टि करने वाला सेट है, और 15% हिस्सा
                     टेस्ट सेट है
यह पक्का करने के लिए कि ट्रेनिंग सेट के उदाहरणों का आंकड़ों के हिसाब से बंटवारा, पुष्टि करने वाले सेट और टेस्ट सेट के उदाहरणों के बंटवारे से मिलता-जुलता हो, आपको क्या करना चाहिए?
डेटासेट के उदाहरणों को अलग-अलग ग्रुप में बांटने से पहले, उन्हें अच्छी तरह से शफ़ल करें.
हां. उदाहरणों को अच्छी तरह से शफ़ल करने से, आंकड़ों के हिसाब से सेगमेंट एक जैसे होने की संभावना बढ़ जाती है.
उदाहरणों को सबसे पुराने से लेकर सबसे नए के क्रम में लगाएं.
अगर डेटासेट में मौजूद उदाहरण एक जैसे नहीं हैं, तो क्रम से लगाने पर, सेगमेंट एक-दूसरे से कम मिलते-जुलते हो जाते हैं.
कुछ न करें. ज़रूरत के मुताबिक उदाहरणों के आधार पर, औसत के नियम से यह अपने-आप पक्का हो जाता है कि डिस्ट्रिब्यूशन, आंकड़ों के हिसाब से एक जैसे होंगे.
माफ़ करें, ऐसा नहीं है. डेटासेट के कुछ सेक्शन में दिए गए उदाहरण, दूसरे सेक्शन में दिए गए उदाहरणों से अलग हो सकते हैं.
एक स्ट्रीमिंग सेवा, अगले तीन सालों में संभावित नए टीवी शो की लोकप्रियता का अनुमान लगाने के लिए एक मॉडल बना रही है. स्ट्रीमिंग सेवा, मॉडल को ऐसे डेटासेट पर ट्रेन करने की योजना बना रही है जिसमें पिछले 10 सालों के करोड़ों उदाहरण शामिल हैं. क्या इस मॉडल को कोई समस्या होगी?
शायद। दर्शकों की पसंद, पिछले व्यवहार के आधार पर नहीं तय की जा सकती.
हां. दर्शकों की पसंद में बदलाव होता रहता है. ये लगातार बदलते रहते हैं.
बिल्कुल नहीं. डेटासेट का साइज़, अच्छे अनुमान लगाने के लिए काफ़ी है.
माफ़ करें, दर्शकों की पसंद में बदलाव होता रहता है.
शायद नहीं. दर्शकों की पसंद समय-समय पर बदलती रहती है. 10 साल के डेटा की मदद से, मॉडल आने वाले समय के रुझानों के बारे में अच्छे अनुमान लगा पाएगा.
मनोरंजन के कुछ पहलू कुछ हद तक साइकल के हिसाब से होते हैं. हालांकि, मनोरंजन के इतिहास के आधार पर ट्रेन किए गए मॉडल को अगले कुछ सालों के बारे में अनुमान लगाने में ज़रूर परेशानी होगी.
इस मॉडल का मकसद, एक मील पैदल चलने में लगने वाले समय का अनुमान लगाना है. यह अनुमान, मौसम के डेटा (तापमान, ड्यू पॉइंट, और बारिश) के आधार पर लगाया जाता है. यह डेटा, किसी ऐसे शहर में एक साल के दौरान इकट्ठा किया जाता है जहां मौसम, सीज़न के हिसाब से काफ़ी अलग-अलग होता है. क्या इस डेटासेट से कोई मॉडल बनाया जा सकता है और उसकी जांच की जा सकती है, भले ही मौसम की जानकारी, सीज़न के हिसाब से काफ़ी बदलती हो?
हां
हां, इस डेटासेट से मॉडल बनाया और टेस्ट किया जा सकता है. आपको सिर्फ़ यह पक्का करना होगा कि डेटा को बराबर हिस्सों में बांटा गया हो, ताकि चारों सीज़न का डेटा अलग-अलग हिस्सों में बराबर बांटा जा सके.
नहीं
मान लें कि इस डेटासेट में तापमान, ड्यूपॉइंट, और बारिश के काफ़ी उदाहरण हैं, तो इस डेटासेट से मॉडल बनाया जा सकता है और उसकी जांच की जा सकती है. आपको सिर्फ़ यह पक्का करना होगा कि डेटा को बराबर-बराबर बांटा गया हो, ताकि चारों सीज़न का डेटा अलग-अलग सेगमेंट में बराबर-बराबर बांटा जा सके.

चैलेंज वाली कसरत

आपने एक ऐसा मॉडल बनाया है जो किसी खास रूट के लिए, ट्रेन का टिकट खरीदने के लिए, लोगों के हिसाब से सबसे सही तारीख का अनुमान लगाता है. उदाहरण के लिए, मॉडल यह सुझाव दे सकता है कि उपयोगकर्ता 23 जुलाई को चलने वाली ट्रेन के लिए, 8 जुलाई को अपना टिकट खरीदें. ट्रेन कंपनी हर घंटे किराये अपडेट करती है. ये अपडेट कई बातों पर आधारित होते हैं, लेकिन मुख्य रूप से उपलब्ध सीटों की संख्या पर. यानी:

  • अगर ज़्यादा सीटें उपलब्ध हैं, तो आम तौर पर टिकट की कीमतें कम होती हैं.
  • अगर बहुत कम सीटें उपलब्ध हैं, तो आम तौर पर टिकट की कीमतें ज़्यादा होती हैं.
आपका मॉडल, पुष्टि करने वाले सेट और टेस्ट सेट पर कम डेटा लॉस दिखाता है. हालांकि, कभी-कभी रीयल-वर्ल्ड डेटा पर, बहुत खराब अनुमान लगाता है. क्यों?
जवाब देखने के लिए यहां क्लिक करें