स्किकिट-सीख में एक-बनाम बनाम डमी एन्कोडिंग


50

श्रेणीबद्ध चर को एन्कोडिंग करने के दो अलग-अलग तरीके हैं। कहें, एक श्रेणीगत चर में n मान हैं। एक-हॉट एन्कोडिंग इसे n चरों में परिवर्तित करता है , जबकि डमी एन्कोडिंग इसे n-1 चरों में परिवर्तित करता है । यदि हमारे पास श्रेणीगत चर हैं, जिनमें से प्रत्येक में एन मान हैं। एक गर्म एन्कोडिंग के साथ समाप्त होता है के.एन. , चर, जबकि डमी एन्कोडिंग के साथ समाप्त होता है के.एन.-कश्मीर चर।

मैंने सुना है कि एक-गर्म एन्कोडिंग के लिए, अवरोधन से कोलीनियरिटी की समस्या हो सकती है, जो मॉडल को ध्वनि नहीं देती है। कोई इसे " डमी वैरिएबल ट्रैप " कहता है ।

मेरे सवाल:

  1. स्किकिट-लर्न का रैखिक प्रतिगमन मॉडल उपयोगकर्ताओं को अवरोधन को अक्षम करने की अनुमति देता है। तो एक-हॉट एन्कोडिंग के लिए, मुझे हमेशा fit_intercept = False सेट करना चाहिए? डमी एन्कोडिंग के लिए, fit_intercept को हमेशा True पर सेट किया जाना चाहिए? मुझे वेबसाइट पर कोई "चेतावनी" नहीं दिख रही है।

  2. चूंकि एक-हॉट एन्कोडिंग अधिक चर उत्पन्न करता है, क्या इसमें डमी एन्कोडिंग की तुलना में अधिक स्वतंत्रता है?

जवाबों:


35

स्किकिट-लर्न का रैखिक प्रतिगमन मॉडल उपयोगकर्ताओं को अवरोधन को अक्षम करने की अनुमति देता है। तो एक-हॉट एन्कोडिंग के लिए, मुझे हमेशा fit_intercept = False सेट करना चाहिए? डमी एन्कोडिंग के लिए, fit_intercept को हमेशा True पर सेट किया जाना चाहिए? मुझे वेबसाइट पर कोई "चेतावनी" नहीं दिख रही है।

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

चूंकि एक-हॉट एन्कोडिंग अधिक चर उत्पन्न करता है, क्या इसमें डमी एन्कोडिंग की तुलना में अधिक स्वतंत्रता है?

अवरोधन स्वतंत्रता की एक अतिरिक्त डिग्री है, इसलिए एक अच्छी तरह से निर्दिष्ट मॉडल में यह सब बराबर होता है।

दूसरे के लिए, यदि k श्रेणीबद्ध चर हैं तो क्या होगा? k चर डमी एन्कोडिंग में हटा दिए जाते हैं। क्या आजादी की डिग्री अभी भी वही है?

आप एक मॉडल को फिट नहीं कर सकते हैं जिसमें आपने दोनों श्रेणी के वैरिएबल के सभी स्तरों का उपयोग किया हो , अवरोधन या नहीं। जैसे ही, जैसे ही आप मॉडल में एक चर में सभी स्तरों को एक-हॉट-एन्कोडेड करते हैं, बाइनरी वैरिएबल साथ कहते हैं , तो आपके पास निरंतर वेक्टर के बराबर भविष्यवाणियों का एक रैखिक संयोजन होता हैx1,x2,,xn

x1+x2++xn=1

यदि आप फिर किसी अन्य श्रेणी सभी स्तरों को मॉडल में दर्ज करने का प्रयास करते हैं, तो आप एक अलग वेक्टर के बराबर एक अलग रैखिक संयोजन के साथ समाप्त होते हैंx

x1+x2++xk=1

और इसलिए आपने एक रैखिक निर्भरता बनाई है

x1+x2+xnx1x2xk=0

तो आपको दूसरे चर में एक स्तर छोड़ना होगा , और सब कुछ ठीक से ऊपर हो जाएगा।

कहें, मेरे पास 3 श्रेणीगत चर हैं, जिनमें से प्रत्येक के 4 स्तर हैं। डमी एन्कोडिंग में, 3 * 4-3 = 9 चर एक अवरोधन के साथ बनाए जाते हैं। एक-गर्म एन्कोडिंग में, 3 * 4 = 12 चर एक अवरोधन के बिना बनाए जाते हैं। क्या मैं सही हूँ?

दूसरी बात वास्तव में काम नहीं करती है। कॉलम डिजाइन मैट्रिक्स आपके द्वारा बनाए गए विलक्षण हो जाएगा। आपको अपने डिज़ाइन की गैर-विलक्षणता को पुनर्प्राप्त करने के लिए, तीन अलग-अलग श्रेणीगत एन्कोडिंगों में से एक से तीन कॉलम निकालने होंगे।3×4=12


धन्यवाद। दूसरे के लिए, यदि k श्रेणीबद्ध चर हैं तो क्या होगा? k चर डमी एन्कोडिंग में हटा दिए जाते हैं। क्या आजादी की डिग्री अभी भी वही है?
मुनिचॉन्ग

@ChongWang मैंने अपने जवाब में आपकी टिप्पणी का जवाब संपादित किया।
मैथ्यू

क्षमा करें, मैं यहां थोड़ा खो गया हूं। कहें, मेरे पास 3 श्रेणीगत चर हैं, जिनमें से प्रत्येक के 4 स्तर हैं। डमी एन्कोडिंग में, 3 * 4-3 = 9 चर एक अवरोधन के साथ बनाए जाते हैं। एक-गर्म एन्कोडिंग में, 3 * 4 = 12 चर एक अवरोधन के बिना बनाए जाते हैं। क्या मैं सही हूँ? तो यहाँ डमी एन्कोडिंग का DF 9-1 है जबकि एक-हॉट एन्कोडिंग का DF 12. 12. क्या मैं सही हूँ?
मुनिचॉन्ग

@ChongWang फिर से संपादित।
मैथ्यू ड्र्यू

@MatthewDrury मुझे sklearn में linear_model के साथ समान समस्या है। डमी एन्कोडिंग के बाद निर्णय ट्री और KNN ठीक काम करता है, लेकिन रैखिक प्रतिगमन विलक्षणता में आता है। मैं आपके उत्तर से समझता हूं कि मुझे "दूसरे चर से एक स्तर" निकालना चाहिए, लेकिन मुझे नहीं पता कि इसका व्यावहारिक रूप से क्या मतलब है? उदाहरण के लिए मेरे पास 3 संख्यात्मक विशेषताएं और 3 श्रेणीबद्ध (निर्माता, मॉडल और ईंधन_प्रकार) हैं। मॉडल स्वाभाविक रूप से निर्माता पर निर्भर है क्योंकि एक निर्माता के पास एन मॉडल हो सकते हैं। तो अगर मैं रैखिक प्रतिगमन का उपयोग करना चाहता हूं तो इस तरह के सामान्य परिदृश्य में कैसे आगे बढ़ें?
हार्वे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.