क्या मुझे रैंडम फॉरेस्ट रेजिस्टर या क्लासिफायर चुनना चाहिए?


11

मैं यादृच्छिक जंगल द्वारा एक बाइनरी लक्ष्य वर्ग के साथ एक डेटासेट फिट करता हूं। अजगर में, मैं इसे या तो randomforestclassifier या randomforestregressor द्वारा कर सकता हूं।

मैं सीधे randomforestclassifier से वर्गीकरण प्राप्त कर सकता हूं या पहले randomforestregressor चला सकता हूं और अनुमानित स्कोर (निरंतर मूल्य) का एक सेट वापस पा सकता हूं। फिर मैं स्कोर के सेट से अनुमानित कक्षाओं को प्राप्त करने के लिए एक कटऑफ मान पा सकता हूं। दोनों विधियां एक ही लक्ष्य को प्राप्त कर सकती हैं (यानी परीक्षण डेटा के लिए कक्षाओं की भविष्यवाणी)।

इसके अलावा मैं यह देख सकते हैं

randomforestclassifier.predict_proba(X_test)[:,1]) 

से अलग है

randomforestregressor.predict(X_test)

तो मैं सिर्फ यह पुष्टि करना चाहता हूं कि दोनों विधियां वैध हैं और फिर यादृच्छिक वन एप्लिकेशन में कौन सा बेहतर है?


1
मेरी तात्कालिक प्रतिक्रिया यह है कि आपको क्लासिफायर का उपयोग करना चाहिए क्योंकि यह ठीक उसी प्रकार है जो इसके लिए बनाया गया है, लेकिन मुझे 100% यकीन नहीं है कि इससे बहुत फर्क पड़ता है। रेजिस्टर का उपयोग करना लॉजिस्टिक रिग्रेशन के बजाय रैखिक प्रतिगमन का उपयोग करने जैसा होगा - यह काम करता है, लेकिन साथ ही कई स्थितियों में भी नहीं। मैं एक उचित जवाब के लिए चारों ओर हो सकता है लेकिन एक या दो दिन के लिए नहीं।
पीटर एलिस

जवाबों:


7

क्लासिफायर का उपयोग करें। नहीं, वे दोनों वैध नहीं हैं।

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

चाहे आप एक क्लासिफायर या एक रजिस्ट्रार का उपयोग करते हैं केवल इस बात पर निर्भर करता है कि आप किस तरह की समस्या को हल कर रहे हैं। आपको बाइनरी वर्गीकरण की समस्या है, इसलिए क्लासिफायरियर का उपयोग करें।

मैं पहले randomforestregressor चला सकता है और अनुमानित संभावनाओं का एक सेट वापस पा सकता हूं।

नहीं। आपको प्रतिगमन से संभावनाएं नहीं मिलती हैं। यह केवल आपके द्वारा दिए गए मूल्यों को "एक्सट्रपलेट" करने की कोशिश करता है (केवल इस मामले में 0 और 1)। इसका मतलब है कि 1 से ऊपर या 0 से नीचे के मान एक प्रतिगमन आउटपुट के रूप में पूरी तरह से मान्य हैं क्योंकि यह आउटपुट के रूप में केवल दो असतत मूल्यों की उम्मीद नहीं करता है (जिसे वर्गीकरण कहा जाता है !) लेकिन निरंतर मूल्य।

यदि आप चाहते हैं कि "संभावनाएं" हों (ध्यान रखें कि ये निश्चित श्रेणी के लिए अच्छी तरह से कैलिब्रेटेड होने की संभावनाएं नहीं हैं ), तो एक निश्चित वर्ग से संबंधित होने के लिए, एक क्लासिफायरियर को प्रशिक्षित करें (इसलिए यह डेटा को वर्गीकृत करना सीखता है ) और फिर उपयोग करें .predict_proba (), जो तब संभावना की भविष्यवाणी करता है।

बस इसे यहाँ उल्लेख करने के लिए: .predict बनाम .predict_proba (एक क्लासिफायरियर के लिए!)
.Predict बस .predict_proba आउटपुट लेता है और उस दहलीज से 1 ऊपर क्रमशः एक निश्चित सीमा (आमतौर पर 0.5) के नीचे सब कुछ 0 में बदल देता है।

टिप्पणी: यकीन है, आंतरिक रूप से, वे "अंतिम परत" आदि को छोड़कर बहुत समान हैं! फिर भी, उन्हें पूरी तरह से अलग होने के रूप में देखें (या बेहतर समस्या वे हल कर रहे हैं)!

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