Pregunta

Estoy utilizando el ejemplo letter_recog.cpp OpenCV para experimentar con árboles al azar y otros clasificadores. Este ejemplo tiene implementaciones de seis clasificadores - árboles al azar, impulsar, MLP, kNN, ingenuo de Bayes y SVM. UCI conjunto de datos de reconocimiento de letra con 20.000 casos y 16 funciones se utiliza, que he dividido por la mitad para el entrenamiento y prueba. Tengo experiencia con SVM así que rápidamente puse su error de reconocimiento al 3,3%. Después de algunos experimentos lo que obtuve fue:

reconocimiento de las letras de la UCI:

  • RTrees - 5.3%
  • Boost - 13%
  • MLP - 7,9%
  • kNN (k = 3) - 6,5%
  • Bayes - 11,5%
  • SVM - 3,3%

parámetros utilizados:

  • RTrees - max_num_of_trees_in_the_forrest = 200, max_depth = 20, min_sample_count = 1

  • Boost - boost_type = VERDADERO, weak_count = 200, weight_trim_rate = 0,95, max_depth = 7

  • MLP - param = 0,001, max_iter = 300 (valores predeterminados Método = Backprop, - demasiado reducir la velocidad de experimento)

  • kNN (k = 3) - k = 3

  • Bayes - Ninguno

  • SVM - kernel RBF, C = 10, gamma = 0,01

Después de que utilicé mismos parámetros y probado en dígitos y MNIST conjuntos de datos mediante la extracción de gradiente cuenta primero (tamaño vector 200 elementos):

Dígitos:

  • RTrees - 5,1%
  • Boost - 23,4%
  • MLP - 4,3%
  • kNN (k = 3) - 7,3%
  • Bayes - 17,7%
  • SVM - 4,2%

MNIST:

  • RTrees - 1.4%
  • Boost - sin memoria
  • MLP - 1,0%
  • kNN (k = 3) - 1,2%
  • Bayes - 34.33%
  • SVM - 0,6%

Soy nuevo a todos los clasificadores, excepto SVM y kNN, para estos dos me puede decir que los resultados parecen estar bien. ¿Qué pasa con los demás? Me esperaba más de árboles al azar, en MNIST kNN da una mayor precisión, alguna idea de cómo lo consiguen más alto? Boost y Bayes dan muy poca precisión. Al final me gustaría utilizar estos clasificadores para hacer un sistema clasificador múltiple. Cualquier consejo?

¿Fue útil?

Solución

reducción de dimensionalidad

Otro procedimiento importante es comparar las tasas de error en la formación y la prueba de conjunto de datos para ver si está sobreajuste (debido a la "maldición de la dimensionalidad"). Por ejemplo, si su tasa de error en los datos de prueba es mucho más grande que el error en el conjunto de datos de entrenamiento, esto sería un indicador.
En este caso, puede probar las técnicas de reducción de dimensionalidad, como PCA o LDA.

Si está interesado, he escrito sobre PCA, LDA y algunas otras técnicas aquí: http://sebastianraschka.com/index .html # machine_learning y en mi repo GitHub aquí: https://github.com/rasbt/pattern_classification

Cruz de validación

También es posible que desee echar un vistazo a las técnicas de validación cruzada con el fin de evaluar el rendimiento de los clasificadores de una manera más objetiva

Otros consejos

Me esperaba más de árboles al azar

  • Con los bosques al azar, por lo general para N cuenta, sqrt (N) especiales se utiliza para la construcción de cada árbol de decisión. Dado que en su caso N = 20, puede probar con el ajuste de max_depth (el número de sub-cuenta para construir cada árbol de decisión) a 5.

  • En lugar de árboles de decisión, modelos lineales se han propuesto y evaluado como estimadores de bases de bosques aleatorios, en particular de regresión logística multinomial y Bayes ingenuo. Esto podría mejorar su precisión.

En MNIST kNN da una mayor precisión, alguna idea de cómo lo consiguen más alto?

  • Pruebe con un mayor valor de K (por ejemplo 5 o 7). Un valor más alto de K le daría una evidencia más de apoyo sobre la etiqueta de clase de un punto.
  • Usted podría correr PCA o el análisis discriminante lineal de Fisher antes de ejecutar k-vecino más cercano. En esto potencialmente podría deshacerse de las características correlacionadas al calcular las distancias entre los puntos, y por lo tanto sus k vecinos sería más robusto.
  • Prueba con diferentes valores de K para diferentes puntos en función de la variación en las distancias entre los K vecinos.
Licenciado bajo: CC-BY-SA con atribución
scroll top