कैटगरी में बांटे गए डेटा में बदलाव

आपकी कुछ सुविधाएं, अलग-अलग वैल्यू हो सकती हैं जो ऑर्डर के क्रम के मुताबिक नहीं हैं. उदाहरण के लिए, कुत्तों की नस्ल, शब्दों या पिन कोड. इन सुविधाओं को कैटगरी के तौर पर जाना जाता है. हर वैल्यू को कैटगरी कहा जाता है. आप स्ट्रिंग या यहां तक कि संख्याओं के रूप में कैटगरी वैल्यू दिखा सकते हैं, लेकिन आप इन संख्याओं की तुलना नहीं कर पाएंगे या उन्हें एक-दूसरे से घटा नहीं पाएंगे.

अक्सर, आपको उन सुविधाओं को दिखाना चाहिए जिनमें संख्या के डेटा के बजाय, कैटगरी डेटा के तौर पर इंटेजर की वैल्यू होती हैं. उदाहरण के लिए, एक ऐसी पिन कोड सुविधा पर विचार करें जिसमें वैल्यू पूरी संख्या हैं. अगर आपने गलती से इस सुविधा को संख्या के तौर पर दिखा दिया है, तो आप मॉडल को अलग-अलग पिन कोड के बीच संख्या वाले संबंध का पता लगाने के लिए कह रहे हैं. उदाहरण के लिए, आप मॉडल से उम्मीद कर रहे हैं कि पिन कोड 20004, पिन कोड के तौर पर दोगुना (या आधा) है. पिन कोड को कैटगरी डेटा के तौर पर दिखाकर, आप मॉडल को हर एक पिन कोड के लिए अलग-अलग सिग्नल ढूंढ सकते हैं.

अगर डेटा फ़ील्ड की कैटगरी की संख्या कम है, जैसे कि हफ़्ते का दिन या रंगों की सीमित पैलेट, तो आप हर कैटगरी के लिए एक खास सुविधा बना सकते हैं. उदाहरण के लिए:

पैलेट में हर रंग एक अलग फ़ीचर के तौर पर दिखाया गया है.
इसका मतलब है कि फ़ीचर वेक्टर में हर रंग एक अलग सुविधा है.
उदाहरण के लिए, लाल रंग एक सुविधा है और नारंगी रंग एक अलग सुविधा है, वगैरह. पहली इमेज: हर कैटगरी के लिए एक खास सुविधा.

 

इसके बाद, कोई मॉडल हर रंग के लिए अलग-अलग वज़न जान सकता है. उदाहरण के लिए, हो सकता है कि मॉडल को पता चले कि लाल रंग की कार, ग्रीन कार की तुलना में ज़्यादा महंगी हैं.

इसके बाद, सुविधाओं को इंडेक्स किया जा सकता है.

पैलेट में मौजूद हर रंग अब एक ही सुविधा से जुड़ा है. 
इसका मतलब है कि अब सुविधा वेक्टर में सिर्फ़ एक सुविधा है.
हर रंग की एक खास वैल्यू होती है. उदाहरण के लिए, लाल रंग की वैल्यू 0 होती है और नारंगी रंग की वैल्यू 1 होती है. दूसरी इमेज: इंडेक्स की गई सुविधाएं.

 

इस तरह की मैपिंग को शब्दावली कहा जाता है.

शब्द ज्ञान

शब्दावली में, हर वैल्यू एक खास सुविधा दिखाती है.

Index NumberCategory
0Red
1Orange
2Blue
......

मॉडल, स्ट्रिंग से इंडेक्स को खोजता है. ऐसा करके, सुविधा वेक्टर में 1.0 और उससे जुड़े सभी स्लॉट में 0.0 को असाइन किया जाता है.

