सुविधाओं की संख्या बढ़ने से सटीकता में गिरावट आती है लेकिन पूर्व / स्मरण में वृद्धि होती है


15

मैं मशीन लर्निंग के लिए नया हूं। फिलहाल मैं एनएलटीके और अजगर का उपयोग करके 3 वर्गों में छोटे ग्रंथों को सकारात्मक, नकारात्मक या तटस्थ के रूप में वर्गीकृत करने के लिए एक नैवे बे (एनबी) क्लासिफायर का उपयोग कर रहा हूं।

कुछ परीक्षणों का आयोजन करने के बाद, 300,000 उदाहरणों (16,924 सकारात्मक 7,477 नकारात्मक और 275,599 न्यूट्रल) से बना एक डेटासेट के साथ मैंने पाया कि जब मैं सुविधाओं की संख्या बढ़ाता हूं, तो सटीकता कम हो जाती है लेकिन सकारात्मक और नकारात्मक कक्षाओं के लिए परिशुद्धता / याद हो जाती है। क्या यह एनबी क्लासिफायर के लिए एक सामान्य व्यवहार है? क्या हम यह कह सकते हैं कि अधिक सुविधाओं का उपयोग करना बेहतर होगा?

कुछ आंकड़े:

Features: 50    
Accuracy: 0.88199
F_Measure Class Neutral 0.938299
F_Measure Class Positive 0.195742
F_Measure Class Negative 0.065596

Features: 500   
Accuracy: 0.822573
F_Measure Class Neutral 0.904684
F_Measure Class Positive 0.223353
F_Measure Class Negative 0.134942

अग्रिम में धन्यवाद...

2011/11/26 संपादित करें

मैंने 3 अलग फीचर चयन रणनीतियों (MAXFREQ, FREQENT, MAXINFOGAIN) का Naive Bayes क्लासिफायर के साथ परीक्षण किया है। यहाँ पहले सटीकता, और एफ 1 प्रति वर्ग उपाय हैं:

यहाँ छवि विवरण दर्ज करें

तब मैंने एक वृद्धिशील प्रशिक्षण सेट के साथ ट्रेन की त्रुटि और परीक्षण त्रुटि की साजिश रची है, जब शीर्ष 100 और शीर्ष 1000 सुविधाओं के साथ MAXINFOGAIN का उपयोग कर रहा है:

यहाँ छवि विवरण दर्ज करें

तो, यह मुझे लगता है कि हालांकि सबसे अधिक सटीकता FREQENT के साथ हासिल की गई है, सबसे अच्छा क्लासिफायर MAXINFOGAIN का उपयोग करने वाला एक है, क्या यह सही है ? शीर्ष 100 विशेषताओं का उपयोग करते समय हमारे पास पूर्वाग्रह है (परीक्षण त्रुटि ट्रेन त्रुटि के करीब है) और अधिक प्रशिक्षण उदाहरण जोड़ने से मदद नहीं मिलेगी। इसे सुधारने के लिए हमें और अधिक सुविधाओं की आवश्यकता होगी। 1000 विशेषताओं के साथ, पूर्वाग्रह कम हो जाता है लेकिन त्रुटि बढ़ जाती है ... क्या यह ठीक है? क्या मुझे और सुविधाएँ जोड़ने की आवश्यकता है? मैं वास्तव में यह कैसे व्याख्या करने के लिए पता नहीं है ...

एक बार फिर धन्यवाद...


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

आपकी मदद के लिए धन्यवाद, सिमोन! मैं सब कुछ समझ गया था लेकिन अंतिम भाग ... क्या आप मुझे बता सकते हैं कि आप 1000 सुविधाओं के साथ उच्च संस्करण कैसे देखते हैं? चूंकि परीक्षण और ट्रेन की त्रुटियों के बीच अंतर नहीं लगता है कि यह अभी भी मुझे पूर्वाग्रह की तरह दिखता है ...
kanzen_master

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

