Farklı sınıflandırıcıların artılarını ve eksilerini karşılaştırmayı içeren iyi bir kaynak nedir?


15

Kutudan çıktığı en iyi 2 sınıf sınıflandırıcı nedir? Evet, sanırım bu milyon dolarlık bir soru ve evet, ücretsiz öğle yemeği teoreminin farkında değilim ve önceki soruları da okudum:

Yine de konuyla ilgili daha fazla okumak istiyorum.

Farklı sınıflandırıcıların özellikleri, avantajları ve özelliklerinin genel bir karşılaştırmasını içeren iyi bir bilgi kaynağı nedir?


+ Lütfen ben anadili İngilizce olmadığımı affet :)
Dov

Yanıtlar:


9

ESL olarak zaten Peter FLOM bahsettiği, (benim bağlantı kitabın ücretsiz olarak pdf-dosyası olarak elde edilebilir yazarın ana sayfasına olduğunu not) mükemmel bir öneridir. Kitapta aramak için birkaç spesifik şey daha ekleyeyim:

  • Tablo 10.1 (sayfa 351) yazarlara, Sinir Ağları, SVM, Ağaçlar, MARS ve k-NN çekirdeklerinin belirli özelliklerinin değerlendirilmesini vermektedir. raf "yöntemleri.
  • Bölüm 10 , OP tarafından belirtilen ankette yöntemler listesinde eksik bulduğum güçlendirmeyi ele alıyor . Gradyan yükseltme, bazı örneklerde daha iyi performans gösteren yöntemlerden biri gibi görünmektedir.
  • Bölüm 9, lojistik regresyon modeline ( ankette en üst sırada yer almaktadır ) öngörücülerin doğrusal olmayan katkı etkilerinin esnekliğini ekleyen genelleştirilmiş katkı modellerini (GAM'ler) ele almaktadır. GAM'lerin kullanımı, R paket mgcv'deki gibi güzel uygulamalar için olmasaydı seçilmesi gereken tüm yumuşatma parametreleriyle lojistik regresyon kadar kolay olmayacaktır .

Gerçek bir karşılaştırma olmasa da, birçok makine öğrenimi paketinin gerçekte neler yapabileceğine dair bir izlenim veren R için Makine Öğrenmesi Görev Görünümü kitabını ekleyin . Python kullanıcıları için scikit.learn'in bakmak için iyi bir yer olduğunu hayal ediyorum . Bir "kullanıma hazır" veya "kullanıma hazır" bir yöntemin ne kadar olduğu, uygulamanın ayrıntılı durum ayarını kullanıcıya bırakmaya karşı veri durumuna otomatik adaptasyon ile ne kadar iyi başa çıktığı ile belirlenir. Benim düşünceme göre, R için mgcv, kullanıcının iyi bir şey yapmasına gerek kalmadan, oldukça iyi bir genelleştirilmiş katkı modeli kurmayı gerçekten kolay ve temel olarak yapan iyi bir örnektir.


8

Başkaları tarafından listelenen kaynakların hepsi kesinlikle yararlı, ama ben chime ve aşağıdakileri ekleyeceğim: "en iyi" sınıflandırıcı bağlam ve verilere özgü olması muhtemeldir. Son zamanlarda farklı ikili sınıflandırıcıları değerlendirmeye yönelik bir araştırmada, erişebildiğim diğer yöntemlerden sürekli olarak daha iyi çalışmak için Artırılmış Regresyon Ağacı buldum. Benim için en önemli şey, Orange veri madenciliği araçlarının nasıl kullanılacağını öğrenmekti . Bazı sahip büyük bir dokümantasyon ile bu yöntemleri keşfetmeye başlamak için sizin veri. Örneğin, k katlama çapraz doğrulaması kullanarak çoklu doğruluk ölçümlerinde çoklu sınıflandırıcıların kalitesini değerlendirmek için yazdığım kısa bir Python betiği.

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)

Verilerimde bu kodu çalıştırdığımda çıktı alıyorum

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

Performansı geliştirmek ve karşılaştırmalar yapmak için Turuncu nesnelerle yapabileceğiniz çok daha fazla şey var. Bu paketi, tutarlı bir API ve sorun soyutlama ile verilerime yöntemler uygulamak için az miktarda kod yazarken son derece yararlı buldum (yani, her biri kendi altı farklı yazardan altı farklı paket kullanmama gerek yoktu API tasarımı ve dokümantasyonuna yaklaşım vb.).




Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.