मशीन सीखने में सुविधा निर्माण और सामान्यीकरण


13

आइए बताते हैं कि मैं एक फिल्म एम के लिए एक लॉजिस्टिक क्लासिफायर बनाना चाहता हूं। मेरी विशेषताएं व्यक्ति की उम्र, लिंग, व्यवसाय, स्थान जैसी कुछ होंगी। तो प्रशिक्षण सेट कुछ इस तरह होगा:

  • आयु लिंग व्यवसाय का स्थान (1) / नापसंद (0)
  • 23 एम सॉफ्टवेयर यूएस 1
  • 24 एफ डॉक्टर यूके 0

और इसी तरह .... अब मेरा सवाल यह है कि मुझे अपनी विशेषताओं का किस प्रकार और किस प्रकार प्रतिनिधित्व करना चाहिए। एक तरीका मैंने सोचा: आयु समूहों के रूप में आयु को विभाजित करें, इसलिए 18-25, 25-35, 35-ऊपर, लिंग के रूप में एम, एफ, स्थान के रूप में यूएस, यूके, अन्य। अब इन सभी मूल्यों के लिए एक द्विआधारी सुविधा बनाएँ, इसलिए आयु में 3 बाइनरी विशेषताएं होंगी जो प्रत्येक आयु वर्ग और इसी तरह से होंगी। तो, अमेरिका से एक 28 साल के पुरुष को 010 10 100 (010-> आयु समूह 25-35, 10 -> पुरुष, 100 -> यूएस) के रूप में दर्शाया जाएगा।

यहाँ सुविधाओं का प्रतिनिधित्व करने का सबसे अच्छा तरीका क्या हो सकता है? इसके अलावा, मैंने कुछ ई.जी. सभी विशेषताओं को किसी तरह से छोटा / सामान्य किया गया है, उदाहरण के लिए, लिंग को पुरुष और महिला के लिए दो मूल्यों, 0.0045 और -.0.0045 द्वारा दर्शाया गया है। मुझे इस तरह से स्केलिंग / मॉर्बलाइज़ेशन करने का कोई सुराग नहीं है?


यह मेरे लिए स्पष्ट नहीं है कि आप अपनी सुविधाओं को क्यों मापना चाहते हैं? अक्सर सुविधाओं को 0 मतलब एकता एसटी देव के लिए सामान्यीकृत किया जाता है। आपको इस समस्या को परिभाषित करने की आवश्यकता हो सकती है कि आप जिन कक्षाओं को वर्गीकृत करने का प्रयास कर रहे हैं, उनमें द्विआधारी वर्गीकरण के लिए लॉजिस्टिक प्रतिगमन उपयोगी है।
बीजीरीन

आप निश्चित रूप से उम्र को वर्गीकृत नहीं करना चाहते हैं। "मूवी की रेटिंग" कैसे मापी जाती है? क्या यह 1 से 10 के पैमाने पर है, एक "पसंद / नापसंद" या क्या?
पीटर फ्लॉम -

सरलता के लिए, मान लें कि केवल दो वर्ग हैं, जैसे और घृणा। 1 होने और नापसंद होने की तरह 0. इसको प्रतिबिंबित करने के लिए समस्या कथन को बदल दिया है।
बर्फ_लोपार्ड

जवाबों:


15

बाइनरी केस

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

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

  • अमेरिका के लिए 00001
  • यूके के लिए 00010
  • एशिया के लिए 00100
  • यूरोप के लिए 01000
  • अन्य के लिए 10000

एक वास्तविक / पूर्णांक सुविधा के थर्मामीटर एन्कोडिंग के लिए , आपको एक लंबाई और थ्रेसहोल्ड चुनना होगा। उम्र के अपने उदाहरण के लिए, आपने 18,25 और 35 की सीमा के अनुसार उम्र को विभाजित करने के लिए चुना है। कोडिंग होगी

  • 0-17 के लिए 000
  • 18-25 के लिए 001
  • 25-34 के लिए 011
  • 35 से ऊपर के 111

दोनों को एक साथ रखते हुए, आप यहाँ 5 + 3 = 8 बिट्स आकार की एन्कोडिंग प्राप्त करते हैं। 30 साल के ब्रिटेन के निवासी के लिए हमारे पास

00010UK01130yo

लगातार मामला

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

00010UK3030yo

जैसा कि बीग्रीन ने कहा, आपको 0 का मतलब रखने के लिए इस मान को सामान्य करना चाहिए और 1 का मानक विचलन, जो कई प्रतिगमन मॉडल की स्थिरता का बीमा करता है। ऐसा करने के लिए, बस अनुभवजन्य माध्य को घटाएं और अनुभवजन्य मानक विचलन द्वारा विभाजित करें।

Y_normalized = ( Y - mean(Y) ) / std(Y)

यदि आपके डेटा बेस में सभी व्यक्तियों की आयु का औसत 25 है, और इसका मानक विचलन 10 है, तो 30y.o. के लिए सामान्यीकृत मान व्यक्ति , जिसके कारण प्रतिनिधित्व यू कश्मीर 0 0 0 1 030 y 0.5(3025)/10=0.5

00010UK0.530yo

कूल ... तो हम कहते हैं कि हमारे पास एक उदाहरण व्यक्ति है: देश: यूके, आयु समूह: 25-34। यदि हम एक गर्म एन्कोडिंग का उपयोग करते हैं तो इससे देश: 2 , आयु समूह: 4 का मान बढ़ेगा । अब एक फीचर वेक्टर बनाते समय हमें इन्हें सामान्य करना चाहिए। तो वे कहते हैं कि वे 0.4 और 0.6 के रूप में आते हैं, फिर हमारे इनपुट फीचर वेक्टर को अनिवार्य रूप से मॉडल [0.4, 0.6], सही हो जाता है?
बर्फ_लोपार्ड

हम्म .. अगर मैं "एक गर्म" एन्कोडिंग का उपयोग करता हूं, तो क्या मुझे इसकी विशेषता के रूप में इसके इंटीजर प्रतिनिधित्व के लिए एन्कोडिंग मूल्य को बदलना चाहिए, उदाहरण के लिए 0010 बन जाता है 2. या क्या मुझे इसे 4 विशेषताओं के एक सेट के रूप में मानना ​​चाहिए जिसमें से केवल एक चालू होगा? पूर्व मामले में यह धारणा पेश नहीं करता है कि 1000 से आगे 0001 है तो 0100 जो इरादा नहीं हो सकता है क्योंकि हम नहीं चाहते हैं कि अमेरिकी फीचर वैल्यू यूके फीचर वैल्यू के करीब हो, फिर एशिया वैल्यू या कुछ और?
स्नो_लोपर्ड

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

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