उत्तर के लिए धन्यवाद। आपके अपडेट किए गए पोस्ट का 3 उदाहरण (अच्छा परिणाम, ट्रेन, परीक्षण त्रुटि घटता न तो बहुत पास है और न ही बहुत दूर है) ऐसा लगता है कि मैंने सीखने की अवस्था को 1000 विशेषताओं का उपयोग करके प्लॉट किया है, इसलिए मैंने सोचा कि लगभग 1000 सुविधाओं का उपयोग करना एक "अच्छा परिणाम" होगा। हालांकि, इस मामले में त्रुटि अधिक है, जो अच्छा नहीं है। लेकिन, बस घटता के बीच की दूरी को देखते हुए, मैं 1000 विशेषताओं के साथ उच्च विचरण नहीं देख सकता ... (वैसे, मैं पहले से ही प्रशिक्षण सेट के रूप में 2/3 में डेटा को विभाजित कर रहा हूं, परीक्षण सेट के रूप में 1/3, प्रदर्शन सुविधा प्रशिक्षण सेट पर चयन, और परीक्षण सेट पर मूल्यांकन ...)
kanzen_master

1
ठीक। मैं सीखने की अवस्था में काफी नया हूँ और आपके उदाहरण वास्तव में दिलचस्प थे और इससे मुझे उन पर जानकारी प्राप्त हुई। इस प्रकार, धन्यवाद डी। टी। हाँ, दोनों मामलों में पूर्वाग्रह हो सकते हैं। मेरे अनुसार, आपके पास बहुत तिरछा डेटा सेट है और परीक्षण सटीकता के बजाय एफ-माप पर एक नज़र रखना महत्वपूर्ण है। अपने भूखंडों को देखने के बाद, ऐसा लगता है कि आपके पास जितनी अधिक सुविधाएँ हैं उतना बेहतर है; वास्तव में, एफ-माप में सुधार होता है। मैंने सुना है कि पाठ वर्गीकरण में, यदि आप विशेषताएँ अपने पाठ में शब्द आवृत्ति हैं, तो बहुत सारी सुविधाओं का उपयोग करना आम है; btw मैं इसका इस्तेमाल नहीं कर रहा हूँ और मैं आपको और नहीं बता सकता।
सिमोन

जवाबों:


18

सटीकता बनाम एफ-माप

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

सीसी=nयूटीआरएल(nयूटीआरएल+पीरोंमैंटीमैंv+nजीटीमैंv)=0.9188

अच्छा है, लेकिन बेकार है।

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

अधिक या कम सुविधाएँ?

सामान्य तौर पर अधिक सुविधाओं का उपयोग करना बेहतर नहीं है, लेकिन सही सुविधाओं का उपयोग करना। अधिक सुविधाएँ बेहतर है कि एक सुविधा चयन एल्गोरिथ्म के पास सबसे अच्छा विकल्प सबसे अच्छा सबसेट है (मुझे पता लगाने का सुझाव है: क्रॉसवैलिड की सुविधा-चयन )। जब यह NB की बात आती है, तो एक तेज और ठोस (लेकिन इष्टतम से कम) दृष्टिकोण है सूचनागृह (अनुपात) का उपयोग करना ताकि घटते क्रम में सुविधाओं को छाँट सकें और शीर्ष k का चयन कर सकें।

फिर, यह सलाह (InformationGain को छोड़कर) वर्गीकरण एल्गोरिदम से स्वतंत्र है।

EDIT 27.11.11

सुविधाओं की सही संख्या का चयन करने के लिए पूर्वाग्रह और विचरण के बारे में बहुत भ्रम पैदा हो गया है। इसलिए मैं इस ट्यूटोरियल के पहले पन्नों को पढ़ने की सलाह देता हूं: बायस-वेरिएंस ट्रेडऑफ । मुख्य सार है:

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

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

