9

मैं यहां कुछ विशेषज्ञ मार्गदर्शन चाहता हूं कि इस समस्या को हल करने के लिए मेरे लिए सबसे अच्छा तरीका क्या है। मैंने कुछ मशीन लर्निंग, तंत्रिका नेटवर्क और इस तरह की चीजों की जांच की है। मैंने वीका की जांच की है, कुछ प्रकार के बेसियन समाधान .. आर .. कई अलग-अलग चीजें। मुझे यकीन नहीं है कि वास्तव में कैसे आगे बढ़ना है। मेरी समस्या यहाँ है।मुझे लगता है कि एक मशीन सीखने की समस्या

मेरे पास घटनाओं का एक बड़ा संग्रह है, या अंत में लगभग 100,000 या उससे भी अधिक है। प्रत्येक कार्यक्रम में कई (30-50) स्वतंत्र चर होते हैं, और 1 आश्रित चर जो मुझे परवाह है। आश्रित चर के मूल्य को निर्धारित करने में कुछ स्वतंत्र चर दूसरों की तुलना में अधिक महत्वपूर्ण हैं। और, ये घटनाएं समय प्रासंगिक हैं। जो चीजें आज होती हैं वे 10 साल पहले हुई घटनाओं की तुलना में अधिक महत्वपूर्ण हैं।

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

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

धन्यवाद!

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

+1

मुझे लगता है कि टैग "वर्गीकरण" और "प्रतिगमन" पारस्परिक रूप से अनन्य है। यह या तो "वर्गीकरण" है, या यह "प्रतिगमन" है। यह दोनों नहीं हो सकता है। –

उत्तर

1

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

यदि आपके पास कोई वर्गीकृत डेटा नहीं है, या बहुत अधिक नहीं है, तो असुरक्षित सीखने वाले एल्गोरिदम का शोध करना शुरू करें।

8

लगता है जैसे आप Support Vector Machines के लिए उम्मीदवार हैं।

libsvm पर जाएं। "एसवीएम वर्गीकरण के लिए एक व्यावहारिक गाइड" पढ़ें, जिसे वे वितरित करते हैं, और कम है। उचित कर्नेल पैरामीटर के लिए खोज करने के लिए

dv1 1:iv1_1 2:iv1_2 3:iv1_3 4:iv1_4 ... 
dv2 1:iv2_1 2:iv2_2 3:iv2_3 4:iv2_4 ... 

उनके SVM-पैमाने उपयोगिता के माध्यम से यह रन, और फिर उनके grid.py स्क्रिप्ट का उपयोग:

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

यदि libsvm आपको सटीकता प्राप्त नहीं कर सकता है, तो SVMlight पर कदम उठाने पर विचार करें। इससे निपटने के लिए केवल इतना मुश्किल है, और बहुत अधिक विकल्प।

Bishop's Pattern Recognition and Machine Learning संभवतः पहली टेक्स्टबुक है जो कि libsvm और SVMlight वास्तव में आपके डेटा के साथ क्या कर रहा है, इस बारे में विवरण देखने के लिए है।

+0

ग्रेट विचार, LIBSVM कमाल है। –

1

ऐसा लगता है कि किसी भी प्रकार के क्लासिफायर को इस समस्या के लिए काम करना चाहिए: उदाहरण के लिए सर्वश्रेष्ठ वर्ग (आपका आश्रित चर) ढूंढें (आपके ईवेंट)। एक साधारण प्रारंभिक बिंदु Naive Bayes वर्गीकरण हो सकता है।

1

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

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

1

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

1

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

1

मुझे विश्वास है कि आपकी समस्या regression समस्या है, वर्गीकरण समस्या नहीं है। मुख्य अंतर: वर्गीकरण में हम एक अलग चर के मूल्य को सीखने की कोशिश कर रहे हैं, जबकि प्रतिगमन में हम निरंतर एक के मूल्य को सीखने की कोशिश कर रहे हैं। शामिल तकनीकें समान हो सकती हैं, लेकिन विवरण अलग हैं। Linear Regression अधिकांश लोग पहले कोशिश करते हैं। रैखिक प्रतिगमन चाल नहीं करता है, तो कई अन्य रिग्रेशन तकनीकें हैं।

1

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

आपने यह भी बताया कि हाल ही में होने वाली घटनाओं को और अधिक महत्वपूर्ण होना चाहिए। यदि ऐसा है, तो आप हालिया घटना को उच्च और पुरानी घटना को कम कर सकते हैं। ध्यान दें कि घटना के महत्व को समय पर रैखिक रूप से accoding बढ़ने की जरूरत नहीं है। यदि यह तेजी से बढ़ता है तो यह अधिक समझ में आता है, ताकि आप यहां संख्याओं के साथ खेल सकें। या, यदि आपके पास प्रशिक्षण डेटा की कमी नहीं है, तो शायद आप बहुत पुराने डेटा को छोड़ने पर विचार कर सकते हैं।

युवक एफ की तरह, यह वर्गीकरण समस्या के बजाय एक प्रतिगमन समस्या की तरह दिखता है। इसलिए, आप एसवीआर (सपोर्ट वेक्टर रिग्रेशन) का प्रयास कर सकते हैं, जो एसवीएम (सपोर्ट वेक्टर मशीन) का रिग्रेशन संस्करण है।

कुछ अन्य सामान तुम कोशिश कर सकते हैं:

  1. प्ले कैसे आप अपने स्वतंत्र चर के मूल्य रेंज पैमाने के साथ चारों ओर। कहो, आमतौर पर [-1 ... 1] या [0 ... 1]। लेकिन आप यह देखने के लिए अन्य श्रेणियों को आजमा सकते हैं कि वे मदद करते हैं या नहीं। कभी-कभी वे करते हैं। ज्यादातर समय वे नहीं करते हैं।
  2. यदि आपको संदेह है कि निचले आयाम वाले "छुपा" फीचर वेक्टर हैं, तो एन < < 30 कहें और यह प्रकृति में गैर-रैखिक है, आपको गैर-रैखिक आयामी कमी की आवश्यकता होगी। आप कर्नेल पीसीए या हाल ही में, कई गुना मूर्तिकला पर पढ़ सकते हैं।
1

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

-Neural जाल
-SVMs
-Decision पेड़ (यह एक मेरे लिए अच्छी तरह से वास्तव में काम किया जब मैं एक ऐसी ही समस्या कर रहा था)
निर्णय के पेड़ के साथ -Boosting/स्टंप
बाकी -Anything !

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

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

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

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