ट्रेनिंग और टेस्ट सेट: डेटा को बांटना

पिछले मॉड्यूल में आपके डेटा सेट को दो सबसेट में बांटने का आइडिया दिया गया था:

  • ट्रेनिंग सेट—किसी मॉडल को ट्रेनिंग देने के लिए सबसेट.
  • test सेट—यह ट्रेनिंग वाले मॉडल को टेस्ट करने के लिए एक सबसेट है.

एक डेटा सेट को इस तरह से बांटा जा सकता है:

हॉरिज़ॉन्टल बार को दो हिस्सों में बांटा गया है: इसका 80% हिस्सा ट्रेनिंग सेट और 20% टेस्ट सेट है.

पहली इमेज. किसी एक डेटा सेट को ट्रेनिंग सेट और टेस्ट सेट में स्लाइस करना.

पक्का करें कि आपका टेस्ट सेट, इन दो शर्तों को पूरा करता हो:

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

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

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

दूसरा डायग्राम. टेस्ट डेटा से ट्रेन किए गए मॉडल की पुष्टि करना.

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

उदाहरण के लिए, एक ऐसा मॉडल चुनें जो यह अनुमान लगाता है कि कोई ईमेल स्पैम है या नहीं. इसके लिए, सब्जेक्ट लाइन, ईमेल के मुख्य हिस्से, और ईमेल भेजने वाले के ईमेल पते का इस्तेमाल सुविधाओं के तौर पर किया जाता है. हम इस डेटा को ट्रेनिंग और टेस्ट सेट में बांटते हैं. इन्हें 80 से 20 के बीच बांटा जाता है. ट्रेनिंग के बाद, यह मॉडल ट्रेनिंग सेट और टेस्ट सेट, दोनों पर 99% सटीक बन जाता है. हम उम्मीद करते हैं कि टेस्ट सेट कम सटीक तरीके से काम करेगा, इसलिए हमने डेटा को फिर से देखा और पता लगाया कि टेस्ट सेट में कई उदाहरण ट्रेनिंग सेट के उदाहरणों के डुप्लीकेट हैं. डेटा को शेयर करने से पहले, हम अपने इनपुट डेटाबेस से, एक ही स्पैम ईमेल की डुप्लीकेट एंट्री को नज़र नहीं रखते. हमने अनजाने में अपने कुछ टेस्ट डेटा को ट्रेनिंग दी है. इस वजह से, हम अब सही तरीके से यह नहीं माप पा रहे हैं कि हमारा मॉडल, नए डेटा को तैयार करने में कितनी अच्छी तरह कामयाब होता है.