रैंडम फ़ॉरेस्ट मॉडल में अधिक हाल के डेटा को वेट करना


14

मैं 6 श्रेणियों के बीच भेदभाव करने के लिए रैंडम फ़ॉरेस्ट के साथ एक वर्गीकरण मॉडल का प्रशिक्षण दे रहा हूं। मेरे लेन-देन के डेटा में लगभग 60k + अवलोकन और 35 चर हैं। यहाँ एक उदाहरण है कि यह लगभग कैसा दिखता है।

 _________________________________________________
|user_id|acquisition_date|x_var_1|x_var_2| y_vay  |
|-------|----------------|-------|-------|--------|
|111    | 2013-04-01     | 12    | US    | group1 |
|222    | 2013-04-12     | 6     | PNG   | group1 |
|333    | 2013-05-05     | 30    | DE    | group2 |
|444    | 2013-05-10     | 78    | US    | group3 |
|555    | 2013-06-15     | 15    | BR    | group1 |
|666    | 2013-06-15     | 237   | FR    | group6 |

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

क्या किसी को पता है कि आर में यादृच्छिकफोरस्ट पैकेज प्रति अवलोकन वजन को संभालने में सक्षम है?

इसके अलावा, क्या आप सुझाव दे सकते हैं कि वज़न चर बनाने के लिए एक अच्छी विधि क्या है? उदाहरण के लिए, जैसा कि मेरा डेटा 2013 से है, मैं सोच रहा था कि मैं महीने की तारीख को वजन के रूप में ले सकता हूं। क्या किसी को इस विधि के साथ कोई समस्या दिखाई देती है?

अग्रिम में बहुत धन्यवाद!


आप स्टैक ओवरफ़्लो पर एक प्रश्न पोस्ट करने पर विचार कर सकते हैं। कार्यान्वयन मुद्दों के साथ वे आपकी अधिक मदद करेंगे। इस साइट का फोकस अधिक सिद्धांत-आधारित है।
एलेक्स विलियम्स

मैं शायद अपने लेखन में पर्याप्त स्पष्ट नहीं हूं, लेकिन मेरे सवाल कार्यान्वयन मुद्दे के बारे में नहीं हैं। उदाहरण के लिए, जिस हिस्से में मैं वजन चर बनाने के बारे में पूछ रहा हूं, मेरा मतलब यह नहीं है कि आर में कौन सी कमांड मुझे ऐसा करने में मदद कर सकती है। मैं बस सोच रहा था कि क्या मैं यादृच्छिक जंगल की किसी भी धारणा का उल्लंघन करूंगा।
निकोले नेनोव

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

जवाबों:


5

rangerआर (में पैकेज पीडीएफ ) है, जो अपेक्षाकृत नई है, यह कर देगा। यादृच्छिक जंगलों के रेंजर कार्यान्वयन में एक case.weightsतर्क है जो व्यक्तिगत मामले / अवलोकन भार के साथ एक वेक्टर लेता है।


साफ! समाधान की तरह मैं देख रहा था। क्या आपके पास इस ब्योरे का लिंक है कि कैसे संभाव्यता की गणना की जाती है।
निकोले नेनोव

1
मुझे 100% यकीन नहीं है कि वे संभावनाओं की गणना कैसे करते हैं - लेकिन मुझे लगता है, यदि आप एक शुरुआत चाहते हैं, तो इस पेपर पर एक नज़र डालें: मैले, जेडी, क्रुप्पा, जे।, दासगुप्ता, ए।, म्लेली, केजी, और ज़ेबलेर , ए (2012)। प्रायिकता मशीनें: गैर-समरूपता सीखने वाली मशीनों का उपयोग करके निरंतर संभावना अनुमान। विधियाँ Inf मेड 51: 74-81। dx.doi.org/10.3414/ME00-01-0052
अनुदान

7

आप अधिक हाल के डेटा बिंदुओं का प्रतिनिधित्व करने के लिए डेटा को फिर से भेज सकते हैं। Rf में एक sampel-with-replacment step anyways शामिल है और असंतुलित वर्गों के लिए "मोटे तौर पर संतुलित बैगिंग" अल्पसंख्यक वर्ग को अधिलेखित करने के लिए नमूने का उपयोग करता है और मेरे अनुभव में अच्छे या बेहतर वर्ग भारित यादृच्छिक जंगल के रूप में परिणाम उत्पन्न करता है।

आप अपने प्रशिक्षण मैट्रिक्स ( संदर्भ) के निर्माण के स्तर पर फिर से आ सकते हैं कार्यान्वयन को आसान बनाए रखने के लिए बैगिंग के दौरान ) पर फिर से प्रदर्शन कर सकते हैं हालांकि मैं उस मामले में कई दोहराता करने का सुझाव दूंगा।

आंतरिक रूप से स्कैचिट-लर्न सहित यादृच्छिक वन के कुछ कार्यान्वयन वास्तव में नमूना भार का उपयोग करते हैं कि प्रत्येक नमूना बैग में कितनी बार है और यह क्रॉस स्तर सत्यापन में प्रशिक्षण स्तर पर ओवरसैम्पलिंग के समीप और ओवरसैंपलिंग के समीप होना चाहिए।


4

आपको "क्लासवेट" पैरामीटर देखना चाहिए। यह प्रतीत नहीं होता है कि आप किस चीज में सीधे रूचि रखते हैं, लेकिन यह आपको यह एहसास दिला सकता है कि आप क्या चाहते हैं हैं।

यहां देखें: स्टैक एक्सचेंज प्रश्न # 1

और यहाँ: स्टैक एक्सचेंज प्रश्न # 2

भारित यादृच्छिक जंगलों पर अनुच्छेद: पीडीएफ

मूल विचार वजन वर्गों का है जो शायद ही कभी देखे गए समूहों / वर्गीकरणों को आपके बूटस्ट्रैप नमूनों में चुने जाने की अधिक संभावना है। यह असंतुलित डेटा के लिए सहायक है (जब विभिन्न वर्गों की पूर्व संभावनाएं व्यापक रूप से भिन्न होती हैं)।

मुझे ऐसा लगता है कि आप कुछ ऐसा ही करना चाहते हैं, लेकिन हाल की घटनाओं के लिए (कुछ समूहों / वर्गीकरणों के लिए नहीं)। ऐसा करने का एक सरल तरीका अधिक हालिया टिप्पणियों के लिए डुप्लिकेट अब्जर्वेशन (यानी बार-बार, समान पंक्तियों में रखा जाना) बनाना होगा। हालांकि, यह संभावित रूप से अक्षम हो सकता है। मैं आर में प्रत्येक अवलोकन को सीधे वजन करने का एक तरीका नहीं जानता, लेकिन मैं इससे अनजान हो सकता हूं।

आप वैकल्पिक कार्यान्वयन के लिए चारों ओर देखने की कोशिश कर सकते हैं, उदाहरण के लिए C में - कम से कम, इन्हें थोड़ी सी कोडिंग के साथ अनुकूलित किया जा सकता है।


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

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