उदाहरण: जब 3-गुना क्रॉसवेलाइडेशन 6-बार (हां, अलग-अलग डेटा विभाजन के साथ पुनरावृत्ति की सिफारिश की जाती है, तो प्रदर्शन करते हुए, कोहावी 6 पुनरावृत्तियों का सुझाव देता है), आपको 18 मान मिलते हैं। मुझे अब उम्मीद है कि ...

  • कम संख्या में सुविधाओं के साथ, औसत त्रुटि (पूर्वाग्रह) कम होगी, हालांकि, त्रुटि का विचरण (18 मूल्यों में) अधिक होगा।
  • सुविधाओं की एक उच्च संख्या के साथ, औसत त्रुटि (पूर्वाग्रह) अधिक होगी, लेकिन त्रुटि का विचरण (18 मूल्यों का) कम है।

त्रुटि / पूर्वाग्रह का यह व्यवहार ठीक वैसा ही है जैसा हम आपके भूखंडों में देखते हैं। हम विचरण के बारे में एक बयान नहीं दे सकते। यह कि वक्र एक दूसरे के करीब हैं, यह संकेत हो सकता है कि परीक्षण-सेट प्रशिक्षण विशेषताओं के समान विशेषताओं को दिखाने के लिए काफी बड़ा है और इसलिए कि मापा त्रुटि विश्वसनीय हो सकती है, लेकिन यह (कम से कम जहां तक ​​मुझे समझ में आया है) यह) विचरण के बारे में एक कथन बनाने के लिए पर्याप्त नहीं है (त्रुटि के!)।

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

ओह, और प्रशिक्षण नमूने में केवल डेटा का उपयोग करके सुविधा चयन के लिए infogain की गणना करना न भूलें ! एक को फीचर चयन के लिए संपूर्ण डेटा का उपयोग करने का प्रलोभन दिया जाता है और फिर डेटा विभाजन का प्रदर्शन किया जाता है और क्रॉसवैलिडेशन लागू किया जाता है, लेकिन इससे ओवरफिटिंग हो जाएगी। मुझे नहीं पता कि आपने क्या किया, यह सिर्फ एक चेतावनी है जिसे कभी नहीं भूलना चाहिए।


1
आपके उत्तर के लिए बहुत बहुत धन्यवाद, बहुत स्पष्ट स्पष्टीकरण। मैं अपनी सुविधा चयन रणनीति के रूप में अधिकतम सूचना लाभ का उपयोग कर रहा हूं, और 5-गुना क्रॉस सत्यापन का उपयोग करके परीक्षण कर रहा हूं। मुझे लगता है कि यह जानने के लिए कि मुझे किस टॉप के फीचर्स को लेना चाहिए, मुझे यह सुनिश्चित करने की आवश्यकता है कि एल्गोरिथ्म को हर बार कई बार बढ़ते हुए एल्गोरिथ्म का परीक्षण किया जाए, और के को लेने के लिए जो उच्चतम f_score देता है। हालांकि, मुझे लगता है कि डेटा सेट के आधार पर "टॉप के" बदलने की संभावना है ... सही है?
kanzen_master

1
सही बात। लेकिन अगर नया डेटासेट पुराने के समान (समान फीचर्स वाला समान) k समान रहता है। आप संभावित समाधानों के स्थान को तेज़ी से खोजने के लिए एक जेनेटिक एल्गोरिथम जोड़ सकते हैं या (इससे भी बेहतर) एक आनुवंशिक एल्गोरिथ्म का उपयोग कर सकते हैं ताकि सूचना-सुविधा से मुक्त इष्टतम सुविधा का पता लगाया जा सके ... इसलिए जाने के कई तरीके।
स्टेफेन

1
स्टैनफोर्ड के व्याख्यानों के अनुसार, यदि आप अच्छी तरह से अलग-अलग प्रशिक्षण और परीक्षण घटता देखते हैं, तो प्रशिक्षण के उदाहरणों के # भिन्न होने का यह वास्तव में मतलब है कि विचरण है। निश्चित रूप से एक बेहतर दृष्टिकोण होगा विश्वास अंतराल का अनुमान लगाना।
सिमोन

