क्या ओवरफ़िटिंग इतना बुरा है कि आपको एक मॉडल नहीं चुनना चाहिए जो ओवरफिट करता है, भले ही इसका परीक्षण त्रुटि छोटा हो? नहीं, लेकिन आपको इसे चुनने का औचित्य होना चाहिए।
यह व्यवहार XGBoost तक सीमित नहीं है। यह सभी मशीन लर्निंग तकनीकों के बीच एक सामान्य धागा है; अंडरफ़टिंग और ओवरफ़िटिंग के बीच सही ट्रेडऑफ़ खोजना। औपचारिक परिभाषा Bias-variance tradeoff (विकिपीडिया) है ।
पूर्वाग्रह-विचरण व्यापार
निम्नलिखित अपने मॉडल के चुनाव को सही ठहराने में मदद करने के लिए बायस-विचरण व्यापार का एक सरलीकरण है।
हम कहते हैं कि एक मॉडल उच्च है पूर्वाग्रह है यदि वह डेटा में पूरी तरह से जानकारी का उपयोग करने में सक्षम नहीं है। यह सामान्य जानकारी पर निर्भर है, जैसे कि सबसे लगातार मामला, प्रतिक्रिया का मतलब, या कुछ शक्तिशाली विशेषताएं। पूर्वाग्रह गलत धारणाओं से आ सकते हैं, यह मान लेने के लिए कि चर सामान्य रूप से वितरित किए जाते हैं या यह कि मॉडल रैखिक है।
हम कहते हैं कि किसी मॉडल में उच्च विचरण है यदि वह डेटा से बहुत अधिक जानकारी का उपयोग कर रहा है। यह उन सूचनाओं पर निर्भर करता है जो केवल उस प्रशिक्षण सेट में प्रचलित हैं जो इसे प्रस्तुत किया गया है, जो कि सामान्य रूप से पर्याप्त नहीं है। आमतौर पर, यदि आप प्रशिक्षण सेट बदलते हैं, तो मॉडल बहुत बदल जाएगा, इसलिए "उच्च विचरण" नाम।
वे परिभाषा बहुत हद तक अंडरफुटिंग और ओवरफिटिंग की परिभाषाओं के समान हैं। हालाँकि, उन परिभाषाओं को अक्सर विरोध के रूप में सरल बनाया जाता है, जैसे कि
- यदि प्रशिक्षण और परीक्षण त्रुटि दोनों उच्च हैं, तो मॉडल कम है। इसका मतलब है कि मॉडल बहुत सरल है।
- यदि परीक्षण त्रुटि प्रशिक्षण त्रुटि से अधिक है, तो मॉडल ओवरफिटिंग है। इसका मतलब है कि मॉडल बहुत जटिल है।
वे सरलीकरण निश्चित रूप से सहायक हैं, क्योंकि वे मॉडल की सही जटिलता को चुनने में मदद करते हैं। लेकिन वे एक महत्वपूर्ण बिंदु को नजरअंदाज करते हैं, यह तथ्य कि (लगभग) प्रत्येक मॉडल में पूर्वाग्रह और विचरण घटक दोनों होते हैं। अंडरफिटिंग / ओवरफिटिंग विवरण आपको बताता है कि आपके पास बहुत अधिक पूर्वाग्रह / बहुत अधिक विचरण है, लेकिन आपके पास (लगभग) हमेशा है दोनों होते हैं ।
यदि आप पूर्वाग्रह-भिन्नता व्यापार के बारे में अधिक जानकारी चाहते हैं, तो वे Google के माध्यम से उपलब्ध सहायक विज़ुअलाइज़ेशन और अच्छे ressource के बहुत सारे हैं। प्रत्येक मशीन सीखने वाली पाठ्यपुस्तक में पूर्वाग्रह-विधा व्यापार पर एक खंड होगा, यहां कुछ हैं
- सांख्यिकीय शिक्षा और सांख्यिकीय शिक्षा के तत्व (यहां उपलब्ध) के लिए एक परिचय ।
- क्रिस्टोफर बिशप द्वारा पैटर्न मान्यता और मशीन लर्निंग,।
- मशीन लर्निंग: केविन मर्फी द्वारा एक संभाव्य परिप्रेक्ष्य।
इसके अलावा, एक अच्छी ब्लॉग पोस्ट जिसने मुझे समझने में मदद की वह है स्कॉट फोर्टमैन-रो की अंडरस्टैंडिंग द बायस-वेरिएंस ट्रेडऑफ़ ।
अपनी समस्या के लिए आवेदन
तो आपके पास दो मॉडल हैं,
मार्सXGBoostट्रेन MAE∼ 4.0∼ 0.3टेस्ट MAE∼ 4.0∼ 2.4कम विचरण, उच्च पूर्वाग्रह ,उच्च विचरण, निम्न पूर्वाग्रह ,
और आपको एक लेने की जरूरत है। ऐसा करने के लिए, आपको यह परिभाषित करने की आवश्यकता है कि एक बेहतर मॉडल क्या है। आपके निर्णयों में शामिल किए जाने वाले पैरामीटर जटिलता और मॉडल का प्रदर्शन हैं।
- जटिलता की कितनी "इकाइयां" आप प्रदर्शन की एक "इकाई" के बदले लेने को तैयार हैं?
- अधिक जटिलता उच्च विचरण के साथ जुड़ी हुई है। यदि आप चाहते हैं कि आपका मॉडल एक डेटासेट पर अच्छी तरह से सामान्यीकरण करे जो आपके द्वारा प्रशिक्षित किए जाने की तुलना में थोड़ा अलग है, तो आपको एक जटिल जटिलता के लिए लक्ष्य बनाना चाहिए।
- यदि आप एक ऐसा मॉडल चाहते हैं जिसे आप आसानी से समझ सकें, तो आप मॉडल की जटिलता को कम करके प्रदर्शन की कीमत पर ऐसा कर सकते हैं।
- यदि आप एक डेटासेट पर सर्वश्रेष्ठ प्रदर्शन के लिए लक्ष्य कर रहे हैं, जो आपको पता है कि आपके प्रशिक्षण सेट की तुलना में एक ही सामान्य प्रक्रिया से आता है, तो आप अपनी परीक्षा की त्रुटि का अनुकूलन करने और मीट्रिक के रूप में उपयोग करने के लिए जटिलता में हेरफेर कर सकते हैं। ऐसा तब होता है जब आपका प्रशिक्षण सेट यादृच्छिक रूप से बड़े सेट से नमूना लिया जाता है, और आपका मॉडल इस सेट पर लागू किया जाएगा। छूट के लिए यह सबसे कागले प्रतियोगिताओं में मामला है।
यहां लक्ष्य एक मॉडल ढूंढना नहीं है जो "ओवरफिट नहीं करता है"। यह उस मॉडल को ढूंढना है जिसमें सबसे अच्छा पूर्वाग्रह-विचरण व्यापार है। इस मामले में, मैं तर्क दूंगा कि XGBoost मॉडल द्वारा पूरा किए गए पूर्वाग्रह में कमी, प्रसरण में वृद्धि को सही ठहराने के लिए पर्याप्त है।
तुम क्या कर सकते हो
हालांकि, आप शायद हाइपरपैरामीटर को ट्यून करके बेहतर कर सकते हैं।
राउंड की संख्या बढ़ाने और सीखने की दर को कम करने की संभावना है। ग्रेडिएंट बूस्टिंग के बारे में "अजीब" कुछ ऐसा है कि यह उस बिंदु से अच्छी तरह से चल रहा है जहां प्रशिक्षण त्रुटि शून्य हो गई है, फिर भी परीक्षण त्रुटि को सुधारने के लिए लगता है (जैसा कि यहां चर्चा की गई है: क्या केवल बेहतर है जब शालो अच्छा है? )। आप अन्य मापदंडों को सेट करने के बाद अपने मॉडल को अपने डेटासेट पर थोड़ी देर तक प्रशिक्षित करने का प्रयास कर सकते हैं,
आपके द्वारा उगने वाले पेड़ों की गहराई शुरू करने के लिए बहुत अच्छी जगह है। आपको ध्यान देना होगा कि गहराई की हर एक इकाई के लिए, आप निर्माण किए जाने वाले लीफ़्स की संख्या को दोगुना करते हैं। यदि आपको आकार 16 के बजाय आकार दो के पेड़ उगाने थे, तो यह लगेगा1 / 214समय की! आपको अधिक छोटे पेड़ उगाने की कोशिश करनी चाहिए। यही कारण है कि पेड़ की गहराई को विशेषता बातचीत की डिग्री का प्रतिनिधित्व करना चाहिए । यह शब्दजाल हो सकता है, लेकिन यदि आपकी विशेषताओं में 3 की सहभागिता की डिग्री है (मोटे तौर पर: 4 सुविधाओं का एक संयोजन उन विशेषताओं में से 3 के संयोजन से अधिक शक्तिशाली नहीं है + चौथा), तो आकार के बढ़ते हुए पेड़ 3 से अधिक है हानिकारक। गहराई तीन के दो पेड़ों में गहराई चार के एक पेड़ की तुलना में अधिक सामान्यीकरण शक्ति होगी। यह एक जटिल अवधारणा है और मैं अभी इसमें नहीं जाऊंगा, लेकिन आप एक शुरुआत के लिए कागजात के इस संग्रह की जांच कर सकते हैं । इसके अलावा, ध्यान दें कि गहरे पेड़ उच्च विचरण करते हैं!
सबसैम्पलिंग, के रूप में जाना का उपयोग करते हुए जीतना , विचरण कम करने के लिए बहुत अच्छा है। यदि आपके व्यक्तिगत पेड़ों में एक उच्च विचरण है, तो बैगिंग पेड़ों को औसत कर देगा और औसत में अलग-अलग पेड़ों की तुलना में कम विचरण होता है। यदि, आपके पेड़ों की गहराई को कम करने के बाद, आप अभी भी उच्च विचरण करते हैं, तो सबसामलिंग बढ़ाने की कोशिश करें (अर्थात, उपयोग किए गए डेटा के अंश को कम करें)। फ़ीचर स्पेस को सब्सक्राइब करना भी इस लक्ष्य को प्राप्त करता है।