मेरे पास निम्नलिखित विशिष्टताओं वाला डेटासेट है:
- 2,321 सकारात्मक के साथ 193,176 नमूनों के साथ प्रशिक्षण डाटासेट
- 673 सकारात्मक के साथ 82,887 नमूनों के साथ टेस्ट डेटासैट
- 10 विशेषताएं हैं।
मैं एक द्विआधारी वर्गीकरण (0 या 1) करना चाहता हूं। मैं जिस मुद्दे का सामना कर रहा हूं वह यह है कि डेटा बहुत असंतुलित है। कुछ फीचर इंजीनियरिंग के साथ डेटा को सामान्य करने और स्केल करने के बाद और कुछ अलग एल्गोरिदम का उपयोग करके, ये मेरे द्वारा प्राप्त किए जा सकने वाले सर्वोत्तम परिणाम हैं:
mean square error : 0.00804710026904
Confusion matrix : [[82214 667]
[ 0 6]]
यानी केवल 6 सही सकारात्मक हिट। यह लॉजिस्टिक रिग्रेशन का उपयोग कर रहा है। यहाँ विभिन्न चीजें हैं जो मैंने इसके साथ आजमाई हैं:
- रैंडमफॉरस्ट, डिसिजनट्री, एसवीएम जैसे विभिन्न एल्गोरिदम
- फ़ंक्शन को कॉल करने के लिए पैरामीटर मान बदलना
- यौगिक विशेषताओं को शामिल करने के लिए कुछ अंतर्ज्ञान आधारित फीचर इंजीनियरिंग
अब, मेरे प्रश्न हैं:
- सकारात्मक हिट की संख्या में सुधार करने के लिए मैं क्या कर सकता हूं?
- ऐसे मामले में ओवरफिट होने पर कोई कैसे निर्धारित कर सकता है? (मैंने साजिश रचने आदि की कोशिश की है)
- किस बिंदु पर कोई निष्कर्ष निकाल सकता है कि शायद यह सबसे अच्छा संभव फिट है जो मैं कर सकता था? (जो 673 में से केवल 6 हिट को देखते हुए दुखी लगता है)
- क्या कोई ऐसा तरीका है जिससे मैं सकारात्मक नमूना उदाहरण बना सकता हूं ताकि पैटर्न की पहचान में सुधार हो और अधिक हिट हो सके?
- कौन से चित्रमय भूखंड आउटलेर्स या कुछ अंतर्ज्ञान का पता लगाने में मदद कर सकते हैं कि कौन सा पैटर्न सबसे अच्छा होगा?
मैं पायथन के साथ स्किटिट-लर्न लाइब्रेरी का उपयोग कर रहा हूं और सभी कार्यान्वयन लाइब्रेरी फ़ंक्शन हैं।
संपादित करें:
यहां कुछ अन्य एल्गोरिदम के परिणाम दिए गए हैं:
रैंडम फ़ॉरेस्ट क्लासिफ़ायर (n_estimators = 100)
[[82211 667]
[ 3 6]]
निर्णय के पेड़:
[[78611 635]
[ 3603 38]]