जो सलाह मैं दूंगा वह इस प्रकार है:
तंत्रिका जाल पर जाने से पहले रैखिक मॉडल (जैसे लॉजिस्टिक रिग्रेशन) की संभावनाओं को बाहर निकालना, खासकर यदि आपके पास कई विशेषताएं हैं और बहुत अधिक अवलोकन नहीं हैं। कई समस्याओं के लिए एक न्यूरल नेट, सरल लीनियर क्लासिफायर्स का प्रदर्शन नहीं करता है, और यह पता लगाने का एकमात्र तरीका है कि क्या आपकी समस्या इस श्रेणी में है, इसे आज़माएं और देखें।
कर्नेल विधियों की जांच करें (जैसे सपोर्ट वेक्टर मशीन (SVM), कर्नेल लॉजिस्टिक रिग्रेशन), गॉसियन प्रोसेस मॉडल। अति-मापदंडों की एक छोटी संख्या को ट्यूनिंग करके दोनों मामलों में ओवर-फिटिंग को प्रभावी ढंग से नियंत्रित किया जाता है। कर्नेल विधियों के लिए यह अक्सर क्रॉस-मान्यता द्वारा निष्पादित किया जाता है, गॉसियन प्रक्रिया मॉडल के लिए यह सीमांत संभावना को अधिकतम करके किया जाता है (मॉडल के लिए बायेसियन "सबूत" के रूप में भी जाना जाता है)। मैंने पाया है कि तंत्रिका नेटवर्क की तुलना में इन विधियों का उपयोग करके एक उचित मॉडल प्राप्त करना बहुत आसान है, क्योंकि ओवर-फिटिंग से बचने का साधन इतना अधिक सीधा है।
यदि आप वास्तव में एक न्यूरल नेटवर्क का उपयोग करना चाहते हैं, तो फीडफोर्वर्ड मल्टीलेयर पर्सेप्ट्रॉन (एमएलपी) टाइप नेटवर्क के बजाय (नियमित) रेडियल आधार फ़ंक्शन नेटवर्क के साथ शुरू करें।
यदि आप एक एमएलपी का उपयोग करते हैं, तो नियमितीकरण का उपयोग करें। यदि आप करते हैं, तो यह आर्किटेक्चर के बारे में विकल्पों के प्रति कम संवेदनशील होगा, जैसे कि छिपी हुई इकाइयों की संख्या का अनुकूलन। इसके बजाय, आपको बस नियमितीकरण पैरामीटर के लिए एक अच्छा मूल्य चुनना होगा। मैकके के बायेसियन "सबूत ढांचे" नियमितीकरण पैरामीटर सेट करने के लिए एक अच्छी विधि प्रदान करता है। यदि आप नियमितीकरण का उपयोग करते हैं, तो टिप्पणियों की संख्या और चर की संख्या एक मुद्दे के बहुत कम हो जाती है।
ओवर-फिटिंग का पता लगाने के लिए, सामान्यीकरण प्रदर्शन का परीक्षण करने के लिए बस क्रॉस-सत्यापन करें।
समान आवृत्तियों वाली कक्षाओं के लिए, याद रखने वाली बात यह है कि यदि आप एक मॉडल को एक संतुलित प्रशिक्षण सेट के साथ प्रशिक्षित करते हैं, लेकिन परिचालन डेटा में कक्षाएं संतुलित नहीं हैं, तो मॉडल अल्पसंख्यक वर्ग की भविष्यवाणी करने की बहुत संभावना है। यदि आप लॉजिस्टिक रिग्रेशन या न्यूरल नेटवर्क जैसे प्रायिकेशनल क्लासिफायरियर का उपयोग करते हैं, तो आप प्रशिक्षण के बाद उसके लिए हमेशा अनुमानित संभावनाओं को सही कर सकते हैं। यदि आपका डेटासेट बहुत असंतुलित है, तो मैं क्रॉस-वेलिडेशन द्वारा चुने गए वज़निंग कारकों के साथ, सकारात्मक और नकारात्मक वर्गों से पैटर्न के अंतर को भारित करने की सलाह दूंगा।
हालांकि, जब कक्षाएं बहुत असंतुलित होती हैं, तो आमतौर पर यह मामला होता है कि झूठी-नकारात्मक और झूठी-सकारात्मक त्रुटियों में अंतर लागत होती है (उदाहरण के लिए मेडिकल स्क्रीनिंग परीक्षणों में एक झूठी-नकारात्मक एक झूठी-सकारात्मक की तुलना में बहुत खराब होती है)। इसलिए नेटवर्क को प्रशिक्षित करने के लिए उपयोग किए जाने वाले त्रुटि फ़ंक्शन में अक्सर आपको सभी की आवश्यकता होती है।
यदि आप एक MATLAB उपयोगकर्ता (मेरे जैसे) हैं, तो मैं NETLAB सॉफ़्टवेयर (इयान नबनी और क्रिस बिशप) या सॉफ़्टवेयर के लिए जोरदार सिफारिश कर सकता हूं जो रासमुसेन और विलियम्स द्वारा बुक गॉसियन प्रोसेस फॉर मशीन लर्निंग के साथ जाता है। मैं और अधिक दृढ़ता से "ब्यूरल नेटवर्क्स नेटवर्क फॉर पैटर्न रिकॉग्निशन" की सिफारिश क्रिस बिशप द्वारा कर सकता हूँ। यह एक शानदार पुस्तक है, और इस सामग्री को बहुत स्पष्टता के साथ कवर करती है और गणित के न्यूनतम स्तर को वास्तव में समझने के लिए आवश्यक है कि आप क्या कर रहे हैं, और इसका अधिकांश हिस्सा NETLAB सॉफ़्टवेयर (जो कि ऑक्टेव के तहत भी चल सकता है) में लागू किया जाता है।
HTH
PS एक तंत्रिका जाल के साथ मॉडलिंग का सबसे अच्छा तरीका शायद रेडफोर्ड नील द्वारा विकसित हाइब्रिड मोंटे कार्लो (HMC) पर आधारित एक बायेसियन दृष्टिकोण का उपयोग करना है। सामान्य समस्याओं में मॉडलिंग तब शुरू होती है जब आप कुछ मापदंडों को आज़माते हैं और उनका अनुकूलन करते हैं और आप ओवर-फिटिंग करते हैं। सबसे अच्छा समाधान यह है कि किसी भी चीज को कभी भी ऑप्टिमाइज़ न करें और इसके बजाय मापदंडों पर हाशिए (एकीकृत) करें। अफसोस की बात है कि इस एकीकरण को विश्लेषणात्मक रूप से प्रदर्शित नहीं किया जा सकता है, इसलिए आपको इसके बजाय नमूना आधारित दृष्टिकोण का उपयोग करने की आवश्यकता है। हालांकि, यह (ए) कम्प्यूटेशनल रूप से महंगा है और (बी) एक "ब्लैक आर्ट" का एक सा है और गहरी समझ और अनुभव की आवश्यकता है।