असंतुलित वर्ग के साथ, क्या मुझे अपने सत्यापन / परीक्षण डेटासेट पर नमूने के तहत उपयोग करना है?


14

मैं मशीन सीखने की शुरुआत कर रहा हूं और मैं एक स्थिति का सामना कर रहा हूं। IPinYou डेटासेट के साथ मैं रियल टाइम बिडिंग समस्या पर काम कर रहा हूं और मैं एक क्लिक भविष्यवाणी करने की कोशिश कर रहा हूं।

बात यह है कि, जैसा कि आप जानते हैं, डेटासेट बहुत असंतुलित है: 1 सकारात्मक उदाहरण (क्लिक) के लिए लगभग 1300 नकारात्मक उदाहरण (गैर क्लिक)।

मैं यह करता हूं:

  1. डेटा लोड करें
  2. डेटासेट को 3 डेटासेट में विभाजित करें: A = प्रशिक्षण (60%) B = वैध (20%) C = परीक्षण (20%)
  3. प्रत्येक डेटासेट (A, B, C) के लिए, प्रत्येक ऋणात्मक वर्ग पर एक अंडर-सैंपलिंग करें, जिसमें 5 का अनुपात हो (1 सकारात्मक उदाहरण के लिए 5 नकारात्मक उदाहरण)। यह मुझे 3 नए डेटासेट देता है जो अधिक संतुलित हैं: A 'B' C '

फिर मैं अपने मॉडल को डाटासेट A 'और लॉजिस्टिक रिग्रेशन के साथ प्रशिक्षित करता हूं।

मेरा प्रश्न हैं:

  1. सत्यापन के लिए मुझे कौन से डेटासेट का उपयोग करना होगा? B या B '?

  2. परीक्षण के लिए मुझे कौन से डेटासेट का उपयोग करना है? C या C '

  3. मेरे मॉडल का मूल्यांकन करने के लिए कौन से मीट्रिक सबसे अधिक प्रासंगिक हैं? F1Score एक अच्छी तरह से इस्तेमाल किया मीट्रिक है। लेकिन यहां असंतुलित वर्ग (यदि मैं डेटासेट बी और सी का उपयोग करता हूं) के कारण, परिशुद्धता कम है (0.20 से कम) और एफ 1 कोरकोर कम रिकॉल / परिशुद्धता से बहुत प्रभावित होता है। क्या यह aucPR या aucroC का उपयोग करने के लिए अधिक सटीक होगा?

  4. अगर मैं लर्निंग कर्व को प्लॉट करना चाहता हूं, तो मुझे किन मेट्रिक्स का इस्तेमाल करना चाहिए? (यह जानते हुए कि यदि मैं मान्य करने के लिए B 'डेटासेट का उपयोग करता हूं तो% त्रुटि प्रासंगिक नहीं है)

आपके समय के लिए आपका अग्रिम धन्यवाद !

सादर।

जवाबों:


10

शानदार सवाल ... यहां आपके गिने-चुने सवालों के कुछ खास जवाब दिए गए हैं:

1)आपको B नहीं B` पर मान्य क्रॉस करना चाहिए। अन्यथा, आप नहीं जान पाएंगे कि आपकी कक्षा संतुलन कितना अच्छा काम कर रही है। यह B और B दोनों पर मान्य पार करने के लिए चोट नहीं पहुंचा सकता है और नीचे 4 के उत्तर के आधार पर उपयोगी होगा।

2) आपको नीचे 4 पर आधारित C ​​और C` दोनों पर परीक्षण करना चाहिए।

3)मैं एफ 1 के साथ चिपका रहूंगा और आरओसी-एयूसी का उपयोग करना उपयोगी हो सकता है और यह एक अच्छा विवेक जांच प्रदान करता है। दोनों असंतुलित वर्गों के साथ उपयोगी होते हैं।

4)यह वास्तव में मुश्किल हो जाता है। इसके साथ समस्या यह है कि सबसे अच्छी विधि के लिए यह आवश्यक है कि आप पुनर्व्याख्या करें कि लर्निंग कर्व्स को फिर से सैंपल और ऑरिजनल डेटा सेट्स दोनों की तरह दिखना चाहिए या उसका उपयोग करना चाहिए।

