निर्णय पेड़ों के लिए श्रेणीबद्ध विशेषताओं को कोड करने के लिए सर्वोत्तम अभ्यास?


13

जब रैखिक प्रतिगमन के लिए श्रेणीगत विशेषताओं को कोडित किया जाता है, तो एक नियम होता है: डमी की संख्या कुल स्तरों की संख्या (संपार्श्विकता से बचने के लिए) से एक कम होनी चाहिए।

क्या डिसीजन ट्रीज़ (बैगेड, बूस्टेड) ​​के लिए एक समान नियम मौजूद है? मैं यह इसलिए पूछ रहा हूं क्योंकि पायथन में एक मानक अभ्यास डमी (स्केलेन्स ' या पंडास' ) nमें स्तरों का विस्तार करता हुआ प्रतीत होता है जो मुझे उप-रूप में दिखाई देता है।nOneHotEncoderpd.get_dummies

निर्णय पेड़ों के लिए श्रेणीबद्ध विशेषताओं को कोड करने के लिए आप सर्वोत्तम प्रथाओं के रूप में क्या सुझाव देंगे?

जवाबों:


12

ऐसा लगता है जैसे आप समझते हैं कि आप nस्तरों के लिए सक्षम हैं, जैसा कि विरोध किया गया है n-1, क्योंकि रैखिक प्रतिगमन के विपरीत आपको सही colearearity के बारे में चिंता करने की आवश्यकता नहीं है।

(मैं एक आर के नजरिए से इस पर आ रहा हूं, लेकिन मुझे लगता है कि यह पायथन में समान है।) जो कि कुछ चीजों पर निर्भर करता है, जैसे 1) जो पैकेज आप उपयोग कर रहे हैं और 2) आपके पास कितने कारक स्तर हैं।

1) यदि आप आर के randomForestपैकेज का उपयोग कर रहे हैं , तो यदि आपके पास <33 कारक स्तर हैं तो आप आगे बढ़ सकते हैं और यदि आप चाहें तो उन्हें एक फीचर में छोड़ सकते हैं। ऐसा इसलिए है क्योंकि आर के यादृच्छिक वन कार्यान्वयन में, यह देखने के लिए जांच करेगा कि विभाजन के एक तरफ कौन से कारक स्तर होने चाहिए और कौन से दूसरे पर (उदाहरण के लिए, आपके 5 स्तरों को एक साथ बाईं ओर समूहित किया जा सकता है, और 7 को समूहीकृत किया जा सकता है। एक साथ दाईं ओर)। यदि आप श्रेणीगत सुविधा को nडमी में विभाजित करते हैं , तो एल्गोरिथ्म में इसके निपटान में यह विकल्प नहीं होगा।

जाहिर है कि यदि आप जिस विशेष पैकेज का उपयोग कर रहे हैं वह श्रेणीबद्ध सुविधाओं को संभाल नहीं सकता है तो आपको केवल nडमी वैरिएबल बनाने की आवश्यकता होगी ।

2) जैसा कि मैंने ऊपर उल्लेख किया है, आर के यादृच्छिक वन कार्यान्वयन केवल 32 कारक स्तरों को संभाल सकते हैं - यदि आपके पास इससे अधिक है, तो आपको या तो अपने कारकों को छोटे सबसेट में विभाजित करना होगा, या प्रत्येक स्तर के लिए एक डमी चर बनाना होगा।


1
धन्यवाद! क्या मैं आपको सही ढंग से प्राप्त कर रहा हूं: जब तक मैं आर में मॉडलिंग नहीं कर रहा हूं, जहां स्पष्ट विशेषताएं randomForestस्वचालित रूप से कोडित हैं, मुझे nडमी के साथ जाना चाहिए क्योंकि कोलीनियरिटी आरएफ के लिए कोई समस्या नहीं है?
सेर्गेई बुशमैनोव

3
32-स्तर से अधिक द्विआधारी-एन्कोडेड श्रेणियों के पेड़ में थोड़ा अलग व्यवहार होगा, क्योंकि आरएफ बस उन द्विआधारी स्तंभों में से चयन करेगा, बजाय कई स्तरों के साथ कारक के एकल स्तंभ का चयन करने के लिए। इस सूक्ष्म अंतर का अर्थ है कि कारक स्तंभ पर विभाजन की तुलना में बाइनरी कॉलम पर विभाजन कम जानकारीपूर्ण होगा, क्योंकि केवल एक विकल्प (0/1) बनाम (1 / {2,3}, {2,1} / 3 है ) आदि
साइकोरैक्स का कहना है कि मोनिका

@ user777 यह 32 से अधिक चर होने की समस्या नहीं है। यह नहीं होने "वर्गीकृत किया" अजगर श्रेणी में चर का एक समस्या है sklearn... व्यवहार में, वहाँ एक सबूत (व्यावहारिक अनुभव, अनुसंधान, आदि) है कि "dummified" चर [आर में] "वर्गीकृत किया" स्पष्ट चर से भी बदतर प्रदर्शन करेंगे है
सर्गेई बुशमैनोव

1
सैद्धांतिक रूप से, हम उम्मीद कर सकते हैं कि गैर-समूह वाले थोड़ा बुरा प्रदर्शन करें, क्योंकि आप मॉडल को कम लचीलापन दे रहे हैं। समूहीकृत मामले में, यदि उस विशेषता को समूह के रूप में न समझा जाए, तो वास्तव में बेहतर होगा, तो मॉडल ऐसा करने में सक्षम होगा (एक समूह को एक तरफ रख कर, और फिर शेष सभी दूसरे पर)। हालांकि व्यवहार में, मुझे आश्चर्य होगा कि अगर बहुत अंतर था (विशेष रूप से आरएफ के मामले में, जहां आप बहुत सारे पेड़ बना रहे हैं)
Tchotchke

2
मुझे कई फैक्टर लेवल (> 15) के फीचर्स के साथ रैंडम फॉरेस्ट इम्प्लीमेंटेशन मिलता है, जैसा कि बताया गया है, लेकिन यह भी औसत दर्जे का मॉडल परफॉर्मेंस देता है। मुझे लगता है कि बहुत अधिक संख्या में संभव विभाजन, कलाकारों की टुकड़ी में पेड़ों की इच्छित सजावट को कम करेगा। extraTrees और Rborist केवल प्रत्येक नोड में catagorical विभाजन की एक subsample की कोशिश करते हैं। यह सजावट और निश्चित रूप से गति में मदद कर सकता है। इस प्रकार "रैंडम फ़ॉरस्ट किसी भी विभाजन की कोशिश करें" और "स्केलेर्न डमी-वैरिएबल के बीच केवल 1-बनाम-रेस्ट स्प्लिट्स" की कोशिश करें। कम स्तरों में कई स्तरों के अलग-अलग क्लस्टरिंग उपयोगी दिखा सकते हैं।
सोरेन हवेलुंड वेलिंग

4

श्रेणीबद्ध चर से निपटने के लिए एक और दृष्टिकोण है जिसे लक्ष्य / प्रभाव एन्कोडिंग कहा जाता है।

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

यहाँ इस विषय की एक अच्छी व्याख्या है:
https://towardsdatascience.com/why-you-should-try-mean-encoding-17057262cd0

और यहाँ उस पेपर का लिंक दिया गया है जो मूल रूप से एन्कोडिंग का प्रस्ताव करता है: http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.pdf

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

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