सामान्य रूप से चुनने के लिए कौन सी मशीन क्लासिफायरियर चुनती है? [बन्द है]


207

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

मुझे कैसे पता चलेगा कि मुझे किस क्लासिफायर का उपयोग करना चाहिए?

  1. निर्णय वृक्ष
  2. SVM
  3. बायेसियन
  4. तंत्रिका नेटवर्क
  5. K- निकटतम पड़ोसी
  6. क्यू-लर्निंग
  7. जन्म प्रमेय
  8. मार्कोव निर्णय प्रक्रियाएं
  9. संवादी तंत्रिका नेटवर्क
  10. रैखिक प्रतिगमन या लॉजिस्टिक प्रतिगमन
  11. बूस्टिंग, बैगिंग, दासता
  12. बेतरतीब पहाड़ी चढ़ाई या नकली annealing
  13. ...

किन मामलों में इनमें से एक "प्राकृतिक" पहली पसंद है, और उस एक को चुनने के लिए क्या सिद्धांत हैं?

मेरे द्वारा खोजे जा रहे जवाबों के प्रकार (मैनिंग एट अल। इंट्रोडक्शन टू इंफॉर्मेशन रिट्रीवल बुक):

ए। यदि आपका डेटा लेबल किया गया है, लेकिन आपके पास केवल एक सीमित राशि है, तो आपको उच्च पूर्वाग्रह के साथ एक क्लासिफायरफ़ायर का उपयोग करना चाहिए (उदाहरण के लिए, बेव बेयर)

मैं यह अनुमान लगा रहा हूं क्योंकि उच्च-पूर्वाग्रह वाले क्लासिफायरियर में कम विचरण होगा, जो कि कम मात्रा में डेटा के कारण अच्छा है।

ख। यदि आपके पास एक टन डेटा है, तो क्लासिफायर वास्तव में इतना अधिक मायने नहीं रखता है, इसलिए आपको शायद केवल अच्छे स्केलेबिलिटी वाला क्लासिफायर चुनना चाहिए।

  1. अन्य दिशानिर्देश क्या हैं? यहां तक ​​कि जैसे उत्तर "यदि आपको अपने मॉडल को किसी ऊपरी प्रबंधन वाले व्यक्ति को समझाना होगा, तो शायद आपको निर्णय पेड़ का उपयोग करना चाहिए, क्योंकि निर्णय नियम काफी पारदर्शी हैं"। मैं कार्यान्वयन / पुस्तकालय मुद्दों के बारे में कम परवाह करता हूं, हालांकि।

  2. मानक बायेसियन क्लासिफायर के अलावा, कुछ अलग प्रश्न के लिए, टिप्पणी स्पैम पहचान (ईमेल स्पैम के विपरीत) के लिए 'मानक राज्य के अत्याधुनिक' तरीके हैं?


7
अपने "इस सवाल को पूछने के लिए सबसे अच्छी जगह" के जवाब में, आप भी आँकड़े .stackexchange.com
jxramos

जवाबों:


94

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

सबसे पहले, आपको अपनी समस्या की पहचान करने की आवश्यकता है। यह इस बात पर निर्भर करता है कि आपके पास किस तरह का डेटा है और आपका वांछित कार्य क्या है।

यदि आप हैं Predicting Category:

  • आपके पास Labeled Data
    • आपको अनुसरण करने Classification Approachऔर इसके एल्गोरिदम की आवश्यकता है
  • आपके पास नहीं है Labeled Data
    • आप के लिए जाने की जरूरत है Clustering Approach

यदि आप हैं Predicting Quantity:

  • आप के लिए जाने की जरूरत है Regression Approach

अन्यथा

  • आप के लिए जा सकते हैं Dimensionality Reduction Approach

ऊपर वर्णित प्रत्येक दृष्टिकोण के भीतर अलग-अलग एल्गोरिदम हैं। किसी विशेष एल्गोरिथ्म की पसंद डेटासेट के आकार पर निर्भर करती है।

स्रोत: http://scikit-learn.org/stable/tutorial/machine_learning_map/


60

क्रॉस सत्यापन का उपयोग करने वाला मॉडल चयन हो सकता है कि आपको क्या चाहिए।

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

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

पैरामीटर k का चयन कैसे करें आपके पास समय पर निर्भर करता है। कश्मीर के लिए सामान्य मान 3, 5, 10 या यहां तक ​​कि एन हैं, जहां एन आपके डेटा का आकार है (यह लीव-वन-आउट क्रॉस सत्यापन के समान है )। मुझे 5 या 10 पसंद हैं।

मॉडल चयन

