다른 분류 자의 장단점을 비교하는 좋은 자료는 무엇입니까?


15

가장 뛰어난 2 급 분류기는 무엇입니까? 예, 그것은 백만 달러짜리 질문이라고 생각합니다. 그리고 무료 점심 식사 정리 를 알고 있습니다. 그리고 이전 질문도 읽었습니다.

아직도, 나는 그 주제에 대해 더 많은 것을 읽고 싶습니다.

다른 분류기의 특징, 장점 및 특징에 대한 일반적인 비교를 포함하는 좋은 정보원은 무엇입니까?


+ 나는 영어 원어민이 아님을 용서해주십시오 :)
Dov

답변:


9

ESL 이미 피터 Flom에 의해 언급은, (내 링크 책이 무료로 PDF 파일로 얻을 수있는 저자의 홈페이지 인 것이 주) 좋은 제안입니다. 이 책에서 살펴볼 몇 가지 더 구체적인 사항을 추가하겠습니다.

  • 표 10.1 (353 페이지)은 저자가 신경망, SVM, 나무, MARS 및 k-NN 커널의 특정 특성에 대한 평가를 제공합니다. 선반 "방법.
  • 10 장은 부스팅을 다루며 OP에서 인용 한 설문 조사 의 방법 목록에서 누락 된 것으로 나타났습니다 . 그라디언트 부스팅은 많은 예제에서 더 나은 성능을 발휘하는 방법 중 하나 인 것 같습니다.
  • 9 장에서는 로지스틱 회귀 모델 ( 여론 조사 에서 최상위 순위)에 예측 변수의 비선형 추가 효과의 유연성 을 추가하는 GAM (Generalized Additive Model)을 처리합니다 . GAM은 R 패키지 mgcv 와 같은 훌륭한 구현에 적합하지 않은 경우 선택해야하는 모든 스무딩 매개 변수를 사용하여 로지스틱 회귀만큼 사용하기가 쉽지 않습니다 .

R에 대한 Machine Learning Task View (학습)를 추가하면 실제 비교는 없지만 많은 기계 학습 패키지가 실제로 수행 할 수있는 작업에 대한 인상을줍니다. 파이썬 사용자에게는 scikit.learn 이보기 좋은 곳 이라고 생각합니다 . 메소드의 "즉시"또는 "기성품"의 양은 구현이 데이터 상황에 대한 자동 적응을 처리하고 사용자에게 세부적인 튜닝을 유지하는 정도에 따라 결정됩니다. 내 생각에, R의 mgcv는 사용자가 무엇이든 "수동 조정"할 필요없이 합리적으로 좋은 일반 첨가제 모델의 피팅을 실제로 쉽고 기본적으로 만드는 좋은 예입니다.


8

다른 사람들이 나열한 리소스는 모두 유용하지만 다음과 같이 추가하여 설명하겠습니다. "최상의"분류기는 상황 및 데이터에 따라 다를 수 있습니다. 최근에 다른 이진 분류자를 평가하기 위해 Boosted Regression Tree가 내가 액세스 한 다른 방법보다 일관되게 더 잘 작동한다는 것을 알았습니다. 저에게 가장 중요한 것은 Orange 데이터 마이닝 도구 를 사용하는 방법을 배우는 것이 었습니다 . 그들은 몇 가지가 큰 문서는 이러한 방법을 탐구에 시작하는 당신의 데이터입니다. 예를 들어, 다음은 k-fold cross validation을 사용하여 여러 정확도 측정에서 여러 분류기의 품질을 평가하기 위해 작성한 짧은 Python 스크립트입니다.

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

성능을 검사하고 비교하기 위해 Orange 객체로 더 많은 작업을 수행 할 수 있습니다. 이 패키지는 일관된 API 및 문제 추상화로 데이터에 메소드를 실제로 적용하기 위해 소량의 코드를 작성하는 데 매우 도움이된다는 것을 발견했습니다. API 디자인 및 문서 등에 대한 접근).




당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.