Что такое хороший ресурс, который включает в себя сравнение плюсов и минусов различных классификаторов?


15

Какой самый лучший из двух классификаторов из коробки? Да, я думаю, это вопрос на миллион долларов, и да, я знаю теорему об отсутствии бесплатного обеда , и я также прочитал предыдущие вопросы:

Тем не менее, мне интересно читать больше на эту тему.

Что является хорошим источником информации, который включает общее сравнение характеристик, преимуществ и характеристик различных классификаторов?


+ пожалуйста, прости меня, что я не являюсь носителем английского языка :)
Dov

Ответы:


9

ESL , как уже упоминалось Питером Флом, является отличным предложением (обратите внимание , что моя ссылка на домашнюю страницу автора , где книга может быть получена в виде PDF-файла бесплатно). Позвольте мне добавить пару более конкретных вещей, чтобы искать в книге:

  • В таблице 10.1 (стр. 351) дана оценка авторами некоторых характеристик ядер нейронных сетей, SVM, деревьев, MARS и k-NN, которые, так или иначе, являются теми методами, которые авторы хотят включить в список «сторонних разработчиков». полка "методы.
  • В главе 10 рассматривается бустинг, которого я не нашел в списке методов в опросе, цитируемом ОП. Повышение градиента представляется одним из наиболее эффективных методов в ряде примеров.
  • Глава 9 рассматривает обобщенные аддитивные модели (GAM), которые добавляют к модели логистической регрессии (занимающей первое место в опросе ) гибкость нелинейных аддитивных эффектов предикторов. GAM будет не таким простым в использовании, как логистическая регрессия со всеми параметрами сглаживания, которые нужно выбирать, если бы не было хороших реализаций, таких как в пакете R R. mgcv .

Добавьте в книгу представление « Задачи машинного обучения для R», которое дает некоторое представление о том, что на самом деле могут делать многие пакеты машинного обучения, хотя реального сравнения нет. Для пользователей Python я думаю, что scikit.learn - это хорошее место для поиска. Степень «готового» или «готового» метода во многом определяется тем, насколько хорошо реализация имеет дело с автоматической адаптацией к ситуации с данными по сравнению с предоставлением детальной настройки пользователю. На мой взгляд, mgcv для R является хорошим примером, который делает подгонку достаточно хорошей обобщенной аддитивной модели действительно простой и практически без необходимости пользователя что-либо настраивать вручную.


8

Ресурсы, перечисленные другими, безусловно, полезны, но я добавлю следующее и добавлю следующее: «лучший» классификатор, вероятно, будет зависеть от контекста и данных. В ходе недавнего исследования различных двоичных классификаторов я обнаружил, что Boosted Regression Tree работает лучше, чем другие методы, к которым у меня был доступ. Ключевым для меня было изучение того, как использовать инструменты интеллектуального анализа данных Orange . У них есть отличная документация для начала изучения этих методов с вашими данными. Например, вот небольшой сценарий Python, который я написал для оценки качества нескольких классификаторов по множественным показателям точности с использованием перекрестной проверки в 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

С объектами Orange вы можете сделать гораздо больше, чтобы проанализировать производительность и провести сравнение. Я обнаружил, что этот пакет чрезвычайно полезен при написании небольшого количества кода для фактического применения методов к моим данным с согласованным API и абстракцией проблемы (т. Е. Мне не нужно было использовать шесть разных пакетов от шести разных авторов, каждый со своим собственным подход к разработке API и документации и т. д.).



4

Другие ресурсы, которые я нашел относительно этого (бесплатный PDF доступен):


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.