संभावना अनुमान का उपयोग करते हुए श्रेणीबद्ध चर एन्कोडिंग


22

मैं यह समझने की कोशिश कर रहा हूं कि कैसे मैं संभावना अनुमान का उपयोग करके श्रेणीबद्ध चर को सांकेतिक शब्दों में बदलना कर सकता हूं, लेकिन अभी तक बहुत कम सफलता मिली है।

किसी भी सुझाव के लिए बहुत आभार होगा।


जब हम लक्ष्य लेबल नहीं रखते हैं तो भविष्यवाणी समय के दौरान क्या करें?
रणजीत सिंह

जवाबों:


24

मैं इस विषय को भी सीख रहा था, और ये वही हैं जो मैंने पाया:

  • इस प्रकार के एन्कोडिंग को संभावना एन्कोडिंग , प्रभाव कोडिंग या लक्ष्य कोडिंग कहा जाता है

  • यह विचार लक्ष्य श्रेणी (निरंतर या कार्य के आधार पर श्रेणीबद्ध) के उपयोग के साथ आपके श्रेणीबद्ध चर को कूटबद्ध कर रहा है। उदाहरण के लिए, यदि आपके पास प्रतिगमन कार्य है, तो आप लक्ष्य के माध्यम से अपने श्रेणीबद्ध चर को सांकेतिक शब्दों में बदल सकते हैं। प्रत्येक श्रेणी के लिए, आप लक्ष्य के इसी माध्य (इस श्रेणी के बीच) की गणना करते हैं और इस अर्थ के साथ श्रेणी के मान को प्रतिस्थापित करते हैं।

  • यदि आपके पास वर्गीकरण कार्य है, तो आप प्रत्येक श्रेणी के मूल्य के संबंध में अपने लक्ष्य की सापेक्ष आवृत्ति की गणना करते हैं।

  • गणितीय दृष्टिकोण से, इस एन्कोडिंग का अर्थ है आपके लक्ष्य की संभावना, प्रत्येक श्रेणी के मूल्य पर सशर्त।

  • यदि आप इसे सरल तरीके से करते हैं, तो मैंने ऊपर वर्णित कैसे किया है, तो आपको संभवतः एक पक्षपाती अनुमान मिलेगा। इसलिए कागल समुदाय में वे आम तौर पर क्रॉस-सत्यापन के 2 स्तरों का उपयोग करते हैं। इस टिप्पणी को रडार द्वारा यहाँ पढ़ें । इसी नोटबुक यहाँ है

उद्धरण:

यह y का माध्य मान ले रहा है। लेकिन सादा मतलब नहीं है, लेकिन क्रॉस-वेलिडेशन तरीके से क्रॉस-वेलिडेशन में;

मान लें कि हमारे पास 20-गुना क्रॉस सत्यापन है। हमें किसी भी तरह से # 2- # 20 तह से जानकारी का उपयोग करके # 1 गुना के लिए सुविधा के औसत मूल्य की गणना करने की आवश्यकता है।

तो, आप # 2- # 20 सिलवटों को लेते हैं, इसके भीतर एक और क्रॉस सत्यापन सेट करते हैं (मैंने 10 गुना किया)। हर लीव-वन-आउट फोल्ड के लिए गणना का मतलब है (अंत में आपको 10 साधन मिलते हैं)। आप इन 10 साधनों को औसत करते हैं और उस वेक्टर को अपने प्राथमिक # 1 सत्यापन सेट के लिए लागू करते हैं। शेष 19 गुना के लिए दोहराएँ।

समझाना कठिन है, समझना कठिन है और गुरु बनाना है :) लेकिन अगर सही ढंग से किया जाए तो यह कई लाभ ला सकता है :)

  • इस एन्कोडिंग का एक और कार्यान्वयन यहाँ है

  • R लाइब्रेरी vtreat में उनके पास प्रभाव एन्कोडिंग का कार्यान्वयन है। इस पोस्ट को देखें ।

  • में CatBoost पुस्तकालय वे लक्ष्य एन्कोडिंग सहित स्पष्ट चर एन्कोडिंग के लिए विकल्प की एक बहुत कुछ है।

  • Sklearn में अभी तक ऐसी कोई एन्कोडिंग नहीं है।



यदि आप लक्ष्य एन्कोडिंग का उपयोग करते हैं, तो आप फीचर इंटरैक्शन को कैसे लागू करेंगे? उदाहरण के लिए, आप F1 और F2 को इनकोड करते हैं। क्या आप केवल एन्कोडेड मान F1 * F2 को गुणा करेंगे?
माइकल लारियोनोव

यदि आप प्रत्येक एलओयू फोल्ड के लिए माध्य की गणना करते हैं, तो आप उनमें से औसत लेते हैं, यह ठीक उसी तरह है जैसे आप # 2- # 20 गुना का मतलब ले रहे हैं, मैं नहीं देखता कि इसे सीवी के रूप में क्यों माना जा सकता है। इसके अलावा, मुझे समझ नहीं आया कि "वेक्टर" से उनका क्या मतलब है जब वह उन 10 साधनों का औसत लेता है।
SiXUlm

देर से टिप्पणी; श्रेणी एन्कोडर्स में लक्ष्य एन्कोडिंग एक सरल मतलब एन्कोडिंग है; यह राडार द्वारा वर्णित सिलवटों के भीतर के सिलवटों को नियमित नहीं करता है।
डैन स्केली

7

लक्ष्य एन्कोडिंग अब sklearn में category_encoders पैकेज के माध्यम से उपलब्ध है

लक्ष्य एनकोडर

class श्रेणी_encoders.target_encoder.TargetEncoder (verbose = 0, cols = none, drop_invariant = False, return_df = True, impute_missing = True, handle_unknown = 'impute', min_samples_leaf = 1, चौरसाई = 1)

श्रेणीबद्ध विशेषताओं के लिए लक्ष्य सांकेतिक शब्दों में बदलना। एक बाहर के दृष्टिकोण के आधार पर।

जैसा कि ऊपर टिप्पणी में josh द्वारा नोट किया गया है।


1

संभावना सीखने के लिए अभी भी संभावना एन्कोडिंग उपलब्ध नहीं है। आप इसे एक शब्दकोश बनाकर कर सकते हैं, और फिर एक प्रतिस्थापित कार्य कर सकते हैं।

dict1 = {'cate1':1,'cate2':1,'cate3':2,'cate4':2}
for i in df.shape[0]:
    df.iloc[i] = dict1[df.iloc[i]] 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.