2013-02-13 13 views
16

मैं पाइथन में sklearn के लॉजिस्टिक रिग्रेशन के साथ वर्गीकरण समस्या को हल कर रहा हूं।असंतुलित वर्गों के साथ sklearn लॉजिस्टिक रिग्रेशन

मेरी समस्या एक सामान्य/सामान्य है। मेरे पास दो वर्ग/परिणाम (सकारात्मक/नकारात्मक या 1/0) वाला डेटासेट है, लेकिन सेट अत्यधिक असंतुलित है। ~ 5% सकारात्मक और ~ 9 5% नकारात्मक हैं।

मुझे पता है कि इस तरह की असंतुलित समस्या से निपटने के कई तरीके हैं, लेकिन sklearn पैकेज का उपयोग करके उचित तरीके से कार्यान्वित करने का एक अच्छा स्पष्टीकरण नहीं मिला है।

मैंने अब तक जो किया है वह सकारात्मक परिणाम के साथ प्रविष्टियों का चयन करके और यादृच्छिक रूप से चयनित नकारात्मक प्रविष्टियों की एक समान संख्या का चयन करके एक संतुलित प्रशिक्षण सेट बनाना है। मैं मॉडल को इस सेट में प्रशिक्षित कर सकता हूं, लेकिन मैं मूल असंतुलित जनसंख्या/सेट पर काम करने के लिए मॉडल को संशोधित करने के तरीके से अटक गया हूं।

ऐसा करने के लिए विशिष्ट कदम क्या हैं? मैंने sklearn दस्तावेज और उदाहरणों पर डाला है और एक अच्छा स्पष्टीकरण नहीं मिला है।

उत्तर

16

क्या आपने अपने class_weight="auto" वर्गीकरण को पास करने का प्रयास किया है? Sklearn में सभी वर्गीकरण इस का समर्थन नहीं करते हैं, लेकिन कुछ करते हैं। डॉकस्ट्रिंग की जांच करें।

इसके अलावा आप नकारात्मक उदाहरणों को यादृच्छिक रूप से छोड़कर और/या सकारात्मक उदाहरणों को ओवर-नमूना करके (या संभावित रूप से कुछ मामूली गाऊसी फीचर शोर जोड़कर) अपने डेटासेट को पुनर्व्यवस्थित कर सकते हैं।

+0

हां, class_weight = 'auto' बहुत अच्छा काम करता है। क्या अंतर्निहित/ब्लैक-बॉक्स ऑटो वजन का उपयोग करने के लिए कोई फायदा नहीं है बल्कि प्रशिक्षण सेट को पुनर्व्यवस्थित करने के बजाय (जैसा कि मैंने मूल रूप से किया था)? भले ही, अगर मैंने प्रशिक्षण सेट को संतुलित करने का दृष्टिकोण लिया, तो मैं एक असंतुलित परीक्षण सेट पर लागू करने के लिए फिट/प्रशिक्षित मॉडल को कैसे समायोजित करूं? – agentscully

+7

यह काला बॉक्स नहीं है: यह एल्गोरिदम द्वारा अनुकूलित अनुभवजन्य उद्देश्य समारोह में नमूने को फिर से भारित करता है। अधिक प्रतिनिधित्व वाले वर्गों के तहत नमूना अच्छा है क्योंकि प्रशिक्षण तेजी से है :) लेकिन आप खराब डेटा छोड़ रहे हैं, खासकर यदि आपका मॉडल पहले से ही अधिक उपयुक्त शासन (ट्रेन और परीक्षण स्कोर के बीच महत्वपूर्ण अंतर) में है। ओवर-नमूना आमतौर पर गणितीय रूप से फिर से भारित करने के बराबर होता है लेकिन डुप्लीकेट ऑपरेशंस के कारण धीमा होता है। – ogrisel

0

@agentscully आप निम्नलिखित कागज,

[पीट-पीटकर] (https://www.jair.org/media/953/live-953-2037-jair.pdf) पढ़ी है। मुझे वही जानकारी मिली है। Repo का लिंक यहां दिया गया है। कैसे आप अपने लक्ष्य कक्षाओं में संतुलन के बारे में जाना, या तो आप उपयोग कर सकते हैं पर निर्भर करता है

  • 'ऑटो': या 'संतुलित' या वर्ग अनुपात खुद {निर्दिष्ट (नए संस्करण 0.17 में पदावनत किया गया है) 0: 0.1, 1: 0.9}।
  • 'संतुलित': यह मोड वजन विपरीत वर्ग आवृत्तियों के लिए आनुपातिक समायोजित कर देता है n_samples/(n_classes * np.bincount(y)

मुझे पता है, अगर और अधिक जानकारी की जरूरत है करते हैं।

संबंधित मुद्दे