बूस्ट आउट करने के लिए बैग त्रुटि का अनुमान?


9

रैंडम फ़ॉरेस्ट में, प्रत्येक पेड़ को डेटा के एक अद्वितीय बूस्टर नमूना के समानांतर में उगाया जाता है। क्योंकि प्रत्येक बूस्टअप सैंपल में लगभग 63% अनोखी टिप्पणियों के होने की उम्मीद है, यह लगभग 37% टिप्पणियों को छोड़ देता है, जिसका उपयोग पेड़ के परीक्षण के लिए किया जा सकता है।

अब, ऐसा लगता है कि स्टोचैस्टिक बूस्टिंग में, आरएफ में एक के समान एक अनुमान भी है:हेहेबीआरआरआर

अगर bag.fraction 0 से अधिक सेट किया गया है (0.5 की सिफारिश की गई है), gbm भविष्यवाणिय प्रदर्शन में सुधार के एक आउट-ऑफ-बैग अनुमान की गणना करता है। यह उन प्रतिगमन पर कमी का मूल्यांकन करता है जो अगले प्रतिगमन पेड़ का चयन करने में उपयोग नहीं किए जाते हैं।

स्रोत: रिडवे (2007) , खंड 3.3 (पृष्ठ 8)।

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

तो, यह कैसे "आउट-ऑफ-बैग" त्रुटि अनुमान कहा जाता है? मेरे लिए, यह किसी भी बैग का "आउट" प्रतीत नहीं होता है क्योंकि टिप्पणियों को पहले ही देखा जा चुका है?


1
चर्चा यहाँ देखें github.com/scikit-learn/scikit-learn/pull/1806 । आप ओओबी अनुमानों की गणना के तरीके को व्यक्त करने में अकेले नहीं हैं।
एमपिकेटस

लिंक के लिए धन्यवाद, लेकिन दुर्भाग्य से सभी थ्रेड योगदानकर्ताओं को लगता है जैसे मैं हूँ!
एंटोनी

1
दरअसल नहीं। Github.com/scikit-learn/scikit-learn/pull/2188 देखें । इस प्रतिबद्ध में ओओबी स्कोर को ओओबी सुधार में बदल दिया जाता है जिस तरह से जीबीएम करता है। मुझे नहीं पता कि यह विचार कैसे ठीक काम करता है, लेकिन जो मैंने इकट्ठा किया था, उससे ओओबी सुधार की गणना के लिए वर्तमान पेड़ के लिए ओब नमूना का उपयोग किया जाता है। मैं गणितीय सूत्रों को खोजने में कामयाब नहीं हुआ, इसलिए यह देखने के लिए कि यह सुधार कितना सही है, यह देखने के लिए gbm कोड में खुदाई करना आवश्यक है।
13

@ एंटोनी वास्तव में रोमांचक सवाल! क्या एक निश्चित उत्तर मिला था?
सोरेन हवेलुंड वेलिंग

1
नहींं, दुर्भाग्य से। कुछ संकेत उपरोक्त लिंक (टिप्पणियों में), इस धागे और इस अन्य धागे द्वारा दिए गए हैं । यह मुझे पूरी तरह से पागल बना रहा है। किसी दिन डॉ। फ्रीडमैन / हस्ती को एक ईमेल शूट करना चाहिए ... आपका ध्यान के लिए धन्यवाद।
एंटोनी

जवाबों:


2

केवल आंशिक रूप से उत्तर देना (और अपने प्रश्न में एक नया प्रश्न जोड़ना)।

R http://www.rdocumentation.org/packages/gbm/functions/gbm में gbm के कार्यान्वयन में कुछ आउट-ऑफ-बैगनेस समायोजित करने के लिए दो पैरामीटर हैं।

a) train.fractionउन आंकड़ों के अनुपात को परिभाषित करेगा जो सभी पेड़ों को प्रशिक्षित करने के लिए उपयोग किए जाते हैं और इस तरह 1- train.fractionवास्तविक OOB (आउट-ऑफ-बैग) डेटा होगा।

