आंकड़ों और विज़ुअलाइज़ेशन की तकनीकों का इस्तेमाल करके अपने डेटा की जांच करने के बाद, आपको अपने डेटा में बदलाव करने चाहिए, ताकि आपका मॉडल असरदार हैं. इसका लक्ष्य नॉर्मलाइज़ेशन का इस्तेमाल सुविधाएं एक समान स्केल पर होने चाहिए. उदाहरण के लिए, इन दो सुविधाएँ:
- सुविधा
X
, 154 से 24,917,482 की रेंज में है. - सुविधा
Y
, 5 से 22 की रेंज में है.
ये दोनों सुविधाएं बहुत अलग-अलग रेंज में हैं. नॉर्मलाइज़ेशन में हेर-फेर कर सकती है
X
और Y
ताकि वे समान रेंज में हों, शायद 0 से 1 तक.
नॉर्मलाइज़ेशन के ये फ़ायदे हैं:
- इससे मॉडल को ट्रेनिंग के दौरान, ज़्यादा तेज़ी से लोगों के जुड़ने में मदद मिलती है. जब अलग-अलग सुविधाओं की सीमाएं अलग-अलग होती हैं, तो ग्रेडिएंट ढलान "बाउंस" और धीमा अभिसरण होता है. इसका मतलब है कि ज़्यादा बेहतर ऑप्टिमाइज़र ऐडग्राड और एडम इस तरह की समस्या से बचाते हैं: समय के साथ असरदार लर्निंग रेट में बदलाव करना.
- इससे मॉडल को बेहतर अनुमान लगाने में मदद मिलती है. जब अलग-अलग सुविधाओं की सीमाएं अलग-अलग होती हैं, तो नतीजे के तौर पर मॉडल थोड़ा कम उपयोगी सुझाव दे सकता है.
- जब सुविधा की वैल्यू बहुत ज़्यादा हों, तब "NaN ट्रैप" से बचने में मदद मिलती है.
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 और सबसे ज़्यादा वैल्यू +10,00,00,000 है.
अगर सुविधा C
और सुविधा D
को नॉर्मलाइज़ नहीं किया जाता है, तो आपके मॉडल से
कम बेहतर होता है. इसके अलावा, ट्रेनिंग में भी बहुत समय लगेगा.
एकजुट होते हैं या पूरी तरह से एक ही नहीं हो पाते!
इस सेक्शन में, नॉर्मलाइज़ेशन के तीन लोकप्रिय तरीकों के बारे में बताया गया है:
- लीनियर स्केलिंग
- ज़ेड-स्कोर स्केलिंग
- लॉग स्केलिंग
इस सेक्शन में क्लिप. हालांकि, यह सही नहीं है नॉर्मलाइज़ेशन तकनीक, क्लिपिंग से रेंज जो बेहतर मॉडल तैयार करती हैं.
रेखीय स्केलिंग
लीनियर स्केलिंग (आम तौर पर, स्केल करने की सुविधा ज़्यादा होती है) इसे छोटा करके सिर्फ़ स्केलिंग किया जाता है) का मतलब है, फ़्लोटिंग-पॉइंट वैल्यू को सामान्य रेंज में उनकी नैचुरल रेंज—आम तौर पर 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
सुविधा के पॉइंट, 3 स्टैंडर्ड डिविएशन में फ़िट हो सकते हैं,
हालाँकि, इस सुविधा के कुछ उदाहरण
सैकड़ों मानक विचलन
मीन से दूर होना चाहिए. इन स्थितियों में, Z-स्कोर स्केलिंग को
इस स्थिति से निपटने के लिए, नॉर्मलाइज़ेशन का एक अन्य तरीका (आम तौर पर क्लिपिंग) बनाया जा सकता है.
व्यायाम: अपनी समझ की जांच करें
मान लीजिए कि आपका मॉडलheight
नाम के एक फ़ीचर के आधार पर ट्रेनिंग लेता है, जिसमें वयस्कों के लिए
10 लाख महिलाओं की हाइट. क्या ज़ेड-स्कोर स्केलिंग एक अच्छा नॉर्मलाइज़ेशन है
height
के लिए तकनीक? ऐसा क्यों है या क्यों नहीं है?
लॉग स्केलिंग
लॉग स्केलिंग, रॉ वैल्यू के लॉगारिद्म को कैलकुलेट करता है. सैद्धांतिक तौर पर, लॉगारिद्म कोई भी बेस हो सकता है; लॉग स्केलिंग से आम तौर पर, नैचुरल लॉगारिद्म (IN).
लॉग स्केलिंग तब मददगार होती है, जब डेटा पावर लॉ के डिस्ट्रिब्यूशन के मुताबिक हो. आम तौर पर, ऊर्जा कानून का डिस्ट्रिब्यूशन इस तरह दिखता है:
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 हो जाएगा.
- अगर क्लिप 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 डिग्री होना चाहिए.