¿Cuándo usamos SVM y cuándo usamos redes neuronales artificiales?

Es difícil responder eso sin conocer su problema y probar los clasificadores en sus datos. Ambos se pueden usar para clasificaciones de varias clases.

Utilicé SVM y NNet en varios datos y concluí que ambos pueden hacer el trabajo. Sin embargo, en mi caso encontré que:

– La capacitación de NNet puede llevar tiempo, pero en la fase de clasificación es mucho más rápido que SVM (ya que los pesos están configurados y la red solo está haciendo cálculos simples). En mi caso, la red entrenada fue más de 10 veces más rápida que SVM.

– SVM tuvo un mejor rendimiento (esto podría ser diferente según el problema). En mi caso produjo unos pocos por ciento mejores resultados. Y fue más estable (con datos que tienen estadísticas ligeramente diferentes produciría mejores resultados).

– En el caso de SVM, el clasificador entrenado ocupa un espacio mucho más grande tanto en el disco (si de alguna manera lo serializa en un archivo) como en la memoria. Más datos de entrenamiento aumentarían el tamaño del clasificador. Sin embargo, en el caso de NNet, el tamaño de los datos depende solo del tamaño de la red (y normalmente es mucho más pequeño que los datos de SVM).

Tenga en cuenta que utilicé la biblioteca de aprendizaje automático Shark (C ++) para mis implementaciones y los resultados anteriores pueden estar relacionados con la implementación.

  1. SVM tiene inherentemente un límite de decisión lineal. Para aprender límites de decisión más complejos, se pueden usar núcleos. Los ANN aprenden naturalmente los límites de decisión no lineales y, por lo tanto, también son más propensos al sobreajuste.
  2. La formulación natural de SVM se presta para un problema de clasificación de 2 clases. Para aprender una clasificación de varias clases, puede usar cosas como uno contra todos o códigos de salida de corrección de errores. Los ANN pueden modelar de forma más natural los problemas de varias clases.
  3. El SGD (Descenso de gradiente estocástico) se usa generalmente para aprender los parámetros de los ANN (esto podría atascarse en los mínimos locales), SMO (Optimización mínima secuencial) se usa para aprender los parámetros de un SVM (alcanza los mínimos globales).

Una diferencia principal que considero principalmente es que:

Los SVM se pueden usar si solo tiene una cantidad suficiente o pequeña de datos.

En el caso de las redes neuronales, se puede escalar a cualquier cantidad de complejidad del modelo con el aumento de datos y también aprende una mejor clasificación con más datos.

SVM: se utiliza principalmente para la clasificación binaria. Dado un conjunto de ejemplos y las etiquetas asociadas con ellos, el SVM clasificará los ejemplos más nuevos en función del conjunto de capacitación.

Redes neuronales: esencialmente, es un modelo de niveles múltiples, en el que se calculan varios valores intermedios antes de predecir el valor final de la hipótesis. Se puede usar tanto para clasificación como para regresión.

SVM es generalmente más rápido y mucho más fácil de implementar para la clasificación en comparación con una red neuronal, ya que casi todas las bibliotecas principales tienen una función SVM.

No es mi respuesta, pero recuerdo haberme encontrado con esta pregunta en kdnuggets:

¿Cuándo funciona el aprendizaje profundo mejor que SVM o bosques aleatorios?

Gracias por su solicitud, sin embargo, no creo que contribuya más que las respuestas existentes. Solo una nota rápida: SVM proporciona un óptimo global. ANN podría converger al mínimo local y también puede ser fácilmente ajustado, pero muy flexible para modelar “cualquier cosa”.

Yo comenzaría con SVM. Si no está satisfecho con su rendimiento, cambie a ANN. Puede recopilar más datos de entrenamiento o aumentar el parámetro de regulación lamda para abordar el problema de sobreajuste.

El poder de SVM radica en tratar con entradas de alta dimensión. Si la dimensión de su característica es mucho mayor que la cantidad de muestras de entrenamiento que tiene, SVM funciona bien en este caso.
Pero si tiene más ejemplos de entrenamiento que la dimensión característica, entonces vaya con la red neuronal.

No soy un gran experto, pero creo que el tipo de aprendizaje automático que se debe utilizar depende en parte del tamaño del contexto … diferentes algoritmos se escalan de manera diferente, por lo que si tienes un conjunto de entrenamiento grande o tienes algún tipo de requisito de procesamiento de tiempo, cómo se puede considerar el enfoque de aprendizaje automático aparte de las tasas de precisión solo.