डाइमेंशन शब्द, फ़ीचर वेक्टर में मौजूद एलिमेंट की संख्या के लिए एक दूसरा शब्द है. कैटगरी वाली कुछ सुविधाएं कम डाइमेंशन वाली होती हैं. उदाहरण के लिए:
सुविधा का नाम | कैटगरी की # | कैटगरी के सैंपल |
---|---|---|
snowed_today | 2 | सही, गलत |
skill_level | 3 | बिगिनर, प्रैक्टिशनर, एक्सपर्ट |
सीज़न | 4 | सर्दी, बसंत, गर्मी, पतझड़ |
day_of_week | 7 | सोमवार, मंगलवार, बुधवार |
ग्रह | 8 | बुध, शुक्र, पृथ्वी |
जब किसी कैटगरी वाली फ़ीचर में संभावित कैटगरी की संख्या कम हो, तो उसे वॉकेबुलरी के तौर पर कोड में बदला जा सकता है. वॉटरकुलरी को कोड में बदलने की सुविधा की मदद से, मॉडल हर संभावित कैटगरी वैल्यू को अलग-अलग सुविधा के तौर पर इस्तेमाल करता है. ट्रेनिंग के दौरान, मॉडल हर कैटगरी के लिए अलग-अलग वेट सीखता है.
उदाहरण के लिए, मान लें कि आपने car_color
नाम की कैटगरी वाली सुविधा के आधार पर, कार की कीमत का अनुमान लगाने के लिए एक मॉडल बनाया है.
शायद लाल रंग की कारों की कीमत, हरे रंग की कारों की कीमत से ज़्यादा है.
मैन्युफ़ैक्चरर, बाहरी रंग की संख्या सीमित रखते हैं. इसलिए, car_color
एक कम डाइमेंशन वाली कैटगरी है.
नीचे दिए गए इलस्ट्रेशन में, car_color
के लिए शब्दावली (संभावित वैल्यू) का सुझाव दिया गया है:
एक्सरसाइज़: अपने अंतर्ज्ञान की जांच करना
"Red"
स्ट्रिंग, फ़्लोटिंग-पॉइंट वाली संख्या नहीं है. आपको "Red"
जैसी स्ट्रिंग को फ़्लोटिंग-पॉइंट नंबर में बदलना होगा.
इंडेक्स नंबर
मशीन लर्निंग मॉडल, सिर्फ़ फ़्लोटिंग-पॉइंट वाली संख्याओं में बदलाव कर सकते हैं. इसलिए, आपको हर स्ट्रिंग को एक यूनीक इंडेक्स नंबर में बदलना होगा, जैसा कि इस इलस्ट्रेशन में दिखाया गया है:
कसरत: खुद को पहचानें
"Orange"
(इंडेक्स नंबर 1) की तुलना में,
"Black"
(इंडेक्स नंबर 5) को पांच गुना ज़्यादा अहम मानेगा.
"Black"
(इंडेक्स नंबर 5) को "Orange"
(इंडेक्स नंबर 1) के मुकाबले, पांच गुना ज़्यादा अहम माना जाएगा.
वन-हॉट एन्कोडिंग
शब्दावली बनाने का अगला चरण, हर इंडेक्स नंबर को वन-हॉट कोड में बदलना है. वन-हॉट एन्कोडिंग में:
- हर कैटगरी को N एलिमेंट के वेक्टर (कलेक्शन) से दिखाया जाता है, जहां N कैटगरी की संख्या होती है. उदाहरण के लिए, अगर
car_color
में आठ संभावित कैटगरी हैं, तो एक-हॉट वेक्टर में आठ एलिमेंट होंगे. - वन-हॉट वेक्टर के ठीक एक एलिमेंट की वैल्यू 1.0 है; बचे हुए सभी एलिमेंट की वैल्यू 0.0 है.
उदाहरण के लिए, नीचे दी गई टेबल में car_color
में मौजूद हर एलिमेंट के लिए, एक-हॉट कोडिंग दिखाई गई है:
सुविधा | लाल | Orange | नीला | पीला | हरा | काला | बैंगनी | भूरा |
---|---|---|---|---|---|---|---|---|
"लाल" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"Orange" | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
"नीला" | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
"पीला" | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
"हरा" | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
"Black" | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
"बैंगनी" | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
"भूरा" | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
स्ट्रिंग या इंडेक्स नंबर के बजाय, फ़ीचर वेक्टर में एक-हॉट वेक्टर पास किया जाता है. मॉडल, फ़ीचर वेक्टर के हर एलिमेंट के लिए अलग-अलग वेट सीखता है.
नीचे दिए गए इलस्ट्रेशन में, शब्दावली के अलग-अलग तौर पर दिखाए जाने के तरीके बताए गए हैं:
स्पैर्स रिप्रज़ेंटेशन
जिस सुविधा की वैल्यू मुख्य रूप से शून्य या खाली होती हैं उसे स्पार्स सुविधा कहा जाता है. car_color
जैसी कई कैटगरी वाली सुविधाएं, आम तौर पर कम होती हैं.
स्पार्स रिप्रज़ेंटेशन का मतलब है कि स्पेयर वेक्टर में 1.0 की रैंक को सेव करना. उदाहरण के लिए, "Blue"
के लिए वन-हॉट वेक्टर यह है:
[0, 0, 1, 0, 0, 0, 0, 0]
1
, 2 नंबर की पोज़िशन पर है (जब गिनती 0 से शुरू की जाती है), तो पहले वाले वन-हॉट वेक्टर के लिए, स्पैर्स रिप्रज़ेंटेशन यह है:
2
ध्यान दें कि स्पैर्स रिप्रज़ेंटेशन, आठ एलिमेंट वाले वन-हॉट वेक्टर के मुकाबले काफ़ी कम मेमोरी का इस्तेमाल करता है. अहम बात यह है कि मॉडल को एक-हॉट वेक्टर पर ट्रेन करना चाहिए, न कि स्पैर्स रिप्रज़ेंटेशन पर.
कैटगरी वाले डेटा में आउटलेयर
संख्या वाले डेटा की तरह, कैटगरी वाले डेटा में भी आउटलायर होते हैं. मान लीजिए
car_color
में सिर्फ़ लोकप्रिय रंग ही नहीं, बल्कि कुछ ऐसे बाहरी रंग भी हैं जिनका इस्तेमाल बहुत कम किया जाता है, जैसे कि "Mauve"
या "Avocado"
.
इन आउटलायर रंगों को अलग-अलग कैटगरी में रखने के बजाय, इन्हें एक ही "कैच-ऑल" कैटगरी में रखा जा सकता है. इसे वॉकेबुलरी से बाहर का शब्द (ओओवी) कहा जाता है. दूसरे शब्दों में, सभी आउटलायर रंगों को एक ही आउटलायर बकेट में रखा जाता है. सिस्टम, आउटलायर बकेट के लिए एक ही वेट सीखता है.
ज़्यादा डाइमेंशन वाली कैटगरी वाली सुविधाओं को एन्कोड करना
कैटगरी वाली कुछ सुविधाओं में डाइमेंशन की संख्या ज़्यादा होती है. जैसे, नीचे दी गई टेबल में मौजूद सुविधाएं:
सुविधा का नाम | कैटगरी की # | कैटगरी के सैंपल |
---|---|---|
words_in_english | ~5,00,000 | "खुश", "चलना" |
US_postal_codes | ~42,000 | "02114", "90301" |
last_names_in_Germany | ~8,50,000 | "श्मिट", "श्नेइडर" |
जब कैटगरी की संख्या ज़्यादा होती है, तो आम तौर पर वन-हॉट कोडिंग का इस्तेमाल नहीं किया जाता. एम्बेड करने की सुविधा आम तौर पर बेहतर विकल्प होती है. इसकी जानकारी एक अलग एम्बेड मॉड्यूल में दी जाती है. एम्बेड करने से डाइमेंशन की संख्या काफ़ी कम हो जाती है. इससे मॉडल को दो अहम तरीकों से फ़ायदा होता है:
- आम तौर पर, मॉडल तेज़ी से ट्रेनिंग करता है.
- आम तौर पर, बनाया गया मॉडल तेज़ी से अनुमान लगाता है. इसका मतलब है कि मॉडल के लिए, इंतज़ार का समय कम होता है.
हैशिंग (इसे हैशिंग ट्रिक भी कहा जाता है), डाइमेंशन की संख्या कम करने का एक सामान्य तरीका नहीं है.