असंतुलित डेटा के खिलाफ निर्णय वृक्ष का प्रशिक्षण


43

मैं डेटा माइनिंग के लिए नया हूं और मैं एक डेटा सेट के खिलाफ एक निर्णय पेड़ को प्रशिक्षित करने की कोशिश कर रहा हूं जो अत्यधिक असंतुलित है। हालाँकि, मुझे खराब भविष्यवाणियाँ सटीकता के साथ समस्या हो रही हैं।

डेटा में पाठ्यक्रम का अध्ययन करने वाले छात्र होते हैं, और कक्षा चर पाठ्यक्रम की स्थिति है जिसके दो मूल्य हैं - विदड्रॉ या चालू।

  • आयु
  • जातीयता
  • लिंग
  • कोर्स
    ...
  • कोर्स की स्थिति

डेटा सेट में कई और उदाहरण हैं जो कि विदड्रॉ के मुकाबले करंट हैं। निकाले गए इंस्टेंस केवल कुल इंस्टेंस के 2% के लिए लेखांकन।

मैं एक मॉडल का निर्माण करने में सक्षम होना चाहता हूं जो इस संभावना की भविष्यवाणी कर सकता है कि एक व्यक्ति भविष्य में वापस ले लेगा। हालांकि जब प्रशिक्षण डेटा के खिलाफ मॉडल का परीक्षण करते हैं, तो मॉडल की सटीकता भयानक होती है।

मेरे पास निर्णय पेड़ों के साथ समान मुद्दे हैं जहां डेटा एक या दो वर्गों का प्रभुत्व है।

इस समस्या को हल करने और अधिक सटीक क्लासिफ़ायर बनाने के लिए मैं किस दृष्टिकोण का उपयोग कर सकता हूं?


4
एक बात पर विचार करना विभिन्न प्रकार के गलत वर्गीकरण के लिए दंड की शर्तों को बदल रहा है। आप यह नहीं कहते कि आप किस सॉफ्टवेयर का उपयोग कर रहे हैं, लेकिन मेरा मानना ​​है कि सभी अच्छे ट्री सॉफ्टवेयर में ऐसा करने के तरीके शामिल होने चाहिए।
पीटर Flom - को पुनः स्थापित मोनिका

यह एक पाठ्यपुस्तक का उदाहरण है कि सटीकता वर्गीकरण मॉडल का आकलन करने के लिए सबसे अच्छा उपाय क्यों नहीं है? संभाव्य भविष्यवाणियों का उपयोग करें और उचित स्कोरिंग नियमों का उपयोग करके इनका आकलन करें , सटीकता नहीं , और आपकी समस्याएं दूर हो जाएंगी।
एस। कोलासा - मोनिका

जवाबों:


61

यह वर्गीकरण में एक दिलचस्प और बहुत लगातार समस्या है - न केवल निर्णय पेड़ों में बल्कि लगभग सभी वर्गीकरण एल्गोरिदम में।

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

यह एक महत्वपूर्ण मुद्दा है, क्योंकि एक असंतुलित डेटासेट बढ़े हुए प्रदर्शन का अनुमान लगा सकता है। यह बदले में उस महत्व के बारे में गलत निष्कर्ष दे सकता है जिसके साथ एल्गोरिथ्म ने मौका से बेहतर प्रदर्शन किया है।

इस विषय पर मशीन-लर्निंग साहित्य ने अनिवार्य रूप से तीन समाधान रणनीतियों को विकसित किया है।

  1. आप द्वारा प्रशिक्षण सेट पर संतुलन बहाल कर सकते हैं undersampling बड़ा वर्ग या द्वारा oversampling छोटे वर्ग, पहली जगह में उत्पन्न होने वाली से पूर्वाग्रह को रोकने के लिए।

  2. वैकल्पिक रूप से, आप गर्भपात की लागत को संशोधित कर सकते हैं, जैसा कि पिछली प्रतिक्रिया में, पूर्वाग्रह को रोकने के लिए फिर से नोट किया गया है।

  3. एक अतिरिक्त सुरक्षा को तथाकथित संतुलित सटीकता द्वारा सटीकता को बदलना है । इसे वर्ग-विशिष्ट सटीकता के अंकगणितीय माध्य के रूप में परिभाषित किया गया है, जहां और क्रमशः सकारात्मक और नकारात्मक उदाहरणों पर प्राप्त सटीकता का प्रतिनिधित्व करते हैं। यदि क्लासिफायर किसी भी वर्ग पर समान रूप से अच्छा प्रदर्शन करता है, तो यह शब्द पारंपरिक सटीकता (यानी, सही भविष्यवाणियों की संख्या को कुल भविष्यवाणियों की संख्या से विभाजित करता है) तक कम कर देता है। इसके विपरीत, यदि पारंपरिक सटीकता केवल संयोग से ऊपर है, क्योंकि क्लासिफायर एक असंतुलित परीक्षण सेट का लाभ उठाता है, तो संतुलित सटीकता, उपयुक्त के रूप में, मौका छोड़ देगा (नीचे स्केच देखें)।π+π-ϕ:=12(π++π),π+π