बी) bag.fractionको बढ़ावा देने में अगले पेड़ के निर्माण में इस्तेमाल किए जाने वाले प्रशिक्षण डेटा के अनुपात को परिभाषित करेगा। इस प्रकार कुछ डेटा हो सकते हैं जो कभी भी किसी पेड़ के निर्माण के लिए उपयोग नहीं किए जाते हैं और उन्हें सही मायने में OOB डेटा के रूप में उपयोग किया जा सकता है। (लेकिन यह संभावना नहीं है, नीचे दिए गए प्रश्न देखें)

जो मुझे सवाल पर लाता है। OOB होने के रूप में 37% डेटा का आपका विश्लेषण केवल एक पेड़ के लिए सही है। लेकिन मौका कोई भी डेटा होगा जो किसी भी पेड़ में उपयोग नहीं किया जाता है वह बहुत छोटा है -0.37nटीआररों (यह सभी के लिए ओओबी में होना चाहिए nटीआरपेड़ - मेरी समझ यह है कि प्रत्येक पेड़ अपना बूटस्ट्रैप करता है)। इसलिए RandomForests में जंगल का परीक्षण करने के लिए किसी भी OOB होने की संभावना नहीं है। और फिर भी आर में randomForest कार्यान्वयन (Breiman के मूल कोड के आधार पर) OOB बारे में बहुत कुछ बात करती है (उदाहरण के लिए परिणाम डेटा err.rateऔर confusionदेखने http://www.rdocumentation.org/packages/randomForest/functions/randomForest )

मुझे नहीं पता कि इसका जवाब कैसे देना है (और मैं आपको सवाल पूछने के लिए (+1) धन्यवाद देता हूं और मुझे एहसास दिलाता हूं कि मैं यादृच्छिक पहलुओं के इस पहलू को नहीं समझता हूं)। संभव समाधान यह है कि केवल एक बूटस्ट्रैप है - और सभी पेड़ों का निर्माण इससे किया जाता है - लेकिन जहां तक ​​मुझे पता है, यह मामला नहीं है।


RF / बैगिंग के लिए, कोई समस्या नहीं है: कलाकारों की टुकड़ी के निर्माण की प्रक्रिया में किसी भी कदम पर, मूल डेटा सेट में किसी भी अवलोकन को उन सभी पेड़ों को खिलाया जा सकता है जिन्हें इस अवलोकन से रहित बूस्ट सैंपल पर प्रशिक्षित किया गया था। पेड़ों की कुल संख्या का लगभग एक तिहाई (~ 37%) इस स्थिति को पूरा करेगा। इसके अलावा, इन पेड़ों को वोट देने और सबसे लोकप्रिय वर्ग लेने से, अवलोकन के लिए एक भविष्यवाणी प्राप्त की जा सकती है। जितनी बार भविष्यवाणी सभी वर्गों में औसतन अवलोकन के वास्तविक लेबल से भिन्न होती है, आउट-ऑफ-बैग त्रुटि अनुमान देता है
एंटोनी

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

यह उल्लेख करना भूल गया कि RF में प्रत्येक पेड़ वास्तव में अपने मूल डेटा के अनूठे बूटस्ट्रैप नमूने से बनाया गया है
एंटोनी

@ RF28 के संबंध में आपके स्पष्टीकरण के लिए user2835597 धन्यवाद। इस प्रकार आरएफ की एक ओओबी त्रुटि वास्तव में जंगल में पेड़ों के केवल 1/3 का मूल्यांकन कर रही है (जो मेरे लिए बहुत उपयोगी नहीं है)। खैर, रोज कुछ न कुछ सीखते हुए।
जैक्स वेनर

वैसे भी, train.fraction पैरामीटर आपके प्रश्न का उत्तर लगता है। स्केलेर कार्यान्वयन का एक समान पैरामीटर भी है, सबमप्लिमेंट
जैक्स वेनर

-2

मेरा मानना ​​है कि वे प्रत्येक कदम पर बैग के अनुमान से बाहर हैं। चूंकि सभी चरणों के परिणाम (गुणांक के साथ) जोड़े जाते हैं, OOB त्रुटियों को भी समान गुणांक के साथ जोड़ा जा सकता है।

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