¿Por qué svm no es tan bueno como el árbol de decisión en los mismos datos?

9

Soy nuevo en el aprendizaje automático y trato de usar scikit-learn (sklearn) para tratar un problema de clasificación. Tanto DecisionTree como SVM pueden entrenar a un clasificador para este problema.

Utilizo sklearn.ensemble.RandomForestClassifiery sklearn.svm.SVCpara ajustar los mismos datos de entrenamiento (alrededor de 500,000 entradas con 50 funciones por entrada). El RandomForestClassifier sale con un clasificador en aproximadamente un minuto. El SVC usa más de 24 horas y sigue funcionando.

¿Por qué el SVC funciona tan ineficientemente? ¿El conjunto de datos es demasiado grande para SVC ? ¿ SVC es inadecuado para tal problema?

Java Xu
fuente

Respuestas:

13

Las posibilidades incluyen el uso de un núcleo inapropiado (por ejemplo, un núcleo lineal para un problema no lineal), una mala elección del núcleo y los hiperparámetros de regularización. Buena selección del modelo (la elección del kernel y el ajuste de hiperparámetros es la clave para obtener un buen rendimiento de los SVM, solo se puede esperar que den buenos resultados cuando se usan correctamente).

Los SVM a menudo tardan mucho tiempo en entrenarse, esto es especialmente cierto cuando la elección del núcleo y particularmente el parámetro de regularización significa que casi todos los datos terminan como vectores de soporte (la escasez de SVM es un subproducto útil, nada más).

Por último, los teoremas de no almuerzo gratis dicen que no hay superioridad a priori para ningún sistema clasificador sobre los demás, por lo que el mejor clasificador para una tarea en particular depende de la tarea. Sin embargo, hay una teoría más convincente para la SVM que sugiere que es probable que sea una mejor opción que muchos otros enfoques para muchos problemas.

Dikran Marsupial
fuente
2
1. ¿Cómo sé si un problema es lineal o no? De acuerdo con los datos de entrenamiento? 2. ¿Podría recomendar algunos materiales sobre "cómo hacer una buena elección del núcleo y ajustar el hiperparámetro"?
Java Xu
En general, no es posible saber con certeza que un problema es lineal, pero los clasificadores no lineales que superan constantemente a los no lineales es una clara indicación de que es una tarea no lineal.
Dikran Marsupial
Para ajustar el kernel y los parámetros de regularización, la validación cruzada es un enfoque razonable, ya sea mediante una búsqueda de cuadrícula o algún método de optimización numérica (uso Nelder Mead simplex). Para los SVM, el "límite de tramo" proporciona una aproximación útil al error de validación cruzada de dejar-fuera. Tenga en cuenta que debe usar algo como validación cruzada anidada si también desea una estimación de rendimiento imparcial (vea las respuestas a otras preguntas que le di).
Dikran Marsupial
1
500k puntos de datos es un problema lo suficientemente grande como para que los SVM del kernel tarden un tiempo en entrenarse. Vale la pena probar LinearSVM, que solo admite un clasificador lineal pero se ejecuta mucho más rápido, o un clasificador SGD , que puede ser aún más rápido. Si eso no funciona bien, podría intentar usar la aproximación del núcleo , que le permite usar un clasificador lineal para aproximar uno no lineal. Dicho esto, los bosques aleatorios también son un buen algoritmo y pueden ser los mejores para sus datos.
Dougal
18

Los árboles de decisión y los bosques aleatorios son en realidad muy buenos clasificadores. Si bien las SVM (Support Vector Machines) se consideran más complejas, en realidad no significa que tengan un mejor rendimiento.

El documento "Una comparación empírica de algoritmos de aprendizaje supervisados" por Rich Caruana comparó 10 clasificadores binarios diferentes, SVM, redes neuronales, KNN, regresión logística, naive bayes, bosques aleatorios, árboles de decisión, árboles de decisión embolsados, árboles de decisión potenciados y decisión Bootstrapped Árboles en once conjuntos de datos diferentes y compararon los resultados en 8 métricas de rendimiento diferentes.

Descubrieron que los árboles de decisión impulsados ​​llegaron primero con bosques aleatorios, luego los árboles de decisión embolsados ​​y luego SVM

Los resultados también dependerán de cuántas clases está clasificando realmente.

RMcG
fuente
5

"si un problema es lineal o no" En un problema de clasificación binaria, si el conjunto de datos puede estar separado por un hiperplano, es un problema lineal.

Si el conjunto de datos no es separable linealmente, mientras intenta un clasificador lineal para encontrar un hiperplano que no existe en absoluto, el algoritmo puede parecer que se ejecuta para siempre.

Una sugerencia: puede probar una pequeña porción de sus datos y probar estos algoritmos para ver si funciona en un pequeño conjunto de datos. Luego aumente el conjunto de datos para verificar cuándo ocurre este problema.

Shusen Liu
fuente