16 votos

¿Cuál es un buen recurso que incluya una comparación de los pros y los contras de los diferentes clasificadores?

¿Cuál es el mejor clasificador de 2 clases listo para usar? Sí, supongo que esa es la pregunta del millón, y sí, soy consciente de la no hay teorema del almuerzo gratis Y también he leído las preguntas anteriores:

Aun así, me interesa leer más sobre el tema.

¿Cuál es una buena fuente de información que incluya una comparación general de las características, la ventaja y los rasgos de los diferentes clasificadores?

0 votos

+ por favor, perdóname que no soy un hablante nativo de inglés :)

10voto

Nathan Long Puntos 30303

El ESL Como ya mencionó Peter Flom, es una excelente sugerencia (nótese que mi enlace es a la página web del autor, donde se puede obtener el libro en formato pdf de forma gratuita). Permítanme añadir un par de cosas más específicas que hay que buscar en el libro:

  • La tabla 10.1 (página 351) ofrece la evaluación de los autores de ciertas características de los núcleos de redes neuronales, SVM, árboles, MARS y k-NN, que de alguna manera parecen ser los métodos que los autores quieren incluir en una lista de métodos "listos para usar".
  • En el capítulo 10 se trata el boosting, que he encontrado a faltar en la lista de métodos del encuesta citado por el OP. El refuerzo de gradiente parece ser uno de los métodos con mejor rendimiento en varios ejemplos.
  • En el capítulo 9 se tratan los modelos aditivos generalizados (GAM), que se suman al modelo de regresión logística (mejor clasificado en el encuesta ) la flexibilidad de los efectos aditivos no lineales de los predictores. Los GAM no serían tan fáciles de usar como la regresión logística con todos los parámetros de suavización que hay que elegir si no fuera por las buenas implementaciones como la del paquete R mgcv .

Añade al libro el Vista de tareas de aprendizaje automático para R, que da una idea de lo que pueden hacer realmente los numerosos paquetes de aprendizaje automático, aunque no hay una comparación real. Para los usuarios de Python imagino que scikit.learn es un buen lugar para buscar. El grado de "out-of-the-box" o "off-the-shelf" de un método está muy determinado por lo bien que la implementación se ocupa de la adaptación automática a la situación de los datos frente a dejar el ajuste detallado al usuario. En mi opinión, mgcv para R es un buen ejemplo que hace que el ajuste de un modelo aditivo generalizado razonablemente bueno sea realmente fácil y básicamente sin necesidad de que el usuario "ajuste a mano" nada.

7voto

christy Puntos 51

Los recursos enumerados por otros son ciertamente útiles, pero voy a intervenir y añadir lo siguiente: el "mejor" clasificador probablemente sea específico para el contexto y los datos. En una reciente incursión en la evaluación de diferentes clasificadores binarios, encontré que un árbol de regresión reforzado funcionaba mejor que otros métodos a los que tenía acceso. La clave para mí fue aprender a utilizar Naranja herramientas de extracción de datos. Tienen algunas gran documentación para empezar a explorar estos métodos con su datos. Por ejemplo, aquí hay un breve script de Python que escribí para evaluar la calidad de múltiples clasificadores a través de múltiples medidas de precisión utilizando la validación cruzada k-fold.

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)

Cuando ejecuto este código en mis datos obtengo resultados como

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

Hay mucho más que se puede hacer con los objetos Orange para introspeccionar el rendimiento y hacer comparaciones. Encontré que este paquete era extremadamente útil para escribir una pequeña cantidad de código para aplicar realmente los métodos a mis datos con una API consistente y una abstracción del problema (es decir, no necesité usar seis paquetes diferentes de seis autores diferentes, cada uno con su propio enfoque de diseño y documentación de la API, etc.).

4voto

Zizzencs Puntos 1358

El libro Los elementos del aprendizaje estadístico tiene mucha información al respecto.

0 votos

statweb.stanford.edu/~tibs/ElemStatLearn Allí puede encontrar una versión en línea del libro.

4voto

halr9000 Puntos 3012

Otros recursos que encontré al respecto (PDF gratuito disponible):

1voto

Miroslav Sabo Puntos 1548

Según este exhaustivo estudio reciente (evaluación de 179 clasificadores en 121 conjuntos de datos), los mejores clasificadores son los bosques aleatorios, seguidos de las máquinas de vectores de apoyo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X