क्या हमें हमेशा CV करना चाहिए?


9

मेरा प्रश्न: क्या मुझे अपेक्षाकृत बड़े डेटा सेट के लिए भी CV करना चाहिए?

मेरे पास अपेक्षाकृत बड़ा डेटा सेट है और मैं डेटा सेट पर मशीन लर्निंग एल्गोरिदम लागू करूंगा।

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

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

इसलिए मेरे पास अब कम से कम दो विकल्प हैं।

  1. एक छोटे डेटा सेट पर सीवी करें।
  2. सीवी के बिना अपेक्षाकृत बड़े प्रशिक्षण सेट और सत्यापन सेट का उपयोग करें।
  3. अन्य विचार।

सबसे अच्छा विचार क्या है? सैद्धांतिक या व्यावहारिक राय दोनों का स्वागत है।


1
यह सवाल जाहिर तौर पर सीडब्ल्यू होना चाहिए।
एच। शिंदोह

1
क्या बड़ा है? कितने अवलोकन? कितनी विशेषताएं / चर / प्रतिगामी?
जिम

1
यह एक पीसी पर निर्भर करता है। अर्थात् मैं "बड़े डेटा" के बारे में नहीं सोच रहा हूँ, जिसके लिए कई कंप्यूटरों की आवश्यकता होती है।
एच। शिंदोह

जवाबों:


3

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

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

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

यहां कुछ चीजें दी गई हैं, जिन पर आप चीजों को गति दे सकते हैं:

  1. इसे कम सुविधाओं के साथ प्रशिक्षित करें। अपनी समस्या के आकार को कम करने के लिए सुविधा चयन और / या आयामीता कमी का उपयोग करें
  2. SVM के लिए पहले से कर्नेल का उपयोग करें
  3. ऐसे एल्गोरिदम का उपयोग करें, जिन्हें ग्रिड में हाइपर मापदंडों का चयन करने की आवश्यकता नहीं है। रिज / लास्सो / इलास्टिक नेट पेनल्टी या यहां तक ​​कि लीनियर एसवीएम के साथ लॉजिस्टिक रिग्रेशन जैसे लकीर के फकीर। कार्यान्वयन के आधार पर, वे क्लासिफायर केवल एक ही फिटिंग की लागत के लिए चयनित पथ के सभी हाइपरपैरामीटर के लिए मॉडल फिट कर सकते हैं
  4. अपनी प्रकार की समस्या के लिए तेजी से कार्यान्वयन का उपयोग करें (आपको इसे Google करना होगा)

और यहां तक ​​कि धीमी कंप्यूटर के साथ, आप कर सकते हैं:

  1. अधिक कोर का उपयोग करें
  2. GPU का उपयोग करें

2

क्रॉस-मान्यता डेटा में यादृच्छिकता के कारण आपके प्रदर्शन मीट्रिक के विचरण का अनुमान लगाने के लिए एक उपकरण है (और शायद यह निर्धारित नहीं होने पर लर्निंग एल्गोरिथ्म में)।

इसलिए यदि आप केवल एक विभाजन का उपयोग करते हैं, जैसे कि 80% ट्रेन + 20% परीक्षण और इस एकल प्रयोग से आपके प्रदर्शन मीट्रिक की रिपोर्ट करें तो अच्छे मौके हैं कि कोई भी आपके मापदंडों को बिल्कुल उसी मापदंडों का उपयोग करके पुन: प्रयोग करने की कोशिश कर रहा है, एक अलग प्रदर्शन आंकड़ा प्राप्त करेगा (कभी-कभी बहुत विभिन्न)। जब तक आप निश्चित रूप से वही सटीक विभाजन प्रदान करते हैं जो अर्थहीन है।

अपने प्रश्न पर वापस आने के लिए मुझे लगता है कि आपको अपने प्रदर्शन की रिपोर्ट करने के लिए निश्चित रूप से सीवी का उपयोग करना चाहिए (जैसे 10 गुना सीवी करना और प्रदर्शन मेट्रिक के माध्य और मानक विचलन की रिपोर्ट करना)। अब अपने एल्गोरिथ्म को ट्यूनिंग के लिए आप प्रशिक्षण सेट से नमूना किए गए बहुत छोटे सत्यापन सेट का उपयोग कर सकते हैं (सुनिश्चित करें कि यह परीक्षण सेट में शामिल नहीं है)।

यदि आप डरते हैं कि आपको एक छोटे से सेट का उपयोग करके सबसे अच्छा हाइपरपैरामीटर नहीं मिलेगा तो आप संभवतः अपने एल्गोरिथ्म को डेटासेट की बारीकियों के लिए छोड़ रहे हैं। यदि आप एक छोटे नमूने का उपयोग करके कॉन्फ़िगरेशन नहीं पा सकते हैं जो सभी सिलवटों के बीच एक उचित प्रदर्शन देता है तो एल्गोरिथ्म शायद व्यवहार में बहुत उपयोगी नहीं है।

यह भी ध्यान रखें कि कुछ एल्गोरिदम बस बहुत धीमी गति से होते हैं / कुछ कॉन्फ़िगरेशन में अच्छी तरह से नहीं बढ़ते हैं। यह व्यावहारिक मॉडल चयन का एक हिस्सा भी है।

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

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