सटीकता बनाम संतुलित सटीकता

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

यदि आप इस पर अनुवर्ती कार्रवाई करना चाहते हैं तो मुझे साहित्य के कुछ अतिरिक्त संदर्भों को पोस्ट करने में खुशी होगी।


3
ब्रोडर - विस्तृत जानकारी के लिए धन्यवाद। यह वास्तव में मददगार रहा है! मैंने शुरू में SQL सर्वर में डेटा माइनिंग फ़ंक्शनलिटी का उपयोग करने की कोशिश की थी, हालाँकि, आपकी सलाह के बाद मैंने R का उपयोग करने के लिए स्विच किया। मैंने डेटा सेट को रीबैलेंस करने के लिए SMOTE एल्गोरिथम का उपयोग किया और निर्णय पेड़ों और SVM दोनों का उपयोग करने की कोशिश की। डीटीएस 81% की संतुलित सटीकता देता है, और एसवीएम के साथ भी बेहतर है। हालांकि एक सवाल है - क्या मुझे मॉडल को एक डेटा सेट के खिलाफ परीक्षण करना चाहिए जिसमें रिबेल्ड डेटा भी है? या इसे मूल जैसे डेटा के खिलाफ परीक्षण किया जाना चाहिए?
१०'१२

2
यह सुनकर बहुत अच्छा लगा। अपने प्रश्न के बारे में: आप अपने परीक्षण डेटा को संतुलित नहीं करना चाहते हैं। यह आपके प्रदर्शन मूल्यांकन का पूर्वाग्रह करेगा, क्योंकि आप कुछ उदाहरणों का दो बार (ओवरसैंपलिंग के मामले में) परीक्षण करेंगे या परीक्षण (अंडरस्मीपिंग के मामले में) से कुछ उदाहरणों को छोड़ देंगे। सारांश में, आप अपने प्रशिक्षण सेट (प्रत्येक क्रॉस-वैलिडेशन फोल्ड के भीतर अलग से) को संतुलित करना चाहते हैं, लेकिन फिर अनमॉडिफाइड (संभावित असंतुलित) परीक्षण डेटा पर परीक्षण करें।
केय ब्रोडर्सन

धन्यवाद ब्रदर। ऐसा करना चीजों पर एक अलग तस्वीर डालता है। संतुलित सटीकता लगभग 56% हो जाती है। संवेदनशीलता मेरे सबसे अच्छे मॉडल पर 17% तक गिर जाती है (वर्ग के अनुरूप मुझे बेहतर पूर्वानुमान प्राप्त करने की आवश्यकता है)। मुझे लगता है कि यह समझ में आता है क्योंकि ओवरसम्प्लड क्लास वह वर्ग है इसलिए उन उदाहरणों को कई बार गिना जाएगा। मैं यह देखने के लिए प्रशिक्षण डेटा सेट के संतुलन को बढ़ाने की कोशिश करूँगा कि क्या इससे कोई फर्क पड़ता है।
chrisb

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

2
@chrisb, यह थोड़ी (!) देर से टिप्पणी है। एक स्पर्शरेखा पर, आप अपने छात्रों के अस्तित्व को मॉडल बनाने के लिए कॉक्स आनुपातिक जोखिम प्रतिगमन ( cran.r-project.org/doc/contrib/Fox-Companion/… ) की कोशिश कर सकते हैं । आपको नीचे या अधिक-नमूनाकरण की आवश्यकता नहीं हो सकती है।
ज़ुर्बर्ब

8

