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

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

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

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

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

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

 

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

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

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

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

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

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

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

 

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

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

 

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

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

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

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

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

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

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

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

व्यायाम: अपनी समझ की जांच करें

यहां दी गई स्थिति देखें:

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