असंतुलित डेटा के लिए बाइनरी वर्गीकरण मॉडल


14

मेरे पास निम्नलिखित विशिष्टताओं वाला डेटासेट है:

  • 2,321 सकारात्मक के साथ 193,176 नमूनों के साथ प्रशिक्षण डाटासेट
  • 673 सकारात्मक के साथ 82,887 नमूनों के साथ टेस्ट डेटासैट
  • 10 विशेषताएं हैं।

मैं एक द्विआधारी वर्गीकरण (0 या 1) करना चाहता हूं। मैं जिस मुद्दे का सामना कर रहा हूं वह यह है कि डेटा बहुत असंतुलित है। कुछ फीचर इंजीनियरिंग के साथ डेटा को सामान्य करने और स्केल करने के बाद और कुछ अलग एल्गोरिदम का उपयोग करके, ये मेरे द्वारा प्राप्त किए जा सकने वाले सर्वोत्तम परिणाम हैं:

mean square error : 0.00804710026904
Confusion matrix : [[82214   667]
                   [    0     6]]

यानी केवल 6 सही सकारात्मक हिट। यह लॉजिस्टिक रिग्रेशन का उपयोग कर रहा है। यहाँ विभिन्न चीजें हैं जो मैंने इसके साथ आजमाई हैं:

  • रैंडमफॉरस्ट, डिसिजनट्री, एसवीएम जैसे विभिन्न एल्गोरिदम
  • फ़ंक्शन को कॉल करने के लिए पैरामीटर मान बदलना
  • यौगिक विशेषताओं को शामिल करने के लिए कुछ अंतर्ज्ञान आधारित फीचर इंजीनियरिंग

अब, मेरे प्रश्न हैं:

  1. सकारात्मक हिट की संख्या में सुधार करने के लिए मैं क्या कर सकता हूं?
  2. ऐसे मामले में ओवरफिट होने पर कोई कैसे निर्धारित कर सकता है? (मैंने साजिश रचने आदि की कोशिश की है)
  3. किस बिंदु पर कोई निष्कर्ष निकाल सकता है कि शायद यह सबसे अच्छा संभव फिट है जो मैं कर सकता था? (जो 673 में से केवल 6 हिट को देखते हुए दुखी लगता है)
  4. क्या कोई ऐसा तरीका है जिससे मैं सकारात्मक नमूना उदाहरण बना सकता हूं ताकि पैटर्न की पहचान में सुधार हो और अधिक हिट हो सके?
  5. कौन से चित्रमय भूखंड आउटलेर्स या कुछ अंतर्ज्ञान का पता लगाने में मदद कर सकते हैं कि कौन सा पैटर्न सबसे अच्छा होगा?

मैं पायथन के साथ स्किटिट-लर्न लाइब्रेरी का उपयोग कर रहा हूं और सभी कार्यान्वयन लाइब्रेरी फ़ंक्शन हैं।

संपादित करें:

यहां कुछ अन्य एल्गोरिदम के परिणाम दिए गए हैं:

रैंडम फ़ॉरेस्ट क्लासिफ़ायर (n_estimators = 100)

[[82211   667]
[    3     6]]

निर्णय के पेड़:

[[78611   635]
[ 3603    38]]

जवाबों:


11
  1. चूंकि आप द्विआधारी वर्गीकरण कर रहे हैं, क्या आपने वर्गीकरण सीमा को समायोजित करने की कोशिश की है? चूंकि आपका एल्गोरिथ्म असंवेदनशील लगता है, इसलिए मैं इसे कम करने की कोशिश करूंगा और जांच करूंगा कि क्या कोई सुधार हुआ है।

  2. आप हमेशा यह सीख सकते हैं कि लर्निंग कर्व्स , या एक मॉडल पैरामीटर बनाम प्रशिक्षण और सत्यापन त्रुटि का एक प्लॉट यह निर्धारित करने के लिए कि आपका मॉडल ओवरफिटिंग है। ऐसा लगता है कि यह आपके मामले में उपयुक्त है, लेकिन यह सिर्फ अंतर्ज्ञान है।

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

  4. विषय पर एक विशेषज्ञ होने का दावा किए बिना, कई अलग-अलग तकनीकें हो सकती हैं, जिनका आप अनुसरण कर सकते हैं (संकेत: Google पर पहला लिंक ), लेकिन मेरी राय में आपको पहले यह सुनिश्चित करना चाहिए कि आप अपने लागत फ़ंक्शन का चयन सावधानी से करें, ताकि यह प्रतिनिधित्व करे आप वास्तव में देख रहे हैं।

  5. यकीन नहीं है कि पैटर्न अंतर्ज्ञान से आपका क्या मतलब है, क्या आप विस्तृत कर सकते हैं?

वैसे, आपके द्वारा आजमाए गए अलग-अलग एल्गोरिदम के साथ आपके परिणाम क्या थे? क्या वे कोई अलग थे?


1
लॉजिस्टिक रिग्रेशन के लिए दहलीज को एडजस्ट करने का काम किया। सूत्रों की सूची के लिए धन्यवाद।
तेजस्वी

क्या कोई कोड स्निपेट पेस्ट कर सकता है कि आप लॉजिस्टिक रिग्रेशन दहलीज को कैसे समायोजित करते हैं?
ब्लेंज

0

चूंकि डेटा बहुत तिरछा होता है, ऐसे में हम ओवर-सैंपलिंग डेटा के बाद मॉडल ट्रेनिंग की भी कोशिश कर सकते हैं।

SMOTE और ADASYN कुछ ऐसी तकनीकें हैं जिनका उपयोग करके हम डेटा को ओवर-सैंपल कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.