2013-02-25 35 views
20

मैं कुछ मशीन-लर्निंग ऑपरेशंस करने के लिए अपने पायथन कार्यक्रम में विज्ञान-सीखने का उपयोग कर रहा हूं। समस्या यह है कि मेरे डेटा सेट में असंतुलन के मुद्दे गंभीर हैं।विज्ञान में असंतुलन सीखें

क्या कोई भी विज्ञान-सीखने या सामान्य रूप से पाइथन में असंतुलन के समाधान से परिचित है? जावा में SMOTE mechanizm है। क्या अजगर में कुछ समानांतर है?

+1

आप डेटासेट को संतुलित करने के लिए oversampling/undersampling को आजमा सकते हैं। बेशक यह एक सामान्य मशीन सीखने की विधि है और पायथन और विज्ञान-सीखने के लिए विशिष्ट नहीं है। वास्तव में, यह प्रश्न यहां विषय से दूर हो सकता है। शायद यह आंकड़ों पर एक बेहतर फिट है। उनके पास एक [असंतुलित-वर्ग टैग] भी है (http://stats.stackexchange.com/questions/tagged/unbalanced-classes)। – Junuxx

+0

मुझे पता है कि विषय पुराना है लेकिन मैं सिर्फ सलाह का एक टुकड़ा जोड़ रहा हूं। असंतुलित डेटासेट के लिए, oversampling/undersampling के अलावा और class_weight पैरामीटर का उपयोग करके, आप अपने मामलों को वर्गीकृत करने के लिए थ्रेसहोल्ड भी कम कर सकते हैं। भविष्यवाणी की संभावनाएं (कक्षाओं के बजाए) और 0.5 से कम थ्रेसहोल्ड का उपयोग करने का प्रयास करें। बेशक, यह क्लासिफायर के प्रदर्शन में वृद्धि नहीं करेगा, यह केवल परिशुद्धता और याद के बीच एक व्यापार-बंद है। – Stergios

+0

स्टेरजिओस, आप सीमा को कैसे समायोजित कर सकते हैं? पाइथन कोड का कोई संदर्भ जो करता है? – KubiK888

उत्तर

4

SMOTE विज्ञान-सीखने में एक अंतर्निहित नहीं है, लेकिन फिर भी कार्यान्वयन ऑनलाइन उपलब्ध हैं। उदाहरण के लिए
Here

+1

बस कोड को देखने से, इसमें 'TODO' है। क्या यह कार्यान्वयन सही है? – inspectorG4dget

+1

कोड सही है, मैंने अभी परीक्षण किया है। 'TODO' एक विशेष मामला है और इस तरह कुछ याद करता है:' टी = टी [np.random.choice (रेंज (लेन (टी)), एन)] '। लेकिन लाइन 'एन = 100' रखें! –

24

विज्ञान में सीखें कुछ असंतुलन सुधार तकनीकें हैं, जो कि आप सीख रहे एल्गोरिदम के अनुसार भिन्न होते हैं।

उनमें से कुछ Svm या logistic regression की तरह, class_weight पैरामीटर है। यदि आप 'ऑटो' पर सेट इस पैरामीटर के साथ एक एसवीसी को तुरंत चालू करते हैं, तो यह प्रत्येक आवृत्ति के अनुपात को आनुपातिक रूप से इसके आवृत्ति के विपरीत वजन देगा।

दुर्भाग्य से, इस उद्देश्य के साथ एक प्रीप्रोसेसर उपकरण नहीं है।

+0

मैंने अपने बेहद असंतुलित डेटा में वर्ग वजन = 'ऑटो' का उपयोग करने का प्रयास किया है, लेकिन मुझे प्रदर्शन में बहुत अंतर नहीं दिख रहा है, क्या यह सामान्य है? – KubiK888

+0

@ KubiK888 क्या आप एक ही एक्स का उपयोग करके परीक्षण और सत्यापन कर रहे हैं? आप किस माप का उपयोग कर रहे हैं? –

+0

नहीं, परीक्षण और प्रशिक्षण सेट पूरी तरह से अलग हो गए हैं। – KubiK888

14

मैंने पाया एक अन्य पुस्तकालय यहाँ जो अवर और भी कई पीट-पीटकर कार्यान्वयन सहित कई oversampling तकनीकें लागू और एक अन्य जो SVM उपयोग करता है:

https://github.com/fmfn/UnbalancedDataset

51

एक नया एक यहाँ

https://github.com/scikit-learn-contrib/imbalanced-learn

नहीं है

इसमें निम्नलिखित श्रेणियों में कई एल्गोरिदम शामिल हैं, जिनमें SMOTE

शामिल है
  • बहुमत वर्ग (एसएस) के तहत नमूनाकरण।
  • अल्पसंख्यक वर्ग को ओवर-नमूनाकरण।
  • ओवर-एंड-नमूनाकरण का मिश्रण।
  • समेकित संतुलित सेट बनाएं।
+3

अब यह सही उत्तर आईएमओ होना चाहिए – ChucK