Trataré de responder esta pregunta con una combinación de evidencia publicada, experiencia personal y especulación.
A) Evidencia publicada.
El único documento que conozco que ayuda a responder la pregunta es Delgado et al 2014: ¿necesitamos cientos de clasificadores para resolver problemas de clasificación del mundo real? - JMLR que ejecuta cientos de algoritmos e implementaciones diferentes en 121 conjuntos de datos para UCI. Encuentran que, aunque RBF SVM no es el "mejor" algoritmo (es un bosque aleatorio si no recuerdo mal), se encuentra entre los 3 primeros (o 5).
Si considera que su selección de conjuntos de datos es una "buena muestra" de problemas del mundo real, entonces SVM es definitivamente un algoritmo que debe probarse en nuevos problemas, ¡pero primero debe probar el bosque aleatorio!
Los límites para generalizar ese resultado son que los conjuntos de datos son casi todos altos y delgados (n >> p), no muy escasos, lo que supongo que debería ser más un problema para RF, y no muy grandes (tanto n como p).
Finalmente, aún con la evidencia publicada, recomiendo dos sitios que comparan diferentes implementaciones de bosques aleatorios:
B) Experiencia personal.
Creo que documentos como Delgado y todos muy importantes para la comunidad de aprendizaje automático, por lo que intenté replicar sus resultados en algunas condiciones diferentes. Ejecuté unos 15 algoritmos diferentes en más de 100 conjuntos de datos binarios (del conjunto de conjuntos de datos de Delgado). También creo que tuve más cuidado con la selección de hiperparámetros que con ellos.
Mis resultados son que el SVM fue el "mejor algoritmo" (rango medio 4.9). Mi opinión es que SVM pasó RF porque el conjunto de datos original contenía muchos problemas multiclase, que discutiré en la parte de especulación, debería ser un problema para SVM.
EDITAR (16 de junio):
Pero RF es mucho más rápido, y fue el segundo mejor algoritmo (rango medio 5.6) seguido de gbm (5.8), nnets (7.2), etc.). No probé la regresión logística estándar en estos problemas, pero probé una red elástica (L1 y L2 LR regularizada) pero no funcionó bien (rango medio 8.3) ~
Todavía no he terminado de analizar los resultados o escribir el documento, por lo que ni siquiera puedo señalar un informe técnico con los resultados. Con suerte, en algunas semanas puedo volver a editar esta respuesta y señalar un informe técnico con los resultados.
El documento está disponible en http://arxiv.org/abs/1606.00930 Resulta que después del análisis completo, RF y SVM son casi equivalentes en términos de tasa de error esperada y SVM es más rápido (¡para mi sorpresa!). Ya no soy tan enfático al recomendar RF (por motivos de velocidad).
Por lo tanto, mi experiencia personal es que, aunque SVM puede brindarle un poco más de precisión, casi siempre es una mejor opción usar un RF.
También para problemas más grandes, puede ser imposible usar un solucionador SVM por lotes (nunca he usado un solucionador SVM en línea como LASVM u otros).
Finalmente, solo utilicé la regresión logística en una situación. Estaba haciendo una ingeniería de características "intensa" en un problema de clasificación de imágenes (como - combinar o no dos descripciones diferentes de la imagen, y la dimensionalidad de las descripciones). Y utilicé la regresión logística para seleccionar entre las muchas alternativas (porque no hay búsqueda de hiperparámetros en LR). Una vez que nos instalamos en las mejores características (de acuerdo con LR), usamos un RF (seleccionando los mejores hiperparámetros) para obtener el clasificador final.
C) especulación
Nunca he trabajado seriamente en problemas multiclase, pero creo que SVM no es tan bueno con ellos. El problema no es el problema entre las soluciones uno contra uno o uno contra todos, sino que todas las implementaciones que conozco utilizarán los mismos hiperparámetros para todos los clasificadores (OVO u OVA). Seleccionar los hiperparámetros correctos para SVM es tan costoso que ninguna de las implementaciones disponibles que conozco hará una búsqueda de cada clasificador. Especulo que esto es un problema para SVM (¡pero no un problema para RF!).
Por otra parte, para problemas multiclase iría directamente a RF.
No tengo los privilegios suficientes para poder escribir comentarios, así que solo proporcionaré mis comentarios / observaciones aquí como respuesta.
En mi experiencia, los clasificadores de vectores de soporte (SVC) tienden a estar a la par o superan a los otros métodos cuando las clases binarias están equilibradas. Para las clases desequilibradas, el SVC tiende a funcionar mal.
No suelo lidiar con problemas multiclase, pero también he visto algunos buenos resultados con SVC para problemas multiclase.
Otra cosa que he notado es que la maldición de la dimensionalidad no parece afectar a SVC tanto como otras técnicas de modelado. En otras palabras, a medida que agrego más términos en el modelo, las otras técnicas comienzan a funcionar mal en el conjunto de prueba (o de espera) en comparación con el conjunto de entrenamiento. Pero no tanto cuando uso SVC. Debido a esta razón, si la parsimonia modelo no es su prioridad, entonces SVC puede ser una mejor opción, ya que puede incluir muchos términos sin el ajuste excesivo como los otros métodos.
Uno de los problemas que tengo con SVC es que no proporciona una medida implícita (como la probabilidad pronosticada) para poder ordenar por orden las observaciones. Podría usar Platt Scaling (implementado en el paquete sklearn.svm en Python), pero he visto algunas inconsistencias. (Puedo compartir los detalles si alguien está interesado).
No estoy seguro si esto realmente responde a su pregunta, pero estas son mis observaciones. Espero que ayude.
fuente
RF y (RBF) SVM tienen diferentes teorías detrás de ellos, pero suponiendo que tenga suficientes datos, funcionan de manera similar. Ambos pueden aprender funciones complejas y lidiar muy bien con variables ruidosas y poco informativas y valores atípicos.
Si está tratando de obtener los mejores resultados para algo como un kaggle, de todos modos ensamblaría múltiples modelos, incluidos RF y SVM.
En configuraciones que no son de Kaggle, puede considerar cuán difícil es implementar el modelo, ponerlo en producción, hacer una predicción, interpretar, explicarlo a un gerente, etc.
SVM (RBF lineal o altamente regularizado) sería definitivamente preferible si tiene una pequeña cantidad de datos o si se trata de un curso de dimensionalidad. Hay un par de razones para ello, una es que es mejor buscar un hiperplano de margen máximo en lugar de una serie de mejores divisiones en sus características, además, por lo general, no hay necesidad de un límite complejo porque en el espacio de alta dimensión habrá algún hiperplano que puede separar los datos de todos modos. Otro problema es que RF es más difícil de sintonizar (tiene más parámetros para sintonizar), por lo que necesita más datos.
Otro pensamiento, la validación cruzada puede ser muy barata y rápida para SVM, especialmente LOOCV. Dado que solo unas pocas muestras son vectores de soporte (no siempre), no tiene que volver a entrenar su clasificador en cada pliegue, pero solo cuando los datos que ahora están en el conjunto de prueba eran vectores de soporte antes. Esto también puede facilitar el aprendizaje en línea.
Además, podría ser más barato almacenar vectores de soporte que árboles completos.
A menudo es mejor hacer un modelo probabilístico que un clasificador. Entonces, haga el modelo primero y la decisión después. En ese caso, se preferirá la regresión logística. Y aún puede usar kernels y regularización para que se comporte como lo desea. Además, no usará RF para responder preguntas como: corregir por edad, estilo de vida, sexo y educación, ¿beber alcohol aumenta las posibilidades de teñir un ataque cardíaco?
Algún recurso adicional que encontré interesante: https://www.quora.com/What-are-the-advantages-of-different-classification-algorithms http://videolectures.net/solomon_caruana_wslmw/
fuente