मैं पाइथन में sklearn के लॉजिस्टिक रिग्रेशन के साथ वर्गीकरण समस्या को हल कर रहा हूं।असंतुलित वर्गों के साथ sklearn लॉजिस्टिक रिग्रेशन
मेरी समस्या एक सामान्य/सामान्य है। मेरे पास दो वर्ग/परिणाम (सकारात्मक/नकारात्मक या 1/0) वाला डेटासेट है, लेकिन सेट अत्यधिक असंतुलित है। ~ 5% सकारात्मक और ~ 9 5% नकारात्मक हैं।
मुझे पता है कि इस तरह की असंतुलित समस्या से निपटने के कई तरीके हैं, लेकिन sklearn पैकेज का उपयोग करके उचित तरीके से कार्यान्वित करने का एक अच्छा स्पष्टीकरण नहीं मिला है।
मैंने अब तक जो किया है वह सकारात्मक परिणाम के साथ प्रविष्टियों का चयन करके और यादृच्छिक रूप से चयनित नकारात्मक प्रविष्टियों की एक समान संख्या का चयन करके एक संतुलित प्रशिक्षण सेट बनाना है। मैं मॉडल को इस सेट में प्रशिक्षित कर सकता हूं, लेकिन मैं मूल असंतुलित जनसंख्या/सेट पर काम करने के लिए मॉडल को संशोधित करने के तरीके से अटक गया हूं।
ऐसा करने के लिए विशिष्ट कदम क्या हैं? मैंने sklearn दस्तावेज और उदाहरणों पर डाला है और एक अच्छा स्पष्टीकरण नहीं मिला है।
हां, class_weight = 'auto' बहुत अच्छा काम करता है। क्या अंतर्निहित/ब्लैक-बॉक्स ऑटो वजन का उपयोग करने के लिए कोई फायदा नहीं है बल्कि प्रशिक्षण सेट को पुनर्व्यवस्थित करने के बजाय (जैसा कि मैंने मूल रूप से किया था)? भले ही, अगर मैंने प्रशिक्षण सेट को संतुलित करने का दृष्टिकोण लिया, तो मैं एक असंतुलित परीक्षण सेट पर लागू करने के लिए फिट/प्रशिक्षित मॉडल को कैसे समायोजित करूं? – agentscully
यह काला बॉक्स नहीं है: यह एल्गोरिदम द्वारा अनुकूलित अनुभवजन्य उद्देश्य समारोह में नमूने को फिर से भारित करता है। अधिक प्रतिनिधित्व वाले वर्गों के तहत नमूना अच्छा है क्योंकि प्रशिक्षण तेजी से है :) लेकिन आप खराब डेटा छोड़ रहे हैं, खासकर यदि आपका मॉडल पहले से ही अधिक उपयुक्त शासन (ट्रेन और परीक्षण स्कोर के बीच महत्वपूर्ण अंतर) में है। ओवर-नमूना आमतौर पर गणितीय रूप से फिर से भारित करने के बराबर होता है लेकिन डुप्लीकेट ऑपरेशंस के कारण धीमा होता है। – ogrisel