सहपाठियों की सटीकता कैसे बढ़ाएं?


17

मैं OpenCV letter_recog.cpp उदाहरण का उपयोग यादृच्छिक वृक्षों और अन्य वर्गीकरणों पर करने के लिए कर रहा हूं। इस उदाहरण में छह क्लासिफायर के कार्यान्वयन हैं - यादृच्छिक पेड़, बूस्टिंग, एमएलपी, केएनएन, भोले बे और एसवीएम। 20000 उदाहरणों और 16 विशेषताओं के साथ यूसीआई अक्षर पहचान डेटासेट का उपयोग किया जाता है, जिसे मैं प्रशिक्षण और परीक्षण के लिए आधे में विभाजित करता हूं। मेरे पास एसवीएम के साथ अनुभव है, इसलिए मैंने जल्दी से इसकी मान्यता त्रुटि 3.3% पर सेट की। कुछ प्रयोग के बाद मुझे जो मिला वह था:

यूसीआई पत्र मान्यता:

  • RTrees - 5.3%
  • बूस्ट - 13%
  • एमएलपी - 7.9%
  • kNN (k = 3) - 6.5%
  • बे - 11.5%
  • SVM - 3.3%

पैरामीटर का इस्तेमाल किया:

  • RTrees - max_num_of_trees_in_the_forrest = 200, max_depth = 20, min_sample_count = 1

  • बूस्ट - बूस्ट_टाइप = रियल, कमजोर_काउंट = 200, वेट_ट्रीम_रेट = 0.95, मैक्स_डेप = 7

  • MLP - विधि = BACKPROP, param = 0.001, max_iter = 300 (डिफ़ॉल्ट मान - प्रयोग करने में धीमा)

  • kNN (k = 3) - k = 3

  • बे - कोई नहीं

  • एसवीएम - आरबीएफ कर्नेल, सी = 10, गामा = 0.01

उसके बाद मैंने उसी मापदंडों का इस्तेमाल किया और पहले ग्रेडिएंट फीचर्स (वेक्टर आकार 200 तत्वों) को निकालकर डिजिट और एमएनआईएसटी डेटासेट पर परीक्षण किया:

अंक:

  • RTrees - 5.1%
  • बूस्ट - 23.4%
  • एमएलपी - 4.3%
  • kNN (k = 3) - 7.3%
  • बे - 17.7%
  • एसवीएम - 4.2%

MNIST:

  • RTrees - 1.4%
  • बूस्ट - मेमोरी से बाहर
  • एमएलपी - 1.0%
  • kNN (k = 3) - 1.2%
  • बे - 34.33%
  • एसवीएम - 0.6%

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

जवाबों:


9

आयाम की कमी

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

यदि आप रुचि रखते हैं, तो मैंने यहाँ PCA, LDA और कुछ अन्य तकनीकों के बारे में लिखा है: http://sebastianraschka.com/index.html#machine_learning और मेरे GitHub रेपो में यहाँ: https://github.com/rasbit/pattern_classification

परिणाम का सत्यापन करना

इसके अलावा, आप अपने क्लासिफायर के प्रदर्शन का मूल्यांकन अधिक उद्देश्यपूर्ण तरीके से करने के लिए क्रॉस-वैलिडेशन तकनीकों पर एक नज़र डाल सकते हैं


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

प्रशिक्षण और परीक्षण डेटासेट btw के सापेक्ष अनुपात क्या हैं? कुछ लाइन 70:30, 60:40, या 50:50?

पहला डेटासेट - यूसीआई पत्र मान्यता 50:50 (10000: 10000) पर सेट है, अंक 51:49 (1893: 1796) के बारे में है और एमएनआईएसटी लगभग 86:14 (60000: 10000) है।
मिका

मैंने पीसीए के साथ प्रयोग किया, फिर भी यादृच्छिक फॉरेस्ट के साथ अच्छे परिणाम नहीं मिले, लेकिन बूस्ट और बेयस अब अन्य क्लासीफायर के समान परिणाम देते हैं। मुझे यहां यादृच्छिक फॉरेस्ट के बारे में एक चर्चा मिली: आंकड़े . stackexchange.com/questions/66543/… यह संभव है कि मैं वास्तव में ओवरफिट नहीं कर रहा हूं, लेकिन वहां उल्लिखित आउट-ऑफ-बैग (ओओबी) भविष्यवाणी त्रुटि नहीं मिल सकती है। बड़ी संख्या में पेड़ों के साथ चल रहा प्रयोग अब यह देखने के लिए कि सटीकता में सुधार होगा या नहीं।
मिका

