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.RandomForestClassifier
y sklearn.svm.SVC
para 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?
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.
fuente
"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.
fuente