डेटासेट: असंतुलित डेटासेट

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

नीचे दी गई टेबल में, अलग-अलग डिग्री के असंतुलन के लिए आम तौर पर स्वीकार किए जाने वाले नाम और रेंज दी गई हैं:

माइनॉरिटी क्लास से जुड़े डेटा का प्रतिशत असंतुलन की डिग्री
डेटासेट का 20-40% हल्का
डेटासेट का 1 से 20% मध्यम
डेटासेट का <1% बहुत ज़्यादा

उदाहरण के लिए, वायरस का पता लगाने वाले डेटासेट पर विचार करें. इसमें माइनॉरिटी क्लास, डेटासेट का 0.5% और ज़्यादातर क्लास, 99.5% डेटा दिखाता है. इस तरह के डेटासेट, मेडिसिन में आम तौर पर मिलते हैं, क्योंकि ज़्यादातर विषयों में वायरस नहीं होता.

चित्र 5.  दो बार वाला बार ग्राफ़. एक बार में करीब 200
            नेगेटिव क्लास दिखती हैं. वहीं, दूसरे बार में एक पॉज़िटिव क्लास दिखती है.
पांचवीं इमेज. बहुत असंतुलित डेटासेट.

 

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

आम तौर पर, असंतुलन की समस्या नहीं होती. खास तौर पर, थोड़ा असंतुलित और कुछ हद तक असंतुलित डेटासेट के लिए. इसलिए, आपको सबसे पहले ओरिजनल डेटासेट पर ट्रेनिंग की कोशिश करनी चाहिए. अगर मॉडल ठीक से काम करता है, तो आपका काम हो गया. अगर ऐसा नहीं है, तो कम से कम सबसे अच्छा मॉडल, आने वाले समय में होने वाले प्रयोगों के लिए एक अच्छा बेसलाइन उपलब्ध कराता है. इसके बाद, असंतुलित डेटासेट की वजह से होने वाली समस्याओं को हल करने के लिए, यहां दी गई तकनीकों को आज़माएं.

डाउनसैंपलिंग और अपवेट

असंतुलित डेटासेट को हैंडल करने का एक तरीका यह है कि ज़्यादातर क्लास को डाउनसैंपल किया जाए और उसका वज़न बढ़ाया जाए. इन दो नई शर्तों की परिभाषाएं यहां दी गई हैं:

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

पहला चरण: ज़्यादातर क्लास को डाउनसैंपल करें. पांचवें चित्र में दिखाए गए वायरस के डेटासेट पर विचार करें. इसमें हर 200 नेगेटिव लेबल के लिए एक पॉज़िटिव लेबल का अनुपात है. 10 गुना तक डाउनसैंपलिंग करने पर, बैलेंस 1 पॉज़िटिव से 20 नेगेटिव (5%) हो जाता है. हालांकि, इससे तैयार हुआ ट्रेनिंग सेट अब भी थोड़ा असंतुलित है. हालांकि, सकारात्मक और नकारात्मक डेटा का अनुपात, मूल काफ़ी असंतुलित अनुपात (0.5%) से काफ़ी बेहतर है.

छठी इमेज. दो बार वाला बार ग्राफ़. एक बार में 20 नेगेटिव
            क्लास दिखती हैं; दूसरे बार में एक पॉज़िटिव क्लास दिखती है.
छठी इमेज. डाउनसैंपलिंग.

 

दूसरा चरण: डाउनसैंपल की गई क्लास को ज़्यादा अहमियत देना: डाउनसैंपल की गई क्लास में उदाहरण के तौर पर वज़न जोड़ें. 10 गुना तक डाउनसैंपलिंग करने के बाद, उदाहरण का वज़न 10 होना चाहिए. (हां, ऐसा हो सकता है कि आपको यह अजीब लगे, लेकिन हम बाद में इसकी वजह बताएंगे.)

सातवां चित्र. डाउनसैंपलिंग और अपवेटिंग के दो चरणों वाला डायग्राम.
            पहला चरण: डाउनसैंपलिंग की मदद से, ज़्यादातर क्लास से रैंडम उदाहरण निकाले जाते हैं. दूसरा चरण: अपवेट करने से, कम किए गए उदाहरणों का महत्व बढ़ जाता है.
सातवीं इमेज. अहमियत बढ़ाना.

 

वेट शब्द का मतलब मॉडल पैरामीटर (जैसे, w1 या w2) से नहीं है. यहां weight का मतलब, example weights से है. इससे ट्रेनिंग के दौरान, किसी उदाहरण की अहमियत बढ़ जाती है. अगर किसी उदाहरण का वेट 10 है, तो इसका मतलब है कि मॉडल, उस उदाहरण को 10 गुना ज़्यादा अहम मानता है (लोस का हिसाब लगाते समय), जितना वह वेट 1 वाले उदाहरण को मानता है.

weight, उस फ़ैक्टर के बराबर होना चाहिए जिसका इस्तेमाल आपने डाउनसैंपल करने के लिए किया था:

\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]

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

बैलेंस को फिर से सेट करना

अपने डेटासेट को फिर से बैलेंस करने के लिए, आपको डेटा को कितना कम करना चाहिए और उसे कितना ज़्यादा महत्व देना चाहिए? इसका जवाब पाने के लिए, आपको रीबैलंस करने के अनुपात के साथ प्रयोग करना चाहिए. ठीक उसी तरह जैसे आपने अन्य हाइपरपैरामीटर के साथ प्रयोग किया होगा. हालांकि, इसका जवाब इन बातों पर निर्भर करता है:

  • बैच का साइज़
  • असंतुलन का अनुपात
  • ट्रेनिंग सेट में मौजूद उदाहरणों की संख्या

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

एक्सरसाइज़: देखें कि आपको क्या समझ आया

इस स्थिति पर ध्यान दें:

  • ट्रेनिंग सेट में एक अरब से ज़्यादा उदाहरण हैं.
  • बैच का साइज़ 128 है.
  • असंतुलन का अनुपात 100:1 है. इसलिए, ट्रेनिंग सेट को इस तरह बांटा गया है:
    • ज़्यादातर क्लास के ~1 अरब उदाहरण.
    • माइनॉरिटी क्लास के 10 मिलियन उदाहरण.
इनमें से कौनसी बातें सही हैं?
बैच साइज़ को 1,024 तक बढ़ाने से, नतीजे में मिलने वाले मॉडल को बेहतर बनाया जा सकता है.
1,024 के बैच साइज़ के साथ, हर बैच में औसतन 10 माइनॉरिटी क्लास के उदाहरण होंगे. इससे, बेहतर मॉडल को ट्रेन करने में मदद मिलेगी.
बैच साइज़ को 128 पर रखते हुए, 20:1 पर डाउनसैंपलिंग (और अपवेट) करने से, नतीजे में मिलने वाले मॉडल को बेहतर बनाया जा सकता है.
डाउनसैंपलिंग की मदद से, 128 के हर बैच में औसतन 21 माइनॉरिटी क्लास के उदाहरण होंगे. ये उदाहरण, काम के मॉडल को ट्रेन करने के लिए काफ़ी होंगे. ध्यान दें कि डाउनसैंपलिंग से, ट्रेनिंग सेट में उदाहरणों की संख्या एक अरब से ज़्यादा से घटकर करीब 6 करोड़ हो जाती है.
मौजूदा हाइपरपैरामीटर ठीक हैं.
128 के बैच साइज़ के साथ, हर बैच में औसतन एक माइनॉरिटी क्लास का उदाहरण होगा. ऐसा हो सकता है कि किसी काम के मॉडल को ट्रेन करने के लिए, यह उदाहरण काफ़ी न हो.