एंड-टू-एंड प्रोसेस का डायग्राम, ताकि वेक्टर दिखाने के लिए कैटगरी को मैप किया जा सके.
डायग्राम में, इनपुट की सुविधा पीले, नारंगी, नीले, और नीले रंग में दिखती है. सिस्टम किसी आईडी पर इनपुट वैल्यू को मैप करने के लिए, सेव किए गए शब्दों का इस्तेमाल करता है (लाल 0 होता है, नारंगी रंग 2 होता है, नीला 3 होता है और यही क्रम चलता रहता है). इस तरह, सिस्टम पीले, नारंगी, नीले, 3 से 1, 2, 2 तक मैप करता है. इसके बाद,
सिस्टम उन वैल्यू को एक-हॉट सुविधा वाले वेक्टर में बदल देता है. उदाहरण के लिए, सात संभावित रंगों वाला सिस्टम दिए जाने पर, 3 0.0, 0.0, 0.0, 1.0, 0.0,
0.0, 0.0 हो जाता है. तीसरी इमेज: वेक्टर को दिखाने के लिए, कैटगरी को मैप करने के लिए एंड-टू-एंड प्रोसेस.

कम जानकारी दिखाने के बारे में जानकारी

उदाहरण के लिए, अगर आपकी कैटगरी हफ़्ते के दिन हैं, तो आप शुक्रवार को सुविधा वेक्टर [0, 0, 0, 0, 1, 0, 0] के साथ दिखा सकते हैं. हालांकि, एमएल सिस्टम के ज़्यादातर लागू होने से, इस वेक्टर को मेमोरी में दिलचस्प तरीके से दिखाया जाएगा. यह आम तौर पर दिखने वाली वैल्यू और उनके इंडेक्स की सूची है, जैसे कि वैल्यू के लिए 1.0 और इंडेक्स के लिए [4]. यह आपको 0 सेकंड की बड़ी मात्रा में कम मेमोरी खर्च करने और ज़्यादा गुणा वाली मैट्रिक्स गुणा करने की सुविधा देता है. बुनियादी गणित के मामले में, [4], [0, 0, 0, 1, 0, 0] के बराबर है.

Voice के बाहर (OOV)

जैसे अंकों वाले डेटा में बाहरी चीज़ें शामिल होती हैं, वैसे ही कैटगरी वाले डेटा में भी ऐसा होता है. उदाहरण के लिए, किसी डेटा सेट पर विचार करें जिसमें कारों के बारे में जानकारी हो. इस डेटा सेट में एक सुविधा कार के रंग की हो सकती है. मान लें कि कार के सामान्य रंग (काला, सफ़ेद, स्लेटी वगैरह) इस डेटा सेट में अच्छी तरह से दिखाए जाते हैं और आप उनमें से हर रंग को एक कैटगरी में बनाते हैं, ताकि आप जान सकें कि इन अलग-अलग रंगों का आपके मान पर क्या असर पड़ता है. हालांकि, मान लें कि इस डेटा सेट में कम दिखने वाली रंगों वाली कारों की संख्या कम है (मॉव, प्यूस, एवोकाडो). इनमें से हर रंग को एक अलग कैटगरी देने के बजाय, आप उन्हें आउट ऑफ़ वोक (OOV) नाम की किसी कैच-ऑल कैटगरी में मिला सकते हैं. OOV का इस्तेमाल करने पर, सिस्टम उन रंगों में से हर एक के लिए प्रशिक्षण लेने में समय बर्बाद नहीं करता है.

हैशिंग

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

अहम शब्दों के लिए, हैशिंग की वजह से, किसी शब्दावली को चुनना मुश्किल होता है. दूसरी ओर, हैशिंग के लिए आपको किसी शब्दावली को इकट्ठा करने की ज़रूरत नहीं है. जो सुविधा समय के साथ बहुत ज़्यादा बदलती है, तो यह फ़ायदेमंद होता है.

