कब एक हॉट एन्कोडिंग बनाम लेबलइंकोडर बनाम डिक्टेक्टरिज़ोर का उपयोग करें?


95

मैं कुछ समय के लिए श्रेणीबद्ध डेटा वाले मॉडल का निर्माण कर रहा हूं और जब इस स्थिति में मैं मूल रूप से एक मॉडल बनाने से पहले इस डेटा को बदलने के लिए scikit-learn's LabelEncoder फ़ंक्शन का उपयोग करने के लिए डिफ़ॉल्ट हूं।

मैं उनके बीच अंतर को समझता हूं OHE, LabelEncoderऔर DictVectorizorडेटा के लिए वे क्या कर रहे हैं, लेकिन मेरे लिए स्पष्ट नहीं है, जब आप एक तकनीक को दूसरे पर नियोजित करना चुन सकते हैं।

क्या कुछ एल्गोरिदम या ऐसी स्थितियां हैं जिनमें किसी को दूसरों के संबंध में फायदे / नुकसान हैं?


2
AN6U5 के उत्तर के संदर्भ में , और यह कथन:> अभी भी निर्णय पेड़ों और यादृच्छिक जंगलों जैसे एल्गोरिदम हैं जो श्रेणीबद्ध चर के साथ काम कर सकते हैं बस ठीक है और लेबलइन्कोडर का उपयोग कम डिस्क स्थान का उपयोग करके मूल्यों को संग्रहीत करने के लिए किया जा सकता है। LabelEncoder का उपयोग करने के लिए एक संख्यात्मक सुविधा के लिए एक स्पष्ट रूपांतरित नहीं होगा, जिससे एक निर्णय पेड़ कुछ मूल्य पर विभाजन का कारण बनता है जो वास्तव में मतलब नहीं है क्योंकि मानचित्रण मनमाना है?
निको

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

जवाबों:


124

कुछ ऐसे मामले हैं जहां लेबलइंकोडर या डिक्टेक्टरिज़ोर उपयोगी हैं, लेकिन ये अध्यादेश के कारण मेरी राय में काफी सीमित हैं।

LabelEncoder [कुत्ता, बिल्ली, कुत्ता, माउस, बिल्ली] को [1,2,1,3,2] में बदल सकता है, लेकिन फिर लगाए गए अध्यादेश का मतलब है कि कुत्ते और माउस का औसत बिल्ली है। अभी भी निर्णय पेड़ों और यादृच्छिक जंगलों जैसे एल्गोरिदम हैं जो श्रेणीबद्ध चर के साथ ठीक काम कर सकते हैं और लेबलइन्कोडर का उपयोग कम डिस्क स्थान का उपयोग करके मूल्यों को संग्रहीत करने के लिए किया जा सकता है।

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


1
बहुत बहुत धन्यवाद - यह बहुत मददगार है और बहुत मायने रखता है। क्या कोई अन्य एन्कोडिंग योजनाएँ हैं जिनका उपयोग आप विशिष्ट / एज मामलों के लिए करते हैं? क्या आप कभी पाते हैं कि आप ऐसी स्थिति में हैं जहाँ आप विभिन्न विशेषताओं के लिए अलग-अलग एन्कोडिंग योजनाओं का उपयोग करेंगे?
एंथ्र

20

जबकि AN6U5 ने बहुत अच्छा जवाब दिया है, मैं भविष्य के संदर्भ के लिए कुछ बिंदुओं को जोड़ना चाहता था। जब विचार एक गर्म एन्कोडिंग (Ohe) और लेबल एन्कोडिंग , हम कोशिश करते हैं और समझते हैं कि क्या मॉडल आप का निर्माण करने के प्रयास कर रहे हैं चाहिए। आदर्श रूप से जिन दो श्रेणियों पर हम विचार करेंगे, वे हैं:

  1. ट्री बेस्ड मॉडल्स : ग्रेडिएंट बूस्टेड डिसीजन ट्री एंड रैंडम फॉरेस्ट।
  2. गैर-ट्री आधारित मॉडल : रैखिक, केएनएन या तंत्रिका नेटवर्क आधारित।

आइए विचार करें कि पेड़ आधारित मॉडल बनाते समय ओएचई कब लागू करें और लेबल एन्कोडिंग कब लागू करें।

हम ओएचई लागू करते हैं जब:

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

जब हम लेबल एन्कोडिंग लागू करते हैं:

  1. स्पष्ट सुविधा क्रमसूचक है (जूनियर किग्रा, सीनियर किलो, प्राथमिक स्कूल, हाई स्कूल, आदि)।
  2. जब हम एक लेबल एनकोडर के साथ आ सकते हैं जो समान श्रेणियों के करीब लेबल प्रदान करता है : इससे ट्रेस में कम स्पिल्ट्स होते हैं इसलिए निष्पादन समय कम हो जाता है।
  3. जब डेटासेट में श्रेणीबद्ध विशेषताओं की संख्या बहुत बड़ी है: एक-हॉट एन्कोडिंग में बड़ी संख्या के मानों के साथ एक श्रेणीबद्ध सुविधा हो सकती है (1) उच्च मेमोरी खपत और (2) मामला जब गैर-श्रेणीबद्ध सुविधाओं का उपयोग शायद ही कभी मॉडल द्वारा किया जाता है। यदि आप विरल मैट्रिस को रोजगार देते हैं तो आप 1 मामले से निपट सकते हैं। यदि आप केवल सुविधाओं के सबसेट का उपयोग करके एक पेड़ का निर्माण करते हैं तो दूसरा मामला हो सकता है। उदाहरण के लिए, यदि आपके पास 100 विशिष्ट मानों के साथ 9 संख्यात्मक सुविधाएँ और 1 श्रेणीगत हैं और आप श्रेणीबद्ध सुविधा वाले एक-हॉट-एन्कोडेड हैं, तो आपको 109 सुविधाएँ मिलेंगी। यदि एक पेड़ केवल सुविधाओं के सबसेट के साथ बनाया गया है, तो प्रारंभिक 9 संख्यात्मक विशेषताएं शायद ही कभी उपयोग की जाएंगी। इस स्थिति में, आप इस सबसेट के आकार को नियंत्रित करने वाले पैरामीटर को बढ़ा सकते हैं। Xgboost में इसे कॉलसम्प्ली_बीट्री कहा जाता है, स्केलेर के रैंडम फ़ॉरेस्ट max_features में।

यदि आप ओएचई के साथ जारी रखना चाहते हैं, तो जैसा कि @ AN6U5 ने सुझाव दिया है, आप पीसीए को ओएचई के साथ जोड़ना चाह सकते हैं।

गैर पेड़ आधारित मॉडल का निर्माण करते समय ओएचई और लेबल एन्कोडिंग को लागू करने पर विचार करें।

लेबल एन्कोडिंग को लागू करने के लिए, लेबल एन्कोडिंग को प्रभावी ढंग से उपयोग करने के लिए सुविधा और लक्ष्य के बीच निर्भरता रैखिक होनी चाहिए।

इसी तरह, यदि निर्भरता गैर-रैखिक है, तो आप उसी के लिए ओएचई का उपयोग करना चाह सकते हैं।

नोट: विवरण में से कुछ को संदर्भित किया गया है कि कैसे कौरसेरा से एक डेटा विज्ञान प्रतियोगिता जीतें


बहुत सहज व्याख्या। क्या यह "स्प्लिट्स" नहीं होना चाहिए, न कि "स्पिल्ट्स"?
dzieciou

0

LabelEncoder क्रमिक डेटा के लिए है, जबकि OHE नाममात्र डेटा के लिए है।

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