आंकड़ों और विज़ुअलाइज़ेशन की तकनीकों की मदद से अपने डेटा की जांच करने के बाद, आपको अपने डेटा को ऐसे तरीके से बदलना चाहिए जिससे आपके मॉडल को ज़्यादा असरदार तरीके से ट्रेन करने में मदद मिल सके. इसका लक्ष्य नॉर्मलाइज़ेशन का इस्तेमाल सुविधाएं एक समान स्केल पर होने चाहिए. उदाहरण के लिए, यहां दी गई दो सुविधाओं पर ध्यान दें:
- सुविधा
X
की रेंज 154 से 24,917,482 तक है. - सुविधा
Y
, 5 से 22 की रेंज में है.
ये दोनों सुविधाएं बहुत अलग-अलग रेंज में हैं. सामान्य बनाने की प्रोसेस में, X
और Y
में बदलाव किया जा सकता है, ताकि वे एक जैसी रेंज में हों, जैसे कि 0 से 1.
डेटा को सामान्य बनाने से ये फ़ायदे मिलते हैं:
- इससे मॉडल को ट्रेनिंग के दौरान, ज़्यादा तेज़ी से लोगों के जुड़ने में मदद मिलती है. जब अलग-अलग सुविधाओं की सीमाएं अलग-अलग होती हैं, तो ग्रेडिएंट ढलान "बाउंस" और धीमी अभिसरण. हालांकि, Adagrad और Adam जैसे बेहतर ऑप्टिमाइज़र, समय के साथ बेहतर लर्निंग रेट में बदलाव करके, इस समस्या से बचाते हैं.
- इससे मॉडल को बेहतर अनुमान लगाने में मदद मिलती है. जब अलग-अलग सुविधाओं की सीमाएं अलग-अलग होती हैं, तो नतीजे के तौर पर मॉडल थोड़ा कम उपयोगी सुझाव दे सकता है.
- जब सुविधा की वैल्यू बहुत ज़्यादा हों, तब "NaN ट्रैप" से बचने में मदद मिलती है.
NaN, इसका छोटा रूप है
संख्या नहीं है. जब किसी मॉडल में एक मान
फ़्लोटिंग-पॉइंट सटीक होने की सीमा, सिस्टम इसके बजाय वैल्यू को
NaN
पर सेट करता है चुनें. जब मॉडल में मौजूद कोई संख्या NaN हो जाती है, तो मॉडल में मौजूद अन्य संख्याएं भी आखिर में NaN हो जाती हैं. - इससे मॉडल को हर सुविधा के लिए सही वेट सीखने में मदद मिलती है. सुविधा स्केलिंग के बिना, मॉडल बहुत ज़्यादा ध्यान देता है बड़ी रेंज वाली सुविधाओं पर और उन पर काफ़ी ध्यान नहीं दिया है. छोटी रेंज.
हमारा सुझाव है कि अंकों वाली सुविधाओं को नॉर्मलाइज़ करें. इनमें साफ़ तौर पर,
अलग-अलग रेंज में हो रहा है (उदाहरण के लिए, उम्र और आय).
हमारा सुझाव है कि आप ऐसी किसी एक संख्या वाली सुविधा को नॉर्मलाइज़ करें जो कई तरह की हो,
जैसे कि city population.
इन दो सुविधाओं पर ध्यान दें:
- सुविधा
A
की सबसे कम वैल्यू -0.5 और सबसे ज़्यादा वैल्यू +0.5 है. - सुविधा
B
की सबसे कम वैल्यू -5.0 और सबसे ज़्यादा वैल्यू +5.0 है.
सुविधा A
और सुविधा B
में काफ़ी कम स्पैन हैं. हालांकि, सुविधा B
का स्पैन, सुविधा A
के स्पैन से 10 गुना ज़्यादा है. इसलिए:
- ट्रेनिंग की शुरुआत में, मॉडल यह मानता है कि सुविधा
A
ज़्यादा "ज़रूरी" सुविधाB
से कम है. - ट्रेनिंग में ज़रूरत से ज़्यादा समय लगेगा.
- इससे मिलने वाला मॉडल, शायद सही न हो.
सामान्य न करने की वजह से होने वाला कुल नुकसान अपेक्षाकृत कम होगा. हालांकि, हम अब भी सुझाव देते हैं कि आप सुविधा A और सुविधा B को एक ही स्केल पर सामान्य करें. जैसे, -1.0 से +1.0.
अब दो ऐसी सुविधाओं पर विचार करें जिनकी रेंज में काफ़ी अंतर है:
- सुविधा
C
का सबसे कम मान -1 और सबसे ज़्यादा का मान +1 है. - फ़ीचर
D
की सबसे कम वैल्यू +5,000 और सबसे ज़्यादा वैल्यू +1,000,000,000 है.
अगर सुविधा C
और सुविधा D
को नॉर्मलाइज़ नहीं किया जाता है, तो आपके मॉडल से
कम बेहतर होता है. इसके अलावा, ट्रेनिंग में भी बहुत समय लगेगा.
एकजुट होते हैं या पूरी तरह से एक ही नहीं हो पाते!
इस सेक्शन में, नॉर्मलाइज़ेशन के तीन लोकप्रिय तरीकों के बारे में बताया गया है:
- लीनियर स्केलिंग
- Z-स्कोर स्केलिंग
- लॉग स्केलिंग
इस सेक्शन में, क्लिप करने के बारे में भी बताया गया है. क्लिपिंग, नॉर्मलाइज़ेशन की सटीक तकनीक नहीं है. हालांकि, यह ग़ैर-ज़रूरी संख्याओं को ऐसी सीमाओं में बदल देती है जिनसे बेहतर मॉडल बनते हैं.
रेखीय स्केलिंग
लीनियर स्केलिंग (आम तौर पर, स्केल करने की सुविधा ज़्यादा होती है) इसे छोटा करके सिर्फ़ स्केलिंग किया जाता है) का मतलब है, फ़्लोटिंग-पॉइंट वैल्यू को सामान्य रेंज में उनकी नैचुरल रेंज—आम तौर पर 0 से 1 या -1 से +1.
लीनियर स्केलिंग का विकल्प तब चुनना चाहिए, जब ये सभी शर्तें पूरी होती हों:
- आपके डेटा की निचली और ऊपरी सीमा, समय के साथ ज़्यादा नहीं बदलती.
- इस सुविधा में कुछ या कोई आउटलायर मौजूद नहीं होते. साथ ही, आउटलायर वे नहीं होते बहुत ज़्यादा.
- यह सुविधा, अपनी रेंज में लगभग समान रूप से डिस्ट्रिब्यूट होती है. इसका मतलब है कि हिस्टोग्राम ज़्यादातर वैल्यू के लिए करीब-करीब बराबर बार दिखाएगा.
मान लीजिए कि इंसान age
एक सुविधा है. लीनियर स्केलिंग एक अच्छा नॉर्मलाइज़ेशन है
तकनीक age
के लिए है, क्योंकि:
- अनुमानित निचली और ऊपरी सीमाएं 0 से 100 हैं.
age
में आउटलायर का प्रतिशत कम है. यहां की सिर्फ़ 0.3% आबादी की उम्र 100 साल से ज़्यादा है.- हालांकि, कुछ उम्र के लोगों के डेटा की तुलना में अन्य उम्र के लोगों के डेटा की संख्या ज़्यादा हो सकती है. हालांकि, बड़े डेटासेट में सभी उम्र के लोगों के डेटा के ज़रूरत के मुताबिक उदाहरण होने चाहिए.
व्यायाम: अपनी समझ की जांच करें
मान लें कि आपके मॉडल मेंnet_worth
नाम की एक सुविधा है, जो
करने में मदद करते हैं. क्या लीनियर स्केलिंग एक अच्छा नॉर्मलाइज़ेशन होगा
net_worth
के लिए तकनीक? ऐसा क्यों है या क्यों नहीं है?
ज़ेड-स्कोर स्केलिंग
Z-स्कोर, मीन से मिलने वाले मानक विचलन की संख्या है. उदाहरण के लिए, अगर कोई वैल्यू, औसत से दो स्टैंडर्ड डिविएशन ज़्यादा है, तो उसका Z-स्कोर +2.0 होगा. अगर कोई वैल्यू, माध्य से 1.5 स्टैंडर्ड डिविएशन कम है, तो उसका Z-स्कोर -1.5 होगा.
Z-स्कोर स्केलिंग के साथ किसी सुविधा को दिखाने का मतलब है कि सुविधा के फ़ीचर वेक्टर में Z-स्कोर. उदाहरण के लिए, नीचे दिए गए डायग्राम में दो हिस्टोग्राम:
- बाईं ओर, क्लासिक सामान्य डिस्ट्रिब्यूशन.
- दाईं ओर, वही डिस्ट्रिब्यूशन Z-स्कोर स्केलिंग से नॉर्मलाइज़ किया गया है.
Z-स्कोर स्केलिंग की मदद से, डेटा को आसानी से समझा जा सकता है. दिया गया है, जिसका डिस्ट्रिब्यूशन साफ़ तौर पर नहीं है.
अगर डेटा सामान्य डिस्ट्रिब्यूशन का पालन करता है, तो Z-स्कोर एक अच्छा विकल्प है या एक डिस्ट्रिब्यूशन जो कुछ हद तक सामान्य डिस्ट्रिब्यूशन जैसा होता है.
ध्यान दें कि कुछ वितरण
सीमा में है, लेकिन फिर भी इसमें बहुत ज़्यादा आउटलायर मौजूद होते हैं. उदाहरण के लिए, हो सकता है कि net_worth
सुविधा के ज़्यादातर पॉइंट, तीन स्टैंडर्ड डिविएशन में आसानी से फ़िट हो जाएं. हालांकि, इस सुविधा के कुछ उदाहरण, माध्य से सैकड़ों स्टैंडर्ड डिविएशन दूर हो सकते हैं. इन स्थितियों में, इस स्थिति को मैनेज करने के लिए, Z-स्कोर स्केलिंग को सामान्य करने के किसी अन्य तरीके (आम तौर पर क्लिपिंग) के साथ जोड़ा जा सकता है.
व्यायाम: अपनी समझ की जांच करें
मान लीजिए कि आपका मॉडलheight
नाम के एक फ़ीचर के आधार पर ट्रेनिंग लेता है, जिसमें वयस्कों के लिए
10 लाख महिलाओं की हाइट. क्या height
के लिए, Z-स्कोर स्केलिंग, सामान्य बनाने की अच्छी तकनीक होगी? ऐसा क्यों है या क्यों नहीं है?
लॉग स्केलिंग
लॉग स्केलिंग, रॉ वैल्यू के लॉगारिद्म का हिसाब लगाती है. सिद्धांत रूप से, लॉगारिद्म का कोई भी आधार हो सकता है. हालांकि, आम तौर पर लॉग स्केलिंग में नेचुरल लॉगारिद्म (ln) का हिसाब लगाया जाता है.
लॉग स्केलिंग तब मददगार होती है, जब डेटा पावर लॉ के डिस्ट्रिब्यूशन के मुताबिक हो. आम तौर पर, पावर लॉ डिस्ट्रिब्यूशन इस तरह दिखता है:
X
की कम वैल्यू के लिए,Y
की वैल्यू बहुत ज़्यादा होती है.X
की वैल्यू बढ़ने पर,Y
की वैल्यू तेज़ी से कम हो जाती है. इसलिए,X
की ज़्यादा वैल्यू के लिएY
की वैल्यू बहुत कम होती है.
फ़िल्म रेटिंग, पावर लॉ डिस्ट्रिब्यूशन का एक अच्छा उदाहरण है. निम्न में चित्र, सूचना:
- कुछ फ़िल्मों को काफ़ी उपयोगकर्ता रेटिंग मिली हों. (
X
की कम वैल्यू के लिए,Y
की वैल्यू ज़्यादा होती है.) - ज़्यादातर फ़िल्मों को बहुत कम उपयोगकर्ता रेटिंग मिलती हैं. (
X
की ज़्यादा वैल्यू के लिए,Y
की वैल्यू कम होती है.)
लॉग स्केलिंग से डिस्ट्रिब्यूशन में बदलाव होता है. इससे, मॉडल को ट्रेनिंग देने में मदद मिलती है करने में मदद मिलती है.
दूसरे उदाहरण के रूप में, किताबों की बिक्री, पावर लॉ डिस्ट्रिब्यूशन के तहत आती है, क्योंकि:
- पब्लिश की गई ज़्यादातर किताबों की कुछ ही कॉपी बिकती हैं. शायद एक या दो सौ.
- कुछ किताबों की हज़ारों कॉपी बिकती हैं.
- सिर्फ़ कुछ बेस्टसेलर की एक करोड़ से ज़्यादा कॉपी बिकती हैं.
मान लीजिए कि आप रैखिक मॉडल को प्रशिक्षण के ज़रिए बिक्री बुक करने के लिए किताब के कवर वर्शन चुनें. रॉ वैल्यू पर आधारित लीनियर मॉडल ट्रेनिंग को, उन किताबों के कवर के बारे में कुछ पता करना होगा जिनकी एक करोड़ कॉपी बिकती हैं. यह जानकारी, सिर्फ़ 100 कॉपी बिकने वाली किताबों के कवर की जानकारी से 10,000 गुना ज़्यादा अहम होगी. हालांकि, बिक्री के सभी आंकड़ों को लॉग करने से यह काम बहुत आसान हो जाता है. उदाहरण के लिए, 100 का लॉग यह होता है:
~4.6 = ln(100)
जबकि 1,000,000 का लॉग यह होता है:
~13.8 = ln(1,000,000)
इसलिए, 1,000,000 का लॉग, 100 के लॉग की तुलना में सिर्फ़ तीन गुना बड़ा होता है. शायद आप कल्पना कर सकते हैं कि एक सबसे ज़्यादा बिकने वाली किताब का कवर करीब तीन बार जो किसी छोटे से बिकने वाले किताब के कवर से ज़्यादा दमदार (किसी भी तरीके से) हो.
क्लिप करना
क्लिपिंग एक ऐसी तकनीक है जिससे, बहुत ज़्यादा आउटलायर के असर को कम किया जा सकता है. संक्षेप में, क्लिपिंग आम तौर पर बड़े अक्षरों में होती है (घटता है) आउटलायर की वैल्यू को किसी खास ज़्यादा से ज़्यादा वैल्यू तक कम करता है. क्लिपिंग फिर भी, यह बहुत असरदार हो सकता है.
उदाहरण के लिए, roomsPerPerson
नाम की सुविधा वाले डेटासेट की कल्पना करें. यह सुविधा, अलग-अलग घरों के कमरों की संख्या दिखाती है. यह संख्या, कुल कमरों की संख्या को रहने वालों की संख्या से भाग देने पर मिलती है. नीचे दिए गए प्लॉट से पता चलता है कि
सुविधा के 99% मान सामान्य डिस्ट्रिब्यूशन की पुष्टि करते हैं (मोटे तौर पर,
1.8 और 0.7 का स्टैंडर्ड डिविएशन). हालांकि, सुविधा में
हमें कुछ आउटलायर्स के बारे में बताना है, जिनमें से कुछ पर बहुत ज़्यादा असर है:
ऐसे आउटलायर के असर को कैसे कम किया जा सकता है? वैसे, हिस्टोग्राम में डेटा का बंटवारा, बराबर नहीं होता. यह नॉर्मल डिस्ट्रिब्यूशन या पावर लॉ डिस्ट्रिब्यूशन भी नहीं होता. क्या होगा, अगर आप
roomsPerPerson
को आर्बिट्रेरी वैल्यू पर, 4.0 मान लें?
सुविधा की वैल्यू को 4.0 पर क्लिप करने का मतलब यह नहीं है कि आपका मॉडल 4.0 से ज़्यादा की सभी वैल्यू को अनदेखा कर देता है. बल्कि, इसका मतलब है कि वे सभी वैल्यू जो से 4.0, अब 4.0 हो गया है. यह 4.0 ऊंची पहाड़ी की खासियत है. इसके बावजूद स्केल किए गए फ़ीचर का सेट अब ओरिजनल डेटा से ज़्यादा काम का है.
एक सेकंड रुकिए! क्या हर आउटलायर वैल्यू को किसी मनमुताबिक ऊपरी सीमा तक कम किया जा सकता है? मॉडल को ट्रेनिंग देते समय, हां.
सामान्य बनाने के अन्य तरीकों को लागू करने के बाद भी, वैल्यू को क्लिप किया जा सकता है. उदाहरण के लिए, मान लें कि ज़ेड-स्कोर स्केलिंग का इस्तेमाल किया जाता है, लेकिन कुछ आउटलायर के पास निरपेक्ष मान 3 से कहीं ज़्यादा हैं. इस स्थिति में, ये काम किए जा सकते हैं:
- ज़्यादा से ज़्यादा तीन होने चाहिए.
- क्लिप Z में -3 से कम स्कोर करें, ताकि -3 हो जाए.
क्लिप बनाने से, आपके मॉडल को गै़र-ज़रूरी डेटा को इंडेक्स करने से रोका जा सकता है. हालांकि, कुछ आउटलायर असल में ज़रूरी होते हैं. इसलिए, वैल्यू को ध्यान से क्लिप करें.
नॉर्मलाइज़ेशन तकनीकों के बारे में खास जानकारी
नॉर्मलाइज़ेशन तकनीक | फ़ॉर्मूला | कब इस्तेमाल करें |
---|---|---|
रेखीय स्केलिंग | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | जब सुविधा सभी जगहों पर एक जैसी हो तय की गई सीमा में होते हैं. |
ज़ेड-स्कोर स्केलिंग | $$ x' = \frac{x - μ}{σ}$$ | जब एलिमेंट के डिस्ट्रिब्यूशन में बहुत ज़्यादा आउटलायर न हों. |
लॉग स्केलिंग | $$ x' = log(x)$$ | जब यह सुविधा, पावर लॉ के मुताबिक हो. |
क्लिप करना | अगर $x > max$, $x पर सेट करें = ज़्यादा से ज़्यादा डॉलर अगर $x < min$, $x' पर सेट करें = कम से कम कीमत |
जब फ़ीचर में बहुत ज़्यादा आउटलायर हों. |
एक्सरसाइज़: अपना ज्ञान परखें
मान लें कि आपने एक ऐसा मॉडल डेवलप किया है जो डेटा सेंटर के अंदर मापे गए तापमान के आधार पर, डेटा सेंटर की प्रोडक्टिविटी का अनुमान लगाता है.
आपके डेटासेट में मौजूद temperature
की लगभग सभी वैल्यू,
इन अपवादों को छोड़कर 15 से 30 (सेल्सियस) के बीच हैं:
- साल में एक या दो बार, बहुत गर्म दिनों में,
temperature
में 31 से 45 के बीच की कुछ वैल्यू रिकॉर्ड की जाती हैं. temperature
में हर 1,000वें पॉइंट को 1,000 पर सेट किया जाता है से होता है.
temperature
के लिए, सामान्य बनाने की कौनसी तकनीक सही रहेगी?
1,000 की वैल्यू गलत हैं और इन्हें क्लिप करने के बजाय, मिटा दिया जाना चाहिए.
31 से 45 के बीच की वैल्यू, मान्य डेटा पॉइंट हैं. इन वैल्यू के लिए क्लिप बनाना अच्छा रहेगा, क्योंकि डेटासेट में इतने उदाहरण मौजूद नहीं हैं कि तापमान की इस रेंज में मॉडल को अच्छे अनुमान लगाने की ट्रेनिंग दें. हालांकि, अनुमान के दौरान, ध्यान दें कि क्लिप किया गया मॉडल तापमान 45 या 35 डिग्री होना चाहिए.