एक अच्छा संसाधन क्या है जिसमें विभिन्न वर्गीकरणों के पेशेवरों और विपक्षों की तुलना शामिल है?


15

सबसे अच्छा आउट-ऑफ-द-बॉक्स 2-क्लास क्लासिफायरियर क्या है? हां, मुझे लगता है कि यह मिलियन डॉलर का सवाल है, और हां, मैं नो लंच प्रमेय से अवगत हूं , और मैंने पिछले प्रश्नों को भी पढ़ा है:

फिर भी, मुझे इस विषय पर अधिक पढ़ने में दिलचस्पी है।

जानकारी का एक अच्छा स्रोत क्या है जिसमें विभिन्न क्लासिफायर की विशेषताओं, लाभ और सुविधाओं की एक सामान्य तुलना शामिल है?


+ कृपया मुझे क्षमा करें कि मैं एक देशी अंग्रेजी वक्ता नहीं हूँ :)
डोव

जवाबों:


9

ईएसएल , के रूप में पहले से ही पीटर Flom से उल्लेख किया है, (है कि मेरे लिंक लेखक के होमपेज पर जहां पुस्तक मुक्त करने के लिए एक पीडीएफ फाइल के रूप में प्राप्त किया जा सकता है टिप्पणी) एक उत्कृष्ट सुझाव है। मुझे पुस्तक में देखने के लिए कुछ और विशिष्ट चीजें जोड़ने दें:

  • तालिका 10.1 (पृष्ठ 351) लेखकों को न्यूरल नेट्स, एसवीएम, ट्रीज़, मार्स और के-एनएन कर्नेल की कुछ विशेषताओं का आकलन देती है, जो किसी भी तरह से उन तरीकों को प्रकट करते हैं, जिन्हें लेखक "ऑफ-द-लिस्ट" में शामिल करना चाहते हैं। शेल्फ "तरीके।
  • अध्याय 10 बूस्टिंग को मानता है, जो मुझे ओपी द्वारा उद्धृत पोल में विधियों की सूची में गायब पाया गया। ग्रेडिंग बूस्टिंग कई उदाहरणों में बेहतर प्रदर्शन करने वाले तरीकों में से एक लगता है।
  • अध्याय 9 सामान्यीकृत एडिटिव मॉडल (GAMs) का इलाज करता है, जो भविष्यवाणियों के गैर-रैखिक एडिटिव प्रभाव के लचीलेपन को लॉजिस्टिक रिग्रेशन मॉडल ( पोल में शीर्ष स्थान पर रखा गया ) को जोड़ता है। GAM को लगभग सभी स्मूथिंग मापदंडों के साथ लॉजिस्टिक रिग्रेशन के रूप में उपयोग करना आसान नहीं होगा, जिन्हें आर पैकेज mgcv में से एक की तरह अच्छा कार्यान्वयन के लिए नहीं चुना जाना चाहिए ।

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


8

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

import orange, orngTest, orngStat, orngTree , orngEnsemble, orngSVM, orngLR
import numpy as np

data = orange.ExampleTable("performance_orange_2.tab")
bayes = orange.BayesLearner(name="Naive Bayes")
svm = orngSVM.SVMLearner(name="SVM")
tree = orngTree.TreeLearner(mForPruning=2, name="Regression Tree")
bs = orngEnsemble.BoostedLearner(tree, name="Boosted Tree")
bg = orngEnsemble.BaggedLearner(tree, name="Bagged Tree")
forest = orngEnsemble.RandomForestLearner(trees=100, name="Random Forest")
learners = [bayes, svm, tree, bs, bg, forest]
results = orngTest.crossValidation(learners, data, folds=10)
cm = orngStat.computeConfusionMatrices(results,
                             classIndex=data.domain.classVar.values.index('1'))

stat = (('ClsAcc', 'CA(results)'),
        ('Sens', 'sens(cm)'),
        ('Spec', 'spec(cm)'),
        ('AUC', 'AUC(results)'),
        ('Info', 'IS(results)'),
        ('Brier', 'BrierScore(results)'))
scores = [eval("orngStat." + s[1]) for s in stat]
print "Learner        " + "".join(["%-9s" % s[0] for s in stat])
print "-----------------------------------------------------------------"
for (i, L) in enumerate(learners):
    print "%-15s " % L.name + "".join(["%5.3f   " % s[i] for s in scores])

print "\n\n"
measure = orngEnsemble.MeasureAttribute_randomForests(trees=100)
print "Random Forest Variable Importance"
print "---------------------------------"
imps = measure.importances(data)
for i,imp in enumerate(imps):
    print "%-20s %6.2f" % (data.domain.attributes[i].name, imp)

print '\n\n'
print 'Predictions on new data...'
bs_classifier = bs(data)
new_data = orange.ExampleTable('performance_orange_new.tab')
for obs in new_data:
    print bs_classifier(obs, orange.GetBoth)

जब मैं अपने डेटा पर इस कोड को चलाता हूं तो मुझे आउटपुट मिलता है

In [1]: %run binary_predict.py
Learner        ClsAcc   Sens     Spec     AUC      Info     Brier
-----------------------------------------------------------------
Naive Bayes     0.556   0.444   0.643   0.756   0.516   0.613
SVM             0.611   0.667   0.714   0.851   0.264   0.582
Regression Tree 0.736   0.778   0.786   0.836   0.945   0.527
Boosted Tree    0.778   0.778   0.857   0.911   1.074   0.444
Bagged Tree     0.653   0.667   0.786   0.816   0.564   0.547
Random Forest   0.736   0.667   0.929   0.940   0.455   0.512


Random Forest Variable Importance
---------------------------------
Mileage            2.34
Trade_Area_QI      2.82
Site_Score         8.76

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



4

अन्य संसाधन जो मुझे इस बारे में मिले (मुफ्त पीडीएफ उपलब्ध):


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