सुपरवाइज्ड मशीन लर्निंग में क्लास असंतुलन


47

यह सामान्य रूप से एक प्रश्न है, किसी विधि या डेटा सेट के लिए विशिष्ट नहीं है। हम सुपरवाइज्ड मशीन लर्निंग में एक वर्ग असंतुलन की समस्या से कैसे निपटते हैं, जहां 0 की संख्या 90% के आसपास है और 1 की संख्या आपके डेटासेट में लगभग 10% है। क्या हम बेहतर रूप से क्लासिफायर ट्रेन करते हैं।

मेरे द्वारा अनुसरण किए जाने वाले तरीकों में से एक डेटासेट को संतुलित करने के लिए नमूना है और फिर क्लासिफायरियर को प्रशिक्षित करके कई नमूनों के लिए इसे दोहराएं।

मुझे लगता है कि यह यादृच्छिक है, क्या इस तरह की समस्याओं से निपटने के लिए कोई रूपरेखा है।

जवाबों:


45

कई चौखटे और दृष्टिकोण हैं। यह एक आवर्तक मुद्दा है।

उदाहरण:

  • अधोमुख करना । शून्य के सेट का एक ऐसा चयन चुनें कि यह आकार वाले लोगों के सेट से मेल खाता हो। जानकारी का एक स्पष्ट नुकसान है, जब तक कि आप अधिक जटिल ढांचे का उपयोग नहीं करते हैं (उदाहरण के लिए, मैं पहले सेट को 9 छोटे, पारस्परिक रूप से अनन्य सबसेट पर विभाजित करता हूं, उनमें से प्रत्येक पर एक मॉडल को प्रशिक्षित करता हूं और मॉडल को इकट्ठा करता हूं)।
  • ओवरस्पीडिंग । 50% / 50% अनुपात तक कृत्रिम लोगों का उत्पादन करें। मेरे पिछले नियोक्ता ने इसे डिफ़ॉल्ट रूप से उपयोग किया था। इसके लिए कई चौखटे हैं (मुझे लगता है कि एसएमओटीई सबसे लोकप्रिय है, लेकिन मैं शोर पीसीए जैसी सरल चालें पसंद करता हूं )।
  • वन क्लास लर्निंग । बस मान लें कि आपके डेटा में कुछ वास्तविक बिंदु (हैं) और बहुत सारे यादृच्छिक शोर हैं जो भौतिक रूप से डेटासेट में लीक नहीं होते हैं (कुछ भी जो शोर नहीं है)। वर्गीकरण एल्गोरिथम के बजाय डेटा को दर्शाने के लिए एक एल्गोरिथ्म का उपयोग करें।
  • लागत-संवेदनशील प्रशिक्षण । प्रशिक्षण प्रक्रिया को कृत्रिम रूप से संतुलित करने के लिए एक असममित लागत फ़ंक्शन का उपयोग करें।

कुछ जटिलताएं, तकनीकी जटिलता के बढ़ते क्रम में विवरणों का स्तर:

ओह, और वैसे, 90% / 10% असंतुलित नहीं है। कार्ड लेनदेन धोखाधड़ी डेटासेट अक्सर 99.97% / 0.03% विभाजित होते हैं। यह असंतुलित है।


बस इस बात पर ध्यान दिया जाता है कि मेरे द्वारा बताए गए Noisy PCA को कार्यान्वयन विवरणों के आधार पर ओवरसम्पलिंग, नियमितीकरण या घबराना के रूप में देखा जा सकता है।
लुकास गैलिंडो

संसाधनों के लिए धन्यवाद लुकास। बहुत मदद करता है। मेरे पास एक अजीब समस्या है जहां मेरे सभी नमूनों को '1' के रूप में लेबल किया गया है। हालाँकि वास्तव में इन नमूनों में एक न्यूनतम अशुद्धता है, अर्थात कुछ रिकॉर्ड हैं जिन्हें वास्तव में '0' माना जाता है लेकिन इन्हें '1' के रूप में लेबल किया जाता है। मेरा मानना ​​है कि इस तरह की समस्या एक वर्ग वर्गीकरण की है। क्या मेरी समझ सही है। क्या उनकी पहचान करने के लिए इस्तेमाल किया जाने वाला एक सामान्य ढांचा है, शुरू में मैं क्लस्टरिंग की कोशिश कर रहा था लेकिन वह काम नहीं कर रहा है।
NG_21

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

13

यह बहुत हद तक सीखने की विधि पर निर्भर करता है। अधिकांश सामान्य उद्देश्य दृष्टिकोणों से निपटने के लिए एक (या कई) तरीके हैं। एक सामान्य फिक्स अल्पसंख्यक वर्ग पर एक उच्च गर्भपात की सजा देना है, जिससे क्लासिफायर उन्हें (SVM, लॉजिस्टिक रिग्रेशन, न्यूरल नेटवर्क, ...) पहचान सके।

नमूना बदलना भी एक संभावना है जैसा कि आप उल्लेख करते हैं। इस मामले में, बहुसंख्यक वर्ग को रेखांकित करने की तुलना में अल्पसंख्यक वर्ग की निगरानी करना आमतौर पर एक बेहतर उपाय है।

यादृच्छिक जंगलों की तरह कुछ तरीकों, किसी भी संशोधन की जरूरत नहीं है।


धन्यवाद। क्या आप किसी ऐसे संसाधन की ओर संकेत कर सकते हैं जहाँ इसे कुछ उदाहरणों के साथ समझाया गया है। वहाँ खरोंच से एल्गोरिथ्म कोडिंग का सहारा लेने के बिना आर / पायथन में इसे प्राप्त करने का एक तरीका है।
NG_21

1
इस R पैकेज पर पहले फ़ंक्शन की जाँच करें: cran.r-project.org/web/packages/unbalanced/unbalanced.pdf
लुकास गैलिंडो

7
रैंडम वन को किसी संशोधन की आवश्यकता क्यों नहीं है? मुझे लगता है कि आप अभी भी
मैक

4

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

एक बात यह है कि वर्गीकरण चरण पर गर्भपात का दंड इस्तेमाल किया जा सकता है और यदि कोई हो तो पैरामीटर आकलन चरण में नहीं। कुछ तरीकों में पैरामीटर की अवधारणा नहीं होती है, वे सिर्फ एकमुश्त वर्ग लेबल या वर्ग संभाव्यता पैदा करते हैं।

जब आपके पास संभाव्य आकलनकर्ता होता है तो आप सूचना सिद्धांत के आधार पर या व्यावसायिक मूल्य के संयोजन के आधार पर वर्गीकरण निर्णय ले सकते हैं।


1

दो ट्रिक जोड़ें: 1. सीडीएफ का उपयोग करें, अपने प्रशिक्षण डेटा में आवृत्ति की गणना करें या बहुत बड़ी मान्यता का उपयोग करें (यदि आपका टेस्ट सेट नहीं बदलेगा, लेकिन सत्यापन सेट का प्रशिक्षण सेट के साथ समान वितरण होना चाहिए), तो अपनी भविष्यवाणी को छाँटें, और प्राप्त करें पहले X% (एक वर्ग के लिए आपकी पहले की आवृत्ति को गिनें) और बाकी अन्य / 2 हैं। 2. भारित नमूना, मॉडल को भारित नमूना वर्ग में ले जाया जाएगा, आप नमूना विचरण वी का उपयोग कर सकते हैं। जैसे। वेटी = 1/2 (1- (vmax - vi) / vmax)

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