मशीन सीखने के लिए संख्याओं के लिए श्रेणीगत विशेषताओं को एन्कोड करना


14

कई मशीन लर्निंग एल्गोरिदम, उदाहरण के लिए तंत्रिका नेटवर्क, संख्याओं से निपटने की उम्मीद करते हैं। इसलिए, जब आपके पास एक श्रेणीबद्ध डेटा होता है, तो आपको इसे परिवर्तित करने की आवश्यकता होती है। उदाहरण के लिए, मेरा मतलब है:

कार ब्रांड: ऑडी, बीएमडब्ल्यू, शेवरले ... यूजर आईडी: 1, 25, 26, 28 ...

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

तो, बुनियादी दृष्टिकोण श्रेणियों को सांकेतिक शब्दों में बदलना करने के लिए द्विआधारी वैक्टर का उपयोग करने के लिए लगता है:

ऑडी: 1, 0, 0 ... बीएमडब्ल्यू: 0, 1, 0 ... शेवरलेट: 0, 0, 1 ...

यह ठीक है जब कुछ श्रेणियां होती हैं, लेकिन इससे परे यह थोड़ा अक्षम दिखता है। उदाहरण के लिए, जब आपके पास एन्कोड करने के लिए 10 000 उपयोगकर्ता आईडी हैं, तो यह 10 000 विशेषताएं हैं।

सवाल यह है कि क्या कोई बेहतर तरीका है? शायद एक संभावनाओं को शामिल?


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

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

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

ऐनी - क्या एक यादृच्छिक प्रभाव मॉडल वास्तव में व्यक्तियों में कोई दिलचस्पी नहीं है - इस प्रकार उन्हें आबादी से एक नमूना माना जाता है?
B_Miner

मुझे समझ में नहीं आता है, अगर सीखने की समस्या द्विआधारी श्रेणी के धनी / अमीर नहीं होने की भविष्यवाणी करना है, तो किसी विशेष उपयोगकर्ता की कार के ब्रांड के लिए एक सुविधा क्यों नहीं होगी। यदि उपयोगकर्ता के सामाजिक नेटवर्क को ज्ञात किया जाता है तो उपयोगकर्ता आईडी का उपयोग किया जा सकता है: उदाहरण के लिए यह प्रदर्शित करने के लिए कि उपयोगकर्ता X के मित्र अधिक धनी होने का खतरा रखते हैं। क्या इस विचारधारा के साथ कुछ गलत है?
व्लादटन

जवाबों:


6

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

हालांकि सवाल यह है: क्या यह समझ में नहीं आता कि उपयोगकर्ता आईडी को सुविधाओं के रूप में मानने के लिए आपको कोई समस्या है? अपने आईडी के बजाय अपने संबंध डेटा को असामान्य बनाने और उपयोगकर्ता सुविधाओं (आयु, स्थान, ऑनलाइन उपनाम, लेनदेन इतिहास ...) का उपयोग करने के लिए इसे अधिक समझ में नहीं आएगा?

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


ठीक है, जबकि यह अधिक सामान्य प्रश्न है, मैं आप में से अधिकांश को यूजर आईडी के मुद्दे पर केंद्रित देखता हूं, इसलिए यहां मैं उनका उपयोग क्यों करना चाहता हूं। आइए, कागल की प्रतियोगिताओं में से एक, ग्रॉकिट के बारे में देखें: kaggle.com/c/WhatDoYouKnow । लक्ष्य यह भविष्यवाणी करना है कि क्या उपयोगकर्ता किसी प्रश्न का सही उत्तर देगा। यह सिफारिश करने वाले सिस्टम के लिए मेरी राय में समान समस्या है, आपको सिर्फ फिल्मों के बजाय सवाल और रेटिंग्स के बजाय सही / गलत, प्लस कुछ अन्य डेटा मिलते हैं। टाइमस्टैम्प उपलब्ध हैं :)
नकुलर

1
उस स्थिति में आप यह अनुमान लगा सकते हैं कि उपयोगकर्ता स्वतंत्र हैं और आप अपने स्वयं के इतिहास पर प्रशिक्षित प्रति उपयोगकर्ता केवल एक वर्गीकरण का निर्माण कर सकते हैं।
ओग्रेसिल

1

समबाहु एन्कोडिंग शायद वह है जिसे आप एक तंत्रिका नेटवर्क में कक्षाओं को एन्कोड करने की कोशिश कर रहे हैं। यह अन्य पदों में संदर्भित "एन के 1" एन्कोडिंग से बेहतर काम करता है। संदर्भ के लिए मैं सुझाव दे सकता हूं: http://www.heatonresearch.com/wiki/Equilateral


यह एन्कोडिंग आउटपुट मानों से संबंधित प्रतीत होता है, इनपुट मानों के लिए श्रेणीबद्ध एन्कोडिंग नहीं है जो ओपी पूछ रहा है।
एलेक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.