가장 뛰어난 2 급 분류기는 무엇입니까? 예, 그것은 백만 달러짜리 질문이라고 생각합니다. 그리고 무료 점심 식사 정리 를 알고 있습니다. 그리고 이전 질문도 읽었습니다.
아직도, 나는 그 주제에 대해 더 많은 것을 읽고 싶습니다.
다른 분류기의 특징, 장점 및 특징에 대한 일반적인 비교를 포함하는 좋은 정보원은 무엇입니까?
가장 뛰어난 2 급 분류기는 무엇입니까? 예, 그것은 백만 달러짜리 질문이라고 생각합니다. 그리고 무료 점심 식사 정리 를 알고 있습니다. 그리고 이전 질문도 읽었습니다.
아직도, 나는 그 주제에 대해 더 많은 것을 읽고 싶습니다.
다른 분류기의 특징, 장점 및 특징에 대한 일반적인 비교를 포함하는 좋은 정보원은 무엇입니까?
답변:
ESL 이미 피터 Flom에 의해 언급은, (내 링크 책이 무료로 PDF 파일로 얻을 수있는 저자의 홈페이지 인 것이 주) 좋은 제안입니다. 이 책에서 살펴볼 몇 가지 더 구체적인 사항을 추가하겠습니다.
R에 대한 Machine Learning Task View ( 책 학습)를 추가하면 실제 비교는 없지만 많은 기계 학습 패키지가 실제로 수행 할 수있는 작업에 대한 인상을줍니다. 파이썬 사용자에게는 scikit.learn 이보기 좋은 곳 이라고 생각합니다 . 메소드의 "즉시"또는 "기성품"의 양은 구현이 데이터 상황에 대한 자동 적응을 처리하고 사용자에게 세부적인 튜닝을 유지하는 정도에 따라 결정됩니다. 내 생각에, R의 mgcv는 사용자가 무엇이든 "수동 조정"할 필요없이 합리적으로 좋은 일반 첨가제 모델의 피팅을 실제로 쉽고 기본적으로 만드는 좋은 예입니다.
다른 사람들이 나열한 리소스는 모두 유용하지만 다음과 같이 추가하여 설명하겠습니다. "최상의"분류기는 상황 및 데이터에 따라 다를 수 있습니다. 최근에 다른 이진 분류자를 평가하기 위해 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 디자인 및 문서 등에 대한 접근).
이 책은 통계 학습의 요소는 이에 대한 많은 정보를 제공합니다.
이것에 관해 내가 찾은 기타 자료 (무료 PDF 제공) :
에 따르면 이 철저한 최근의 연구 (121 개 데이터 세트에 179 개 분류의 평가), 최적의 분류는 지원 벡터 기계 다음에 임의의 숲입니다.