1
@DT 1. मुझे व्याख्यान की जानकारी नहीं है, इसलिए मैं एंड्रयूजी के स्पष्टीकरण को खदान से नहीं जोड़ सकता। 2. नहीं छोटी संख्या की विशेषताएं => ओवरफिटिंग => कम पूर्वाग्रह, उच्च विचरण। सुविधाओं की उच्च संख्या => कम होना => उच्च पूर्वाग्रह, निम्न विचरण। मैं वास्तव में विभिन्न प्रकार की विशेषताओं और प्रशिक्षण उदाहरणों के लिए सीवी-सिलवटों की त्रुटि के विचरण की साजिश करने का सुझाव देता हूं।
15

2
1. स्टेफेन, व्याख्यान यहाँ उपलब्ध है: ml-class.org/course/video/preview_list (भाग X, धारा "लर्निंग कर्व्स") 2. मैं देखता हूं। मैं सोच रहा था कि जब प्रशिक्षण के दौरान बहुत सारी सुविधाएँ सीखी गईं => मॉडल जटिल हो गया, और प्रशिक्षण सेट =>
भिन्न हो गया

5

यह जानने के लिए कि क्या अधिक सुविधाओं का उपयोग करना उपयोगी है, मैं लर्निंग कर्व्स की साजिश रचूंगा। मुझे लगता है कि यह स्पष्ट रूप से स्टैनफोर्ड की मशीन लर्निंग क्लास की 10 वीं यूनिट में स्पष्ट किया गया है, जिसका नाम "मशीन लर्निंग को लागू करने के लिए सलाह" है, जिसे आप यहां पा सकते हैं: http://www.ml-class.org/course/video/preview_list

लर्निंग कर्व्स को प्लॉट करना आप समझ सकते हैं कि आपकी समस्या या तो उच्च पूर्वाग्रह है या उच्च विचरण है। जब तक आप प्रशिक्षण उदाहरण की संख्या बढ़ाते हैं, तब तक आपको प्रशिक्षण त्रुटि और परीक्षण त्रुटि (यानी 1-सटीकता) की साजिश करनी चाहिए , बाद वाला एक अलग डेटा सेट पर अनुमानित आपके क्लासिफायरियर की त्रुटि है। यदि ये वक्र एक-दूसरे के करीब हैं, तो आपको एक उच्च पूर्वाग्रह की समस्या है और संभवतः अधिक सुविधाएँ सम्मिलित करना लाभदायक होगा। दूसरी ओर, जब तक आपके वक्र काफी अलग हो जाते हैं, जब तक कि आप प्रशिक्षण के उदाहरणों की संख्या में वृद्धि नहीं करते हैं, तो आपके पास एक उच्च विचरण समस्या है। इस मामले में आपको उन सुविधाओं की संख्या घटानी चाहिए जिनका आप उपयोग कर रहे हैं।

संपादित करें

λ

λ

उच्च विचरण

λ

उच्च पूर्वाग्रह

λ=1

अच्छा परिणाम


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

वैसे, मैं एक क्लासिफायर के सीखने की अवस्था की साजिश करने की कोशिश कर रहा हूं जो अधिकतम सूचना लाभ स्कोर के साथ शीर्ष 100 सुविधाओं का उपयोग करता है। प्रशिक्षण डेटा सेट आकार में वृद्धि करते हुए मैं प्रशिक्षण त्रुटि और परीक्षण त्रुटि की साजिश करना चाहता हूं। प्रारंभिक ट्रेन डेटा सेट (धीरे-धीरे बढ़ने के लिए) और परीक्षण डेटा सेट (सभी परीक्षणों के लिए स्थिर) के लिए आकार क्या होना चाहिए? धन्यवाद फिर से ...
kanzen_master

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

1
सिमोन, मैंने पहली पोस्ट को सटीकता, एफ 1 उपायों और लर्निंग कर्व्स के कुछ परिणामों के साथ अद्यतन किया है, और नीचे में मेरी व्याख्या, क्या आप कृपया इसकी जांच कर सकते हैं? धन्यवाद ...
kanzen_master
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.