किसी ऐसे डेटासेट पर विचार करें जिसमें कैटगरी वाला लेबल हो और उसकी वैल्यू पॉज़िटिव या नेगेटिव हो. बैलेंस किए गए डेटासेट में, पॉज़िटिव और नेगेटिव लेबल की संख्या लगभग बराबर होती है. हालांकि, अगर एक लेबल दूसरे लेबल से ज़्यादा आम है, तो डेटासेट असंतुलित है. असंतुलित डेटासेट में मौजूद मुख्य लेबल को ज़्यादातर क्लास कहा जाता है. वहीं, कम इस्तेमाल होने वाले लेबल को अल्पसंख्यक क्लास कहा जाता है.
नीचे दी गई टेबल में, अलग-अलग डिग्री के असंतुलन के लिए आम तौर पर स्वीकार किए जाने वाले नाम और रेंज दी गई हैं:
माइनॉरिटी क्लास से जुड़े डेटा का प्रतिशत | असंतुलन की डिग्री |
---|---|
डेटासेट का 20-40% | हल्का |
डेटासेट का 1 से 20% | मध्यम |
डेटासेट का <1% | बहुत ज़्यादा |
उदाहरण के लिए, वायरस का पता लगाने वाले डेटासेट पर विचार करें. इसमें माइनॉरिटी क्लास, डेटासेट का 0.5% और ज़्यादातर क्लास, 99.5% डेटा दिखाता है. इस तरह के डेटासेट, मेडिसिन में आम तौर पर मिलते हैं, क्योंकि ज़्यादातर विषयों में वायरस नहीं होता.
असंतुलित डेटासेट में, कभी-कभी माइनॉरिटी क्लास के उदाहरणों की संख्या ज़रूरत के मुताबिक नहीं होती. इससे मॉडल को सही तरीके से ट्रेन नहीं किया जा सकता. इसका मतलब है कि इतने कम पॉज़िटिव लेबल होने पर, मॉडल सिर्फ़ नेगेटिव लेबल पर ट्रेनिंग करता है और पॉज़िटिव लेबल के बारे में ज़्यादा नहीं सीख पाता. उदाहरण के लिए, अगर एक बैच में 50 एलिमेंट हैं, तो कई बैच में कोई भी पॉज़िटिव लेबल नहीं होगा.
आम तौर पर, असंतुलन की समस्या नहीं होती. खास तौर पर, थोड़ा असंतुलित और कुछ हद तक असंतुलित डेटासेट के लिए. इसलिए, आपको सबसे पहले ओरिजनल डेटासेट पर ट्रेनिंग की कोशिश करनी चाहिए. अगर मॉडल ठीक से काम करता है, तो आपका काम हो गया. अगर ऐसा नहीं है, तो कम से कम सबसे अच्छा मॉडल, आने वाले समय में होने वाले प्रयोगों के लिए एक अच्छा बेसलाइन उपलब्ध कराता है. इसके बाद, असंतुलित डेटासेट की वजह से होने वाली समस्याओं को हल करने के लिए, यहां दी गई तकनीकों को आज़माएं.
डाउनसैंपलिंग और अपवेट
असंतुलित डेटासेट को हैंडल करने का एक तरीका यह है कि ज़्यादातर क्लास को डाउनसैंपल किया जाए और उसका वज़न बढ़ाया जाए. इन दो नई शर्तों की परिभाषाएं यहां दी गई हैं:
- इस संदर्भ में, डाउनसैंपलिंग का मतलब है कि ज़्यादातर क्लास के उदाहरणों के बहुत कम सबसेट पर ट्रेनिंग देना.
- ज़्यादा अहमियत देना का मतलब है, डाउनसैंपल की गई क्लास में, उदाहरण के तौर पर उतना ही वज़न जोड़ना जितना आपने डाउनसैंपल किया है.
पहला चरण: ज़्यादातर क्लास को डाउनसैंपल करें. पांचवें चित्र में दिखाए गए वायरस के डेटासेट पर विचार करें. इसमें हर 200 नेगेटिव लेबल के लिए एक पॉज़िटिव लेबल का अनुपात है. 10 गुना तक डाउनसैंपलिंग करने पर, बैलेंस 1 पॉज़िटिव से 20 नेगेटिव (5%) हो जाता है. हालांकि, इससे तैयार हुआ ट्रेनिंग सेट अब भी थोड़ा असंतुलित है. हालांकि, सकारात्मक और नकारात्मक डेटा का अनुपात, मूल काफ़ी असंतुलित अनुपात (0.5%) से काफ़ी बेहतर है.
दूसरा चरण: डाउनसैंपल की गई क्लास को ज़्यादा अहमियत देना: डाउनसैंपल की गई क्लास में उदाहरण के तौर पर वज़न जोड़ें. 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 मिलियन उदाहरण.