यह मज़ेदार है कि सबसे उत्कीर्ण उत्तर वास्तव में सवाल का जवाब नहीं देता है :) इसलिए मैंने सोचा कि इसे और अधिक सिद्धांत के साथ वापस करना अच्छा होगा - ज्यादातर "डेटा माइनिंग: प्रैक्टिकल मशीन लर्निंग टूल्स एंड टेक्नीक" और टॉम मिशेल से लिया गया है "मशीन लर्निंग" ।
परिचय।
इसलिए हमारे पास एक क्लासिफायरियर और एक सीमित डेटासेट है, और एक निश्चित मात्रा में डेटा को प्रशिक्षण सेट में जाना चाहिए और बाकी का उपयोग परीक्षण के लिए किया जाता है (यदि आवश्यक हो, तो सत्यापन के लिए उपयोग किया जाने वाला एक तीसरा सबसेट)।
दुविधा का सामना हम इस प्रकार करते हैं: एक अच्छी क्लासी the एर को खोजने के लिए, "ट्रेनिंग सब्मिट" जितना संभव हो उतना बड़ा होना चाहिए, लेकिन एक अच्छी त्रुटि पाने के लिए "टेस्ट सब्मिट" जितना संभव हो उतना बड़ा होना चाहिए - लेकिन दोनों सबसेट से लिया गया है। एक ही पूल।
यह स्पष्ट है कि प्रशिक्षण सेट परीक्षण सेट से बड़ा होना चाहिए - अर्थात, विभाजन 1: 1 नहीं होना चाहिए (मुख्य लक्ष्य ट्रेन करना है , परीक्षण नहीं करना है ) - लेकिन यह स्पष्ट नहीं है कि विभाजन कहाँ होना चाहिए।
होल्डआउट प्रक्रिया।
"सुपरसेट" को सबसेट में विभाजित करने की प्रक्रिया को होल्डआउट विधि कहा जाता है । ध्यान दें कि आप आसानी से अशुभ हो सकते हैं और एक निश्चित वर्ग के उदाहरण एक सबसेट में गायब हो सकते हैं (या अतिप्राप्त), जिसके माध्यम से संबोधित किया जा सकता है
- यादृच्छिक नमूनाकरण, जो गारंटी देता है कि प्रत्येक वर्ग को सभी डेटा सबसेट में ठीक से दर्शाया गया है - प्रक्रिया को स्ट्रैटी hold एड होल्डआउट कहा जाता है
- इसके शीर्ष पर बार-बार प्रशिक्षण-परीक्षण-सत्यापन प्रक्रिया के साथ यादृच्छिक नमूनाकरण - जिसे बार-बार स्तरीकृत होल्डआउट कहा जाता है
एक एकल (nonrepeated) holdout प्रक्रिया में, आप परीक्षण और प्रशिक्षण डेटा की भूमिका की अदला-बदली पर विचार करने और दो परिणाम औसत हो सकता है, लेकिन यह एक 1 के साथ ही प्रशंसनीय है: प्रशिक्षण और परीक्षण सेट के बीच 1 विभाजन जो स्वीकार्य नहीं है (देखें परिचय )। लेकिन यह एक विचार देता है, और एक बेहतर विधि (जिसे क्रॉस-मान्यता कहा जाता है इसके बजाय इसका उपयोग किया जाता है) - नीचे देखें!
परिणाम का सत्यापन करना।
क्रॉस-मान्यता में, आप number xed संख्या में सिलवटों (डेटा के विभाजन) पर निर्णय लेते हैं । यदि हम तीन सिलवटों का उपयोग करते हैं, तो डेटा को तीन समान विभाजनों में विभाजित किया जाता है और
- हम प्रशिक्षण के लिए 2/3 और परीक्षण के लिए 1/3 का उपयोग करते हैं
- और प्रक्रिया को तीन बार दोहराएं ताकि अंत में, हर उदाहरण का परीक्षण के लिए एक बार उपयोग किया गया हो।
इसे थ्रीफोल्ड क्रॉस- वेलिडेशन कहा जाता है , और अगर स्ट्रेटी adopted कॉशन को भी अपनाया जाता है (जो कि यह अक्सर सच होता है) इसे स्ट्रेटिफाइड थ्रीफोल्ड क्रॉस-वेलिडेशन कहा जाता है ।
लेकिन, लो और निहारना, मानक तरीका है नहीं 1/3 विभाजन: 2/3। Quotting "डेटा खनन: प्रैक्टिकल मशीन लर्निंग उपकरण और तकनीक" ,
मानक तरीका [...] स्ट्रैट 10 एड 10-गुना क्रॉस-सत्यापन का उपयोग करना है। डेटा को यादृच्छिक रूप से 10 भागों में विभाजित किया जाता है जिसमें कक्षा को लगभग उसी अनुपात में दर्शाया जाता है जैसे पूर्ण डेटासेट में। प्रत्येक भाग को बारी-बारी से आयोजित किया जाता है और शेष नौ-दसवीं को प्रशिक्षित की गई योजना; फिर इसकी त्रुटि दर की गणना होल्ड सेट पर की जाती है। इस प्रकार सीखने की प्रक्रिया को विभिन्न प्रशिक्षण सेटों पर कुल 10 बार निष्पादित किया जाता है (जिनमें से प्रत्येक में बहुत कुछ है)। अंत में, 10 त्रुटि अनुमानों को एक समग्र त्रुटि अनुमान देने के लिए औसत किया जाता है।
क्यों 10? क्योंकि "विभिन्न शिक्षण तकनीकों के साथ कई डेटासेट, पर ..Extensive परीक्षण, पता चला है 10 परतों की सही संख्या त्रुटि का सबसे अच्छा अनुमान प्राप्त करने के लिए के बारे में है, और वहाँ भी कुछ सैद्धांतिक प्रमाण उपलब्ध हैं कि कि पीठ इस .." मैं हेवन उन्होंने पाया कि कौन से व्यापक परीक्षण और सैद्धांतिक साक्ष्य थे, लेकिन यह एक और अधिक खुदाई के लिए एक अच्छी शुरुआत की तरह लगता है - यदि आप चाहें।
वे मूल रूप से सिर्फ कहते हैं
यद्यपि ये तर्क किसी भी तरह से निर्णायक नहीं हैं, और मशीन सीखने और डेटा खनन हलकों में बहस जारी है कि मूल्यांकन के लिए सबसे अच्छी योजना क्या है, 10-गुना क्रॉस-सत्यापन व्यावहारिक रूप में मानक विधि बन गई है। [...] इसके अलावा, सटीक संख्या 10: 5-गुना या 20-गुना क्रॉस-सत्यापन के बारे में कुछ भी जादू नहीं है, लगभग अच्छा होने की संभावना है।
बूटस्ट्रैप, और - आखिरकार! - मूल प्रश्न का उत्तर।
लेकिन हम अभी तक इस सवाल का जवाब नहीं दे पाए हैं कि 2/3: 1/3 अक्सर अनुशंसित क्यों होता है। मेरा लेना है कि यह बूटस्ट्रैप विधि से विरासत में मिला है ।
यह प्रतिस्थापन के साथ नमूने पर आधारित है। पहले, हमने "भव्य सेट" से एक नमूना को सबसेट में से एक में रखा। बूटस्ट्रैपिंग अलग है और एक नमूना आसानी से प्रशिक्षण और परीक्षण सेट दोनों में दिखाई दे सकता है।
आइए एक विशेष परिदृश्य में देखें, जहां हम n इंस्टेंसेस का डेटासेट D1 लेते हैं और इसे n के साथ दूसरी बार नमूना करते हैं , ताकि n इंस्टेंसेस का एक अन्य डेटासेट D2 प्राप्त कर सके ।
अब संकीर्णता से देखें।
क्योंकि D2 में कुछ तत्व (लगभग निश्चित रूप से) दोहराए जाएंगे, मूल डेटासेट में कुछ ऐसे उदाहरण होने चाहिए जिन्हें उठाया नहीं गया है: हम इनका उपयोग परीक्षण उदाहरणों के रूप में करेंगे।
क्या मौका है कि एक विशेष उदाहरण D2 के लिए नहीं उठाया गया था ? प्रत्येक लेने पर लेने की संभावना 1 / n है इसलिए विपरीत है (1 - 1 / n) ।
जब हम इन संभावनाओं को एक साथ गुणा करते हैं, तो यह (1 - 1 / n) ^ n है जो e ^ -1 है जो लगभग 0.3 है। इसका मतलब है कि हमारा परीक्षण सेट लगभग 1/3 होगा और प्रशिक्षण सेट लगभग 2/3 होगा।
मुझे लगता है कि यही कारण है कि 1/3: 2/3 विभाजन का उपयोग करने की सिफारिश की गई है: यह अनुपात बूटस्ट्रैपिंग आकलन पद्धति से लिया गया है।
इसे लपेट रहा है।
मैं डेटा माइनिंग बुक के एक उद्धरण के साथ समाप्त करना चाहता हूं (जो मैं साबित नहीं कर सकता लेकिन सही मान सकता हूं) जहां वे आम तौर पर 10-गुना क्रॉस-सत्यापन को प्राथमिकता देने की सलाह देते हैं:
बूटस्ट्रैप प्रक्रिया बहुत छोटे डेटासेट के लिए त्रुटि का आकलन करने का सबसे अच्छा तरीका हो सकता है। हालाँकि, लीव-वन-आउट क्रॉस-वैधीकरण की तरह, इसके नुकसान हैं जिन्हें एक विशेष, आरती i cial स्थिति [...] को दो वर्गों के साथ पूरी तरह से यादृच्छिक डेटासेट पर विचार करके चित्रित किया जा सकता है। किसी भी भविष्यवाणी नियम के लिए सही त्रुटि दर 50% है। लेकिन एक योजना जो प्रशिक्षण सेट को याद करती है, वह 100% का एक सटीक पुनरुत्थान स्कोर देगी ताकि उदाहरणों को 0 पर लागू किया जा सके, और 0.632 बूटस्ट्रैप इसे 0.368 के वजन के साथ मिलाएगा। केवल 31.6% (0.632 + 50% + 0.368%%) की समग्र त्रुटि दर दें, जो भ्रामक आशावादी है।