ठीक है, लगता है कि आप थोड़ी प्रगति कर रहे हैं :) एक तुच्छ प्रश्न, लेकिन क्या आपने अपनी विशेषताओं (जेड-स्कोर) को मानकीकृत किया है ताकि वे मानक विचलन = 1 के साथ माध्य के आसपास केंद्रित हों?

5

मुझे यादृच्छिक पेड़ों से अधिक उम्मीद थी :

  • यादृच्छिक जंगलों के साथ, आमतौर पर एन सुविधाओं के लिए, प्रत्येक निर्णय पेड़ के निर्माण के लिए sqrt (N) सुविधाओं का उपयोग किया जाता है। चूंकि आपके मामले में N = 20 है, तो आप अधिकतम 5 निर्णय (प्रत्येक निर्णय पेड़ के निर्माण के लिए उप-सुविधाओं की संख्या) को अधिकतम करने की कोशिश कर सकते हैं ।

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

एमएनआईएसटीएन पर केएनएन बेहतर सटीकता देता है, किसी भी विचार को उच्च कैसे प्राप्त करें?

  • K के उच्च मान के साथ प्रयास करें (5 या 7 कहें)। K का उच्च मूल्य आपको एक बिंदु के वर्ग लेबल के बारे में अधिक सहायक सबूत देगा।
  • K-निकटतम पड़ोसी को चलाने से पहले आप PCA या फिशर का रैखिक विवेचक विश्लेषण चला सकते हैं। इसके द्वारा आप संभावित रूप से बिंदुओं के बीच की दूरी की गणना करते हुए सहसंबद्ध सुविधाओं से छुटकारा पा सकते हैं, और इसलिए आपके k पड़ोसी अधिक मजबूत होंगे।
  • K पड़ोसियों के बीच की दूरी में भिन्नता के आधार पर विभिन्न बिंदुओं के लिए अलग-अलग K मानों की कोशिश करें।

मेरा मानना ​​है कि आप OpenCV nactive_vars पैरामीटर का उल्लेख कर रहे हैं (max_depth नहीं), जिसे मैंने डिफ़ॉल्ट sqrt (N) मान पर सेट किया है, जो कि nactive_vars = sqrt (16) है जो पहले दो डेटासेट और sqrt (200) अन्य दो के लिए है। max_depth यह निर्धारित करता है कि क्या पेड़ पूरी गहराई तक बढ़ते हैं (25 इसका अधिकतम मूल्य है) और अंडरफिटिंग और ओवरफिटिंग के बीच संतुलन होता है, इसके बारे में यहां और अधिक: आंकड़े ।stackexchange.com / questions / 66209// min_sample_count के लिए निश्चित नहीं है, लेकिन मैंने विभिन्न मानों और इसे स्थापित करने की कोशिश की 1 के लिए सबसे अच्छा काम किया।
मीका

OpenCV दस्तावेज़ीकरण मापदंडों का संक्षिप्त विवरण देता है: docs.opencv.org/modules/ml/doc/… अभी के लिए मैं यादृच्छिक पेड़ों को यथोचित रूप से काम करना और चीजों को सरल रखना चाहूंगा क्योंकि मैं एक बहु-वर्गीय प्रणाली के साथ काम करने पर ध्यान केंद्रित करना चाहता हूं।
मीका

KNN के बारे में - ये सभी वास्तव में अच्छे सुझाव हैं, लेकिन मेरे कहने का मतलब यह है कि kNN ने यादृच्छिक पेड़ों के वर्गीकरण की तुलना में बेहतर प्रदर्शन किया है और मुझे लगता है कि यादृच्छिक पेड़ों के साथ सुधार के लिए बहुत जगह है।
मिका

हां, मुझे यकीन नहीं है कि यादृच्छिक वन सरलीकृत के-एनएन दृष्टिकोण की तुलना में अच्छा (या बेहतर) प्रदर्शन क्यों नहीं कर रहा है ... यह सिर्फ मामला हो सकता है कि एक कर्नेल आधारित दृष्टिकोण जहां आप सीधे पी (वाई) का अनुमान लगाने की कोशिश करते हैं। D) (आउटपुट दिया गया डेटा) जैसे कि K-NN में P (थीटा | D) का अनुमान लगाए बिना (अव्यक्त मॉडल दिया गया डेटा) जैसे पैरामीट्रिक मॉडल में।
देबासीस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.