सीखने की घटता की क्लासिक व्याख्या है:

  • ओवरफिट - लाइनें एक साथ नहीं आती हैं;
  • अंडरफिट - लाइनें एक साथ आती हैं लेकिन बहुत कम एफ 1 स्कोर;
  • जस्ट राइट - लाइन्स एक उचित एफ 1 स्कोर के साथ आते हैं।

अब, यदि आप A` पर प्रशिक्षण ले रहे हैं और C पर परीक्षण कर रहे हैं, तो लाइनें कभी भी पूरी तरह से एक साथ नहीं आएंगी। यदि आप A` पर प्रशिक्षण ले रहे हैं और C` पर परीक्षण कर रहे हैं तो परिणाम मूल समस्या के संदर्भ में सार्थक नहीं होंगे। तो तुम क्या करते हो?

इसका उत्तर ए `पर ट्रेन करना है और बी` पर परीक्षण करना है, लेकिन बी पर भी परीक्षण करें। बी के लिए एफ 1 स्कोर प्राप्त करें जहां आप इसे होना चाहते हैं, फिर बी के लिए एफ 1 स्कोर की जांच करें। फिर अपना परीक्षण करें और सीखने की अवस्था उत्पन्न करें। सी। के लिए घटता कभी एक साथ नहीं आएगा, लेकिन आपके पास स्वीकार्य पूर्वाग्रह की भावना होगी ... इसकी F1 (B) और F1 (B`) के बीच अंतर।