मान लीजिए कि आपके पास प्रत्येक विधि के लिए 5 विधियाँ (ANN, SVM, KNN, आदि) और 10 पैरामीटर संयोजन हैं (विधि के आधार पर)। आपको बस प्रत्येक विधि और पैरामीटर संयोजन (5 * 10 = 50) के लिए क्रॉस सत्यापन चलाना होगा और सबसे अच्छा मॉडल, विधि और पैरामीटर का चयन करना होगा। फिर आप अपने सभी डेटा पर सर्वोत्तम विधि और मापदंडों के साथ फिर से प्रशिक्षित करते हैं और आपके पास अपना अंतिम मॉडल होता है।

कुछ और बातें कहनी हैं। यदि, उदाहरण के लिए, आप प्रत्येक के लिए बहुत सारे तरीकों और पैरामीटर संयोजनों का उपयोग करते हैं, तो यह बहुत संभावना है कि आप ओवरफिट करेंगे। इस तरह के मामलों में, आपको नेस्टेड क्रॉस सत्यापन का उपयोग करना होगा ।

नेस्टेड क्रॉस सत्यापन

में नेस्टेड पार सत्यापन , आप मॉडल चयन एल्गोरिथ्म पर पार सत्यापन प्रदर्शन करते हैं।

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

बेशक, इन विधियों और अन्य चीजों के कई रूप हैं, जिनका मैंने उल्लेख नहीं किया है। यदि आपको इन विषयों के बारे में कुछ प्रकाशनों के लिए इन लुक के बारे में अधिक जानकारी चाहिए।


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

45

" ओपनसीवी " पुस्तक में 462-463 पृष्ठों पर इस पर दो महान पृष्ठ हैं । "विवेकशील" शब्द के लिए अमेज़ॅन पूर्वावलोकन की खोज करना (शायद Google पुस्तकें भी) आपको सवालों के पन्नों को देखने देगा। ये दो पृष्ठ इस पुस्तक में मुझे मिले सबसे बड़े रत्न हैं।

संक्षेप में:

  • बूस्टिंग - अक्सर प्रभावी जब बड़ी मात्रा में प्रशिक्षण डेटा उपलब्ध होता है।

  • यादृच्छिक पेड़ - अक्सर बहुत प्रभावी होते हैं और प्रतिगमन भी कर सकते हैं ।

  • K- निकटतम पड़ोसी - सबसे सरल चीज जो आप कर सकते हैं, अक्सर प्रभावी लेकिन धीमी गति से और बहुत सारी स्मृति की आवश्यकता होती है ।

  • तंत्रिका नेटवर्क - प्रशिक्षण के लिए धीमा लेकिन चलाने के लिए बहुत तेज , अक्षर पहचान के लिए अभी भी इष्टतम प्रदर्शन ।

  • एसवीएम - सीमित डेटा के साथ सबसे अच्छा है , लेकिन केवल बड़े डेटा सेट उपलब्ध होने पर बूस्ट या यादृच्छिक पेड़ों के खिलाफ हार


39

जिन चीजों को चुनने के लिए आप एल्गोरिथम का उपयोग करने पर विचार कर सकते हैं उनमें शामिल हैं:

  1. क्या आपको वृद्धिशील रूप से प्रशिक्षित करने की आवश्यकता है (बैच के विपरीत)?

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

  2. क्या आपका डेटा केवल श्रेणीबद्ध या संख्यात्मक या केवल दोनों से बना है ?

    मुझे लगता है कि बेयर्सियन श्रेणीबद्ध / द्विपद डेटा के साथ सबसे अच्छा काम करता है। निर्णय के पेड़ संख्यात्मक मूल्यों की भविष्यवाणी नहीं कर सकते।

  3. क्या आपको या आपके दर्शकों को यह समझने की जरूरत है कि क्लासिफायर कैसे काम करता है?

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

  4. आपको कितनी वर्गीकरण गति की आवश्यकता है?

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

  5. जटिलता

    तंत्रिका जाल और एसवीएम जटिल गैर-रैखिक वर्गीकरण को संभाल सकते हैं।


2
इस पुस्तक अध्याय जटिलता बारे में अधिक जानकारी उपलब्ध करा सकता है nlp.stanford.edu/IR-book/html/htmledition/...
supermus

31

जैसा कि प्रोफेसर एंड्रयू एनजी अक्सर कहते हैं: हमेशा एक मोटा, गंदा एल्गोरिथ्म लागू करके शुरू करते हैं , और फिर इसे पुन: परिष्कृत करते हैं

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

