libSVM

2013-09-30 9 views
6

का उपयोग करते हुए एसवीएम में डेटा असंतुलन जब मैं असंतुलित डेटासेट का उपयोग कर रहा हूं जिसमें 75% 'सत्य' लेबल और 25% 'झूठे' लेबल शामिल हैं, तो मुझे libSVM में अपना गामा और लागत पैरामीटर कैसे सेट करना चाहिए? मुझे डेटा असंतुलन के कारण 'सत्य' पर सेट किए गए सभी अनुमानित लेबल होने की निरंतर त्रुटि मिल रही है।libSVM

यदि समस्या libSVM के साथ नहीं है, लेकिन मेरे डेटासेट के साथ, मैं सैद्धांतिक मशीन लर्निंग दृष्टिकोण से इस असंतुलन को कैसे संभालना चाहिए? * जिन सुविधाओं का मैं उपयोग कर रहा हूं उनकी संख्या 4-10 के बीच है और मेरे पास 250 डेटा पॉइंट्स का एक छोटा सा सेट है।

+2

वहाँ FAQ पृष्ठ जो हो सकता है में मदद करता है में एक ऐसी ही सवाल यह है: प्रश्न: मेरा डेटा असंतुलित कर रहे हैं। Libsvm ऐसी समस्याओं को संभाल सकता है? http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f410 – McKelvin

उत्तर

6

क्लासेस असंतुलन सी और गामा, के चयन के इस मुद्दे से निपटने के लिए आप class weighting scheme जो उदाहरण scikit-learn पैकेज (libsvm पर बनाया गया) सबसे अच्छा C और gamma की

चयन के लिए में उपलब्ध है का उपयोग करना चाहिए के साथ कोई संबंध नहीं है क्रॉस सत्यापन के साथ ग्रिड खोज का उपयोग करके किया जाता है। C के लिए आपको मूल्यों की विस्तृत श्रृंखला का प्रयास करना चाहिए, 1 और 10^15 के बीच मानों को चुनना उचित है, जबकि gamma की एक सरल और अच्छी ह्युरिस्टिक, श्रेणी मान आपके सभी डेटा बिंदुओं के बीच जोड़ी दूरी की गणना करना है और इसके प्रतिशत के अनुसार गामा का चयन करना उचित है वितरण - प्रत्येक बिंदु को 1/gamma के बराबर भिन्नता के साथ एक गॉसियन वितरण डालने के बारे में सोचें - यदि आप ऐसे gamma का चयन करते हैं, तो यह वितरण ओवरलैप होगा, आपको बहुत अधिक अंक मिलेगा, जबकि आपको छोटे "भिन्न" मॉडल मिलेगा, जबकि छोटे भिन्नता का उपयोग ओवरफिटिंग की ओर जाता है।

+1

कक्षा भारोत्तोलन योजना का तात्पर्य है कि वास्तविक सीवीएम प्रशिक्षण समस्या में 'सी' बदल जाता है, इसलिए कक्षा संतुलन * करता है * पर्दे के पीछे होने के बावजूद 'सी' के चयन के साथ कुछ करना है। –

+1

यह पूरी तरह से भाषाई चीज है, क्योंकि मेरा इरादा था कि सी का चयन असंतुलन की समस्या को ठीक नहीं करेगा। इस समस्या के समाधान हालांकि सी को बदलते हैं, मुझे वास्तविक विरोधाभास नहीं दिखता है – lejlot

4

असंतुलित डेटा सेट को विभिन्न तरीकों से निपटाया जा सकता है। आरबीएफ कर्नेल के लिए gamma जैसे कर्नेल पैरामीटर पर कक्षा संतुलन का कोई प्रभाव नहीं पड़ता है।