अब, आपके सीखने की वक्र की नई व्याख्या है:

  • ओवरफिट - लाइनें एक साथ नहीं आती हैं और F1 (B`) -F1 (B) के अलावा दूर होती हैं;
  • अंडरफिट - लाइनें एक साथ नहीं आती हैं, लेकिन अंतर F1 (B`) -F1 (B) से कम है और F1 (C) स्कोर F1 (B) के तहत है;
  • बस सही - पंक्तियाँ एक साथ नहीं आती हैं, लेकिन अंतर F1 (B`) -F1 (B) से कम है, F1 (B) के समान F1 (C) स्कोर के साथ है।

सामान्य : मैं स्पष्ट रूप से सुझाव देता हूं कि असंतुलित कक्षाओं के लिए आप सबसे पहले अपने क्लास के वज़न को अपने सीखने के एल्गोरिथ्म में समायोजित करने का प्रयास करें, बजाय इसके कि ओवर-सैंपलिंग करें क्योंकि यह उन सभी कठोर नैतिकताओं से बचता है जिन्हें हमने ऊपर उल्लिखित किया है। पुस्तकालयों में इसकी बहुत आसान है जैसे कि scikit-learn और किसी भी सिग्मॉइड फ़ंक्शन या बहुसंख्यक वोट का उपयोग करने वाले कोड में हाथ लगाना बहुत आसान है।

उम्मीद है की यह मदद करेगा!


बहुत बहुत धन्यवाद @ AN605। आप कितने अच्छे हैं ! मेरे पास कुछ quesitons हैं: 4 के लिए) - जब आप "A पर प्रशिक्षित करने के लिए" और B 'पर परीक्षण करने के लिए कहते हैं, तो क्या आपका मतलब वैध है? - "C और &" F1 (C) स्कोर के लिए लर्निंग कर्व्स उत्पन्न होता है / एफ (बी) के समान "। हालांकि, मुझे सीखने की अवस्था के लिए, हमें प्रशिक्षण सेट (ए या ए 'यहाँ) के लिए त्रुटि मीट्रिक और केवल सेट (बी या बी') के लिए त्रुटि मीट्रिक की साजिश रचनी थी। क्या आप यहाँ C पर "मान्य" नहीं हैं?
jmvllt

"क्लास वेट" का उपयोग करने के बारे में, मुझे गलत होने पर सही करें (मुझे इसके बारे में त्वरित रूप से पता था) लेकिन, इस चाल में एक गुणांक / वजन "k" जोड़कर लागत फ़ंक्शन को "संशोधित" करना शामिल है। असंतुलित वर्ग, है ना? : = लागत (h (x), y) = -y * k * लॉग (h (x)) - (1-y) * log ((h (x)) उस तरह, एल्गोरिथ्म को एक गलतफहमी समझना चाहिए सकारात्मक वर्ग जितना अधिक महत्वपूर्ण है। लेकिन बात यह है कि मुझे अपने सभी मॉडल बनाने के लिए अपाचे स्पार्क और एमएललिब का उपयोग करना होगा। और मुझे यकीन नहीं है कि मैं अपनी लागत फ़ंक्शन को आसानी से स्पार्क के साथ संशोधित कर सकता हूं। वैसे भी आपके लिए धन्यवाद। समय!
jmvllt

5

के लिए 1)और 2), आप करना चाहते हैं

1) choose a model that performs well on data distributed as you 
   expect the real data will be 
2) evaluate the model on data distributed the same way

तो उन डेटासेट के लिए, आपको कक्षाओं को संतुलित करने की आवश्यकता नहीं होनी चाहिए।

आप अंडर / ओवरसम्पलिंग के बजाय क्लास वेट का उपयोग करने का भी प्रयास कर सकते हैं, क्योंकि यह आपके लिए इस निर्णय का ध्यान रखता है।

के लिए 3)आप की संभावना का उपयोग कर जो भी मीट्रिक पर ही स्कोर किया जाएगा (अगर यह एक प्रतियोगिता है) का अनुकूलन करना चाहते हैं। लेकिन अगर यह एक विचार नहीं है, तो वे सभी मॉडल ठीक विकल्प हैं। एफ 1 कम परिशुद्धता से प्रभावित हो सकता है, लेकिन आप चाहते हैं कि कब्जा कर लिया जाए। यह ठीक है जब भोली मॉडल (जैसे बहुमत वर्ग का अनुमान लगाना) कुछ मैट्रिक्स द्वारा अच्छा स्कोर कर सकते हैं जो कि एफ 1 जैसे स्कोर प्रासंगिक हैं।

जैसा कि 4)आप जिस पर भी मेट्रिक करते हैं , उसके बारे में कुछ भी गलत नहीं है।


हाय @jamesmf, उस शांत जवाब के लिए धन्यवाद। F1Score के लिए, मेरे पास जो समस्या थी वह यह है कि मैं फाल्स पॉजिटिव से ज्यादा फाल्स पॉजिटिव को खत्म करने पर ध्यान देना चाहूंगा। क्या सटीक और रिकॉल की गणना में एफपी और एफएन के लिए अलग "वेट" जोड़ना सही होगा?
jmvllt

मेरे लिए उसका मतलब बनता है। इसके अलावा आपके वर्ग वेटिंग का विवरण सही है, और मैं इसे MLB में लागू नहीं देखता, लेकिन यह एक फ़ीचर रिक्वेस्ट के लायक हो सकता है
jamesmf

ठीक है धन्यवाद जेम्स! मैं वर्तमान में लॉजिस्टिकग्रैडिएंट क्लास का विस्तार करके और गणना पद्धति को अधिलेखित करके इसे स्वयं करने की कोशिश कर रहा हूं। मैं आपको बता दूंगा कि इससे मुझे अच्छे परिणाम मिलेंगे। आपका दिन शुभ हो।
jmvllt 15

2

आपको एक डेटासेट पर अपने वर्गीकरण का परीक्षण करना चाहिए जो यह दर्शाता है कि इसका उपयोग क्यों किया जाएगा। सबसे अच्छा आमतौर पर unmodified वितरण है।

सीखने के दौरान, वैसे भी डेटासेट को संशोधित करें जो आपकी मदद करता है।

विवरण के लिए, क्या मुझे 'संतुलित' डेटासेट या 'प्रतिनिधि' डेटासेट के लिए जाना चाहिए?

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