निम्नलिखित चार विचार आपको इस समस्या से निपटने में मदद कर सकते हैं।

  1. क्रॉस-वैलिडेशन डेटासेट पर संतोषजनक परिणाम प्राप्त करने और एक बार संतुष्ट होने के बाद, परीक्षण मॉडल पर अपने मॉडल का परीक्षण करें - एक उचित प्रदर्शन माप का चयन करें और फिर अपने मॉडल के हाइपरपैरमीटर को नियमित रूप से ट्यून करें। इन उद्देश्यों के लिए, अपने डेटा के 15% को क्रॉस सत्यापन के लिए और अंतिम परीक्षण के लिए उपयोग किए जाने वाले 15% पर सेट करें। एंड्रयूज एनजी द्वारा वकालत मशीन लर्निंग में एक स्थापित उपाय है, एफ आँकड़े रूप में परिभाषित किया गया है । क्रॉस-वैलिडेशन डेटासेट पर इस आंकड़े को अधिकतम करने की कोशिश करें और सुनिश्चित करें कि प्रदर्शन परीक्षण डेटासेट पर भी स्थिर है।2PrecisionRecallPrecision+Recall

  2. डेटासेट में कक्षाओं की पूर्व आवृत्ति के एल्गोरिथ्म को सूचित करने के लिए निर्णय पेड़ों में 'पूर्व' पैरामीटर का उपयोग करें, अर्थात यदि 1,000,0000 डेटासेट सेट prior = c(0.001, 0.999)(R) में 1,000 पॉज़िटिव हैं ।

  3. वर्गीकरण फ़ंक्शन में 'वेट्स' तर्क का उपयोग करें जो दुर्लभ सकारात्मक मामलों के गर्भपात के लिए एल्गोरिथ्म को गंभीर रूप से दंडित करने के लिए उपयोग करते हैं

  4. कुछ वर्गीकरण एल्गोरिदम में 'लागत' तर्क का उपयोग करें - उदाहरण rpartके लिए R-- वास्तविक सकारात्मक और वास्तविक नकारात्मक के misclassifications के लिए सापेक्ष लागत को परिभाषित करने के लिए। आपको स्वाभाविक रूप से दुर्लभ वर्ग के गर्भपात के लिए एक उच्च लागत निर्धारित करनी चाहिए।

मैं ओवरसैमलिंग के पक्ष में नहीं हूं, क्योंकि यह डेटासेट में निर्भर टिप्पणियों का परिचय देता है और यह सांख्यिकी और मशीन लर्निंग दोनों में बनाई गई स्वतंत्रता की मान्यताओं का उल्लंघन करता है।


2

मैंने हाल के विषय में एक जवाब दिया :

हम जो करते हैं वह विभिन्न अनुपातों के साथ एक नमूना चुनता है। उपर्युक्त उदाहरण में, "YES" के 1000 मामले होंगे और उदाहरण के लिए, "NO" मामलों के 9000। यह दृष्टिकोण अधिक स्थिर मॉडल देता है। हालांकि, इसे एक वास्तविक नमूने पर परीक्षण किया जाना है (जो कि 1,000,000 पंक्तियों के साथ)।

न केवल उस अधिक स्थिर दृष्टिकोण देता है, लेकिन मॉडल आमतौर पर बेहतर होते हैं, जहां तक ​​लिफ्ट के संबंध में उपाय हैं।

आप इसे "आंकड़ों में निरीक्षण" के रूप में खोज सकते हैं, पहला परिणाम बहुत अच्छा है: http://www.statssa.gov.za/isi2009/ScientificProgramme/IPMS/1621.pdf


1

@Kay के उत्तर में 1 हल की रणनीति जोड़ना: सिंथेटिक माइनॉरिटी ओवरसम्पलिंग ( SMOTE ) आमतौर पर मेरे अनुभव से कम या अधिक नमूना लेने से बेहतर होता है क्योंकि मुझे लगता है कि यह दोनों के बीच एक समझौता बनाता है। यह बहुभिन्नरूपी भविष्यवक्ता स्थान पर प्लॉट किए गए डेटा बिंदुओं का उपयोग करते हुए अल्पसंख्यक वर्ग के सिंथेटिक नमूने बनाता है और नए सिंथेटिक बिंदु बनाने के लिए उस स्थान पर आसन्न बिंदुओं के बीच अधिक से अधिक मध्य बिंदु लेता है और इसलिए दोनों वर्ग आकार को संतुलित करता है। (मिडपॉइंट के बारे में निश्चित नहीं है, यहां एल्गोरिदम का विवरण है

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