दो सबसे लोकप्रिय दृष्टिकोण हैं:

  1. वर्ग प्रति अलग गलत वर्गीकरण दंड का प्रयोग करें, यह मूल रूप से C बदल रहा है। आम तौर पर सबसे छोटी कक्षा वजन कम हो जाती है, एक आम दृष्टिकोण npos * wpos = nneg * wneg है। LIBSVM आपको -wX झंडे का उपयोग करके ऐसा करने की अनुमति देता है।
  2. समान प्रतिनिधित्व वाले वर्ग को समान मात्रा में सकारात्मक और नकारात्मक प्राप्त करने के लिए सब्सक्राइब करें और प्रशिक्षण के साथ आगे बढ़ें क्योंकि पारंपरिक रूप से संतुलित सेट के लिए आप करेंगे। ध्यान दें कि आप मूल रूप से डेटा के एक बड़े हिस्से को अनदेखा करते हैं, जो सहज रूप से एक बुरा विचार है।
+1

क्यों ** oversample ** इसके बजाय छोटा नहीं है? यह किसी भी जानकारी को अनदेखा नहीं करेगा – lejlot

+0

@lejlot अधिकांश स्थितियों जहां बाद की रणनीति का उपयोग किया जाता है, बड़े पैमाने पर समस्याएं हैं (उदाहरण के लिए करोड़ों उदाहरणों के लिए लाखों), जिसमें डेटा के हिस्से को अनदेखा करने के लिए वास्तव में जटिलता को कम करने के लिए हैक के रूप में उपयोग किया जाता है। छोटे सेट को ओवरसम्प्लिंग करना मूल रूप से एक अक्षम तरीके से पूर्व दृष्टिकोण है (oversampling बिल्कुल reweighing के समान है)। –

+0

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

2

मुझे पता है कि यह कुछ समय पहले पूछा गया है, लेकिन मैं इसका उत्तर देना चाहूंगा क्योंकि आप मेरा जवाब उपयोगी पा सकते हैं।

जैसा कि अन्य ने उल्लेख किया है, आप अल्पसंख्यक वर्गों के लिए अलग-अलग वजन का उपयोग करने या विभिन्न गलत वर्गीकरण दंड का उपयोग करने पर विचार करना चाहेंगे। हालांकि, असंतुलित डेटासेट से निपटने का एक और चालाक तरीका है।

आप (ver-नमूने ते chnique एस ynthetic एम inority हे) एल्गोरिथ्म अल्पसंख्यक वर्ग के लिए संश्लेषित डेटा उत्पन्न करने ऐसा मारा उपयोग कर सकते हैं। यह एक साधारण एल्गोरिदम है जो कुछ असंतुलन डेटासेट्स से बहुत अच्छी तरह से निपट सकता है।

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

अल्पसंख्यक वर्ग के साथ वजन संबद्ध करना इस एल्गोरिदम का एक विशेष मामला है। उदाहरण के साथ जब आप वजन $ w_i $ जोड़ते हैं, तो आप मूल रूप से उदाहरण के शीर्ष पर अतिरिक्त $ w_i - 1 $ उदाहरण जोड़ रहे हैं!

SMOTE

  • आपको क्या करने की जरूरत है इस एल्गोरिथ्म द्वारा बनाई गई नमूनों के साथ अपने प्रारंभिक डाटासेट बढ़ाने, और इस नए डाटासेट साथ SVM प्रशिक्षित करने के लिए है। आप पाइथन और मैटलैब जैसी विभिन्न भाषाओं में ऑनलाइन कई कार्यान्वयन भी पा सकते हैं।

  • इस एल्गोरिदम के अन्य एक्सटेंशन रहे हैं, यदि आप चाहें तो मैं आपको अधिक सामग्री के लिए इंगित कर सकता हूं।

  • वर्गीकारक यदि आप परीक्षण और ट्रेन में डाटासेट विभाजित ट्रेन सेट करने के लिए सिंथेटिक उदाहरणों जोड़ने (परीक्षण सेट को नहीं जोड़ते हैं) की जरूरत है,, ट्रेन सेट पर मॉडल ट्रेन का परीक्षण करने के लिए और अंत में परीक्षण सेट पर इसका परीक्षण करें। यदि आप परीक्षण करते समय जेनरेट किए गए उदाहरणों पर विचार करते हैं तो आप पूर्वाग्रह (और हास्यास्पद उच्च) सटीकता और याद के साथ समाप्त हो जाएंगे।

संबंधित मुद्दे