एक और अच्छा स्टार्टर एल्गोरिदम रैंडम फ़ॉरेस्ट (निर्णय पेड़ों से बना) है, यह किसी भी संख्या में आयामों के लिए अत्यधिक स्केलेबल है और आम तौर पर काफी स्वीकार्य प्रदर्शन हैं। फिर अंत में, आनुवंशिक एल्गोरिदम हैं , जो किसी भी आयाम और डेटा के न्यूनतम ज्ञान के साथ किसी भी डेटा के लिए अच्छी तरह से बड़े पैमाने पर हैं, सबसे कम से कम और सरलतम कार्यान्वयन माइक्रोबियल आनुवंशिक एल्गोरिथ्म (सी कोड की केवल एक पंक्ति!) इनमैन हार्वे द्वारा किया जाता है। 1996), और एक सबसे जटिल CMA-ES और MOGA / e-MOEA है।

और याद रखें कि अक्सर, आप वास्तव में यह नहीं जान सकते कि असली के लिए एल्गोरिदम आज़माने से पहले आपके डेटा पर सबसे अच्छा काम क्या होगा।

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


11

सैम रोविस कहता था कि आपको कुछ भी करने से पहले भोले बेज़ , लॉजिस्टिक रिग्रेशन, के-निकटतम पड़ोसी और फिशर के रैखिक भेदभाव का प्रयास करना चाहिए।


8

इस पर मेरा कहना है कि आप हमेशा अपने डेटा की कुछ समझ पाने के लिए पहले बेसिक क्लासिफायर चलाएं। अधिक बार नहीं (कम से कम मेरे अनुभव में) वे काफी अच्छे रहे हैं।

इसलिए, यदि आपने डेटा की देखरेख की है, तो एक नैवे बेस क्लासिफायर ट्रेन करें। यदि आपके पास असुरक्षित डेटा है, तो आप k- साधन क्लस्टरिंग का प्रयास कर सकते हैं।

एक अन्य संसाधन वीडियो स्टैनफोर्ड मशीन लर्निंग की श्रृंखला के व्याख्यान वीडियो में से एक है , जिसे मैंने कुछ समय पहले देखा था। वीडियो 4 या 5 में, मुझे लगता है, व्याख्याता कुछ सामान्य रूप से स्वीकार किए जाने वाले सम्मेलनों पर चर्चा करता है, जब प्रशिक्षकों को प्रशिक्षण, लाभ / ट्रेडऑफ़ आदि प्रदान करते हैं।


1
"नो फ्री लंच" प्रमेय में कहा गया है कि कोई भी मॉडल नहीं है जो हर समस्या के लिए सबसे अच्छा काम करता है। एक समस्या के लिए एक महान मॉडल की धारणा एक और समस्या के लिए नहीं हो सकती है, इसलिए मशीन मॉडल में कई मॉडल आज़माना और किसी विशेष समस्या के लिए सबसे अच्छा काम करने वाले को ढूंढना आम है।
msarafzadeh

5

आपको हमेशा अनुमान बनाम भविष्यवाणी व्यापार-बंद को ध्यान में रखना चाहिए ।

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


3

एल्गोरिथम का चयन परिदृश्य और डेटा सेट के प्रकार और आकार पर निर्भर करता है। कई अन्य कारक हैं।

यह बुनियादी मशीन सीखने के लिए एक संक्षिप्त धोखा शीट है।

यहां आप अपने परिदृश्य को एक साधारण धोखा पत्र के साथ मान्य कर सकते हैं


-2

सबसे पहले, यह निर्भर करता है कि आप किस प्रकार की समस्या से निपट रहे हैं चाहे वह वर्गीकरण हो या प्रतिगमन। फिर अपना मॉडल समझदारी से चुनें। यह एक विशेष मॉडल पर निर्भर करता है एक विशिष्ट मॉडल अन्य मॉडलों से बेहतर प्रदर्शन करता है। मान लीजिए कि आप sklearn लाइब्रेरी से वाइन_डैटसेट पर काम कर रहे हैं और पहले आपने कर्नेल svm के साथ डेटा को रेखीय के साथ प्रशिक्षित करने की कोशिश की और आपको किसी प्रकार की सटीकता प्राप्त हुई और फिर आपको लगता है कि यह संतोषजनक नहीं है, तो आपने DecisionTreeClassifier () के साथ अपने डेटा को प्रशिक्षित करने की कोशिश की और फिर आपने RandomForestClassifier () के साथ प्रयास किया। उसके बाद जो भी सटीकता बेहतर होगी या आप कह सकते हैं कि आपके डेटा को फिट करता है, आप यह निष्कर्ष निकाल सकते हैं। परीक्षण के लिए मॉडल बदलते रहने के दौरान आपको बहुत छोटे वाक्यविन्यास अंतर मिलेंगे। इसलिए सभी अच्छे से समझें और समस्या को अच्छी तरह से समझें।


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