शब्दों की दो सूचियां दिखाने वाला डायग्राम. एक सूची में 10 शब्द होते हैं. दूसरी सूची में, 10 शब्दों को आठ हैश बकेट में बांटा गया है. इस तरह, हैश बकेट में से छह
एक शब्द से जुड़े हैं, जबकि हैश बकेट में से दो में दो शब्द हैं.  हर हैश
बकेट की पहचान, 1 से 8 तक की संख्या
से की जाती है. चौथी इमेज: किसी शब्द को आइटम के हिसाब से मैप करना.

हैशिंग और शब्दावली का हाइब्रिड

आप हाइब्रिड तरीके अपना सकते हैं और हैशिंग को किसी शब्दावली के साथ मिला सकते हैं. अपने डेटा में सबसे अहम कैटगरी के लिए ग्लॉसरी का इस्तेमाल करें, लेकिन OOV बकेट को कई OOV बकेट में बदलें और हैशिंग का इस्तेमाल करके कैटगरी को बकेट में असाइन करें.

हैश बकेट में मौजूद कैटगरी को एक इंडेक्स शेयर करना होगा और मॉडल से अच्छा अनुमान नहीं लगाया जा सकेगा. हालांकि, हमने अपनी शब्दावली से बाहर की कैटगरी के बारे में जानने के लिए कुछ मेमोरी असाइन की है.

शब्दों की तीन सूचियां दिखाने वाला डायग्राम. एक सूची में कैटगरी
के लिए 10 शब्द होते हैं. दूसरी दो सूचियां उन 10 शब्दों को शब्दावली और हैश बकेट में मैप करती हैं. इसका मतलब है, पांच शब्द सीधे शब्दावली में मैप करते हैं, जबकि पांच अन्य शब्द दो हैश बकेट में मैप करते हैं. एक हैश बकेट में दो शब्द होते हैं, जबकि दूसरी हैश बकेट में तीन शब्द होते हैं.  शब्दावली में
सामान्य शब्द होते हैं; हैश बकेट में दुर्लभ
शब्द होते हैं. चित्र 5: शब्दावली और हैशिंग को जोड़ने वाला हाइब्रिड अप्रोच.

एम्बेड करने की जानकारी के बारे में नोट

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

वेक्टर को एम्बेड करने के लिए, वेक्टर दिखाने के लिए एंड-टू-एंड प्रोसेस दिखा रहा डायग्राम. एम्बेड किए गए टेबल में लाइनों की संख्या तय होती है. हर पंक्ति में 0.0 और 1.0 के बीच का फ़्लोटिंग-पॉइंट वैल्यू का सेट शामिल होता है. किसी कैटगरी को बदलने के लिए, सिस्टम उससे जुड़ी लाइन को एम्बेड करने वाली टेबल से कॉपी करता है.
उदाहरण के लिए, अगर इनपुट की कैटगरी 0 थी, तो सिस्टम जोड़ने वाली टेबल की पहली लाइन को फ़ीचर वेक्टर में कॉपी करता है. अगर इनपुट की श्रेणी 1 थी, तो सिस्टम, जोड़ने वाली टेबल की दूसरी पंक्ति को फ़ीचर वेक्टर में कॉपी करता है. चित्र 6: एम्बेड करने के माध्यम से पार्स करने की सुविधा वेक्टर

हमने जिन दूसरे बदलावों की चर्चा की थी उन्हें डिस्क पर सेव किया जा सकता है. हालांकि, एम्बेड करने की प्रोसेस अलग है. एम्बेडिंग को ट्रेनिंग दी जाती है. इसलिए, यह आम तौर पर डेटा में बदलाव नहीं होती, बल्कि मॉडल का हिस्सा होती है. उन्हें दूसरे मॉडल के महत्व के साथ ट्रेनिंग दी जाती है. साथ ही, वे मोटाई की एक परत के बराबर होते हैं.

पहले से जोड़ी गई एम्बेडिंग का क्या होगा? पहले से जुड़ी हुई ट्रेनिंग में आम तौर पर बदलाव किया जा सकता है, इसलिए वे अब भी मॉडल का हिस्सा हैं.