मैं यह समझने की कोशिश कर रहा हूं कि कैसे मैं संभावना अनुमान का उपयोग करके श्रेणीबद्ध चर को सांकेतिक शब्दों में बदलना कर सकता हूं, लेकिन अभी तक बहुत कम सफलता मिली है।
किसी भी सुझाव के लिए बहुत आभार होगा।
मैं यह समझने की कोशिश कर रहा हूं कि कैसे मैं संभावना अनुमान का उपयोग करके श्रेणीबद्ध चर को सांकेतिक शब्दों में बदलना कर सकता हूं, लेकिन अभी तक बहुत कम सफलता मिली है।
किसी भी सुझाव के लिए बहुत आभार होगा।
जवाबों:
मैं इस विषय को भी सीख रहा था, और ये वही हैं जो मैंने पाया:
इस प्रकार के एन्कोडिंग को संभावना एन्कोडिंग , प्रभाव कोडिंग या लक्ष्य कोडिंग कहा जाता है
यह विचार लक्ष्य श्रेणी (निरंतर या कार्य के आधार पर श्रेणीबद्ध) के उपयोग के साथ आपके श्रेणीबद्ध चर को कूटबद्ध कर रहा है। उदाहरण के लिए, यदि आपके पास प्रतिगमन कार्य है, तो आप लक्ष्य के माध्यम से अपने श्रेणीबद्ध चर को सांकेतिक शब्दों में बदल सकते हैं। प्रत्येक श्रेणी के लिए, आप लक्ष्य के इसी माध्य (इस श्रेणी के बीच) की गणना करते हैं और इस अर्थ के साथ श्रेणी के मान को प्रतिस्थापित करते हैं।
यदि आपके पास वर्गीकरण कार्य है, तो आप प्रत्येक श्रेणी के मूल्य के संबंध में अपने लक्ष्य की सापेक्ष आवृत्ति की गणना करते हैं।
गणितीय दृष्टिकोण से, इस एन्कोडिंग का अर्थ है आपके लक्ष्य की संभावना, प्रत्येक श्रेणी के मूल्य पर सशर्त।
यदि आप इसे सरल तरीके से करते हैं, तो मैंने ऊपर वर्णित कैसे किया है, तो आपको संभवतः एक पक्षपाती अनुमान मिलेगा। इसलिए कागल समुदाय में वे आम तौर पर क्रॉस-सत्यापन के 2 स्तरों का उपयोग करते हैं। इस टिप्पणी को रडार द्वारा यहाँ पढ़ें । इसी नोटबुक यहाँ है ।
उद्धरण:
यह y का माध्य मान ले रहा है। लेकिन सादा मतलब नहीं है, लेकिन क्रॉस-वेलिडेशन तरीके से क्रॉस-वेलिडेशन में;
मान लें कि हमारे पास 20-गुना क्रॉस सत्यापन है। हमें किसी भी तरह से # 2- # 20 तह से जानकारी का उपयोग करके # 1 गुना के लिए सुविधा के औसत मूल्य की गणना करने की आवश्यकता है।
तो, आप # 2- # 20 सिलवटों को लेते हैं, इसके भीतर एक और क्रॉस सत्यापन सेट करते हैं (मैंने 10 गुना किया)। हर लीव-वन-आउट फोल्ड के लिए गणना का मतलब है (अंत में आपको 10 साधन मिलते हैं)। आप इन 10 साधनों को औसत करते हैं और उस वेक्टर को अपने प्राथमिक # 1 सत्यापन सेट के लिए लागू करते हैं। शेष 19 गुना के लिए दोहराएँ।
समझाना कठिन है, समझना कठिन है और गुरु बनाना है :) लेकिन अगर सही ढंग से किया जाए तो यह कई लाभ ला सकता है :)
R लाइब्रेरी vtreat में उनके पास प्रभाव एन्कोडिंग का कार्यान्वयन है। इस पोस्ट को देखें ।
में CatBoost पुस्तकालय वे लक्ष्य एन्कोडिंग सहित स्पष्ट चर एन्कोडिंग के लिए विकल्प की एक बहुत कुछ है।
Sklearn में अभी तक ऐसी कोई एन्कोडिंग नहीं है।
लक्ष्य एन्कोडिंग अब 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 द्वारा नोट किया गया है।
संभावना सीखने के लिए अभी भी संभावना एन्कोडिंग उपलब्ध नहीं है। आप इसे एक शब्दकोश बनाकर कर सकते हैं, और फिर एक प्रतिस्थापित कार्य कर सकते हैं।
dict1 = {'cate1':1,'cate2':1,'cate3':2,'cate4':2}
for i in df.shape[0]:
df.iloc[i] = dict1[df.iloc[i]]