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

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

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

माइनॉरिटी क्लास से जुड़े डेटा का प्रतिशत असंतुलन की डिग्री
डेटासेट का 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, उस फ़ैक्टर के बराबर होना चाहिए जिसका इस्तेमाल आपने डाउनसैंपल करने के लिए किया था:

 {example weight} = {original example weight} ×{downsampling factor} 

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

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

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

ज़्यादातर क्लास को डाउनसैंपल करने से ये फ़ायदे मिलते हैं:

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

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

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

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

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

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

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

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

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