R randomForest में प्रतिस्थापन के साथ नमूनाकरण


11

रैंडम फ़ॉरेस्ट कार्यान्वयन प्रतिस्थापन के साथ नमूना लेने पर भी, टिप्पणियों की संख्या से परे नमूनाकरण की अनुमति नहीं देता है। ऐसा क्यों है?

ठीक काम करता है:

rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE)
rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE)

मुझे क्या करने का मन है:

rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), replace=TRUE)
Error in randomForest.default(m, y, ...) : 
  sampsize can not be larger than class frequency

स्तरीकृत नमूने के बिना समान त्रुटि:

rf <- randomForest(Species ~ ., iris, sampsize=151, replace=TRUE)
Error in randomForest.default(m, y, ...) : sampsize too large

चूंकि मैं बूटस्ट्रैप के नमूने लेने की विधि की उम्मीद कर रहा था, जब दोनों मामलों में = TRUE दिया गया था, इसलिए मुझे इस सीमा की उम्मीद नहीं थी।

मेरा उद्देश्य स्तरीकृत नमूनाकरण विकल्प के साथ इसका उपयोग करना है, ताकि अपेक्षाकृत दुर्लभ वर्ग से पर्याप्त रूप से बड़ा नमूना तैयार किया जा सके।


मुझे यकीन नहीं है कि वास्तविक कारण क्या है, लेकिन एक बूटस्ट्रैप नमूना आमतौर पर आपके मूल नमूने के समान आकार का होता है, इसलिए यह व्यवहार पूरी तरह से ऐसा लगता है कि मैं बूटस्ट्रैप नमूने लेने का दावा करने वाली किसी चीज़ से क्या उम्मीद करता हूं।
जोरन

1
ठीक है, यह मेरा शब्द विकल्प दस्तावेज नहीं था, लेकिन आपकी बात अच्छी तरह से ली गई है। फिर भी, वितरण को फिर से संतुलित करने की कोशिश करते समय यह असुविधाजनक है और मुझे यह पता लगाने का एक सहायक प्रतिबंध लगाने का एक कारण नहीं पता है।
cohoz

जवाबों:


5

इसका उत्तर क्यों नहीं है , लेकिन इसके चारों ओर पाने के लिए, कोई प्रशिक्षण डेटा में दुर्लभ वर्ग के डेटा की नकल कर सकता है, और परिणाम का स्तरीकृत नमूना ले सकता है।

"प्राकृतिक" ओवरसैंपलिंग की तुलना में इस दृष्टिकोण में दो कमियां हैं:

  • बैग अनुमान से बाहर अब सार्थक नहीं हैं
  • ऑब्जेक्ट को संग्रहीत करने और यादृच्छिक नमूने लेने के लिए अधिक संसाधनों की आवश्यकता होती है

लेकिन यह वन को वांछित वर्ग अनुपात के साथ जंगल बनाने की अनुमति देगा।


4

मैं एक ही सवाल है और यादृच्छिक के लिए changelog में यह पाया :

4.1-0 में परिवर्तन:

  • यादृच्छिक रूप में (), यदि नमूना दिया जाता है, तो नमूना अब वर्ग द्वारा स्तरीकृत के अलावा, प्रतिस्थापन के बिना किया जाता है। इसलिए नमूना वर्ग आवृत्तियों से बड़ा नहीं हो सकता है।

प्रतिस्थापन स्थापित करना = सही मायने में मैन्युअल रूप से भी यह ओवरराइड नहीं लगता है।


2
यह मामला हो सकता है कि प्रतिस्थापित पैरामीटर को केवल अनदेखा किया जा रहा है, लेकिन बाद में उस चैंज में: ४.५-१२ में परिवर्तन: * यादृच्छिक के लिए 'स्ट्रैट' तर्क जोड़ा गया, जो 'नमूना' के साथ संयोजन में, नमूनाकरण के साथ (या) एक प्रतिस्थापन चर के अनुसार प्रतिस्थापन के बिना) (जो वर्ग चर के अलावा कुछ हो सकता है)। वर्तमान में केवल वर्गीकरण में काम करता है।
cohoz

उदाहरण के लिए, एक ही त्रुटि के माध्यम से उत्पन्न होता हैrf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), strata=iris$Species, replace=TRUE)
cohoz

इसके अलावा, वर्तमान संस्करण (4.6-7) के साथ कुछ परीक्षण मामलों से संकेत मिलता है कि नमूने प्रतिस्थापन के साथ लिए गए हैं, इसलिए यह स्पष्टीकरण नहीं है।
कोहोज

1
मैं randomForest चलाने से पहले सिर्फ ओवरसैंपलिंग समाप्त कर दिया। इस पद्धति में शायद कुछ गड़बड़ है, लेकिन जब मैं परिणामों का परीक्षण करता हूं तो यह काम करने लगता है।
hgcrpd

1
नहीं, यह मेरे द्वारा उपयोग किया जाने वाला वर्कअराउंड है और यह वही करता है जो कोई चाहता है। विशेष रूप से एक अपेक्षाकृत दुर्लभ वर्ग के उपयोग के मामले के लिए, प्रशिक्षण सेट पर उस वर्ग के लिए डेटा को डुप्लिकेट करना और स्तरीकृत नमूना लेने से पहले अच्छी तरह से काम करता है और अतिरिक्त मेमोरी / सीपीयू के संदर्भ में "लागत" बहुत अधिक नहीं है। मुझे लगता है कि यह एक "उत्तर" लिखने के लायक है, भले ही यह वास्तव में एक नहीं है ...
cohoz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.