Aprendizaje automático: ¿cuáles son las ventajas de SVM sobre las redes neuronales y k- vecinos más cercanos?

SVM con Kernel RBF (**) y Red neuronal (con capas ocultas> = 1) son aproximadores de funciones universales [1,2], es decir, pueden aproximar cualquier función objetivo siempre que sea medible. De hecho, las SVM son equivalentes a una arquitectura de red neuronal superficial [3]. Si bien los SVM no pueden profundizar, las redes neuronales sí pueden. Profundizar significa esencialmente agregar más capas ocultas a su red.

Desde la perspectiva de un profesional, lo que esto significa es que tiene que hacer mucho más trabajo en ingeniería de características para SVM que lo que tiene que hacer para una red neuronal más profunda. La razón por la que Neural Network ha tenido éxito recientemente con todas las grandes compañías es precisamente este aspecto (eso y el hecho de que ahora tenemos mejores capacidades computacionales de lo que habíamos dicho hace una o dos décadas, lo que nos permite profundizar mucho).

Por lo que dije anteriormente, Neural Network parece un ganador seguro contra SVM, ¿verdad? Pues sí y no. Ha habido documentos recientes que muestran que puede engañar a una red neuronal profunda (particularmente en el dominio de la imagen) para clasificar erróneamente sus puntos de datos simplemente agregando pequeñas perturbaciones a la entrada [4]. ¡Lo sorprendente de este artículo es que la entrada y la entrada perturbada se ven visualmente iguales! Es decir, un humano nunca los confundirá, pero el clasificador seguirá clasificando uno correctamente pero no el otro. Es un periódico divertido de leer, hazlo si puedes.

Como practicante, tiendo a ir a SVM naturalmente porque los entiendo mejor que las redes neuronales. Si algo sale mal con SVM, sé ​​cómo abordarlo, pero con la red neuronal, sigue siendo un fracaso. Pero la velocidad a la que la investigación se está moviendo en redes neuronales profundas, estas brechas pronto se llenarán.

Ahora, sobre kNN. Para ser sincero, los kNN son súper intuitivos. Cada principiante de ML se siente atraído por lo simple e intuitivo que es. Sin embargo, con una gran cantidad de datos, puede ser costoso implementarlo (tiene una sobrecarga computacional significativa). Tanto SVM como NN disfrutan de dos ventajas sobre kNN:

  1. Amplio espacio de características (Algunas personas han intentado superar esto al kernelizar kNN, pero kNN puede tener un rendimiento deficiente en el espacio de alta dimensión. Tiende a funcionar mejor en espacios de baja dimensión, por lo que no hay garantías de que kernelizing kNN mejore)
  2. Despliegue más rápido. Si bien SVM y NN requieren un tiempo de entrenamiento significativo, los requisitos computacionales para clasificar las instancias son bastante mínimos.

Por otro lado, los kNN ofrecen una mejor explicabilidad que SVM o NN. Sin embargo, si realmente quieres explicabilidad, es mejor que uses bosques aleatorios en lugar de kNN.

** O cualquier núcleo universal [1]

[1] http://www.jmlr.org/papers/volum…

[2] Teorema de aproximación universal

[3] http://yann.lecun.com/exdb/publi…

[4] http://cs.nyu.edu/~zaremba/docs/…

Gracias por el A2A!

En http://jmlr.csail.mit.edu/papers … Manuel et all evalúan 179 clasificadores que surgen de 17 familias diferentes en diferentes conjuntos de datos del repositorio y paquetes de aprendizaje UCI y concluyen que los algoritmos que probablemente sean los mejores son los bosques aleatorios y las SVM. ! Si está interesado en paquetes y bibliotecas populares, puede leerlo …

Los SVM son algoritmos de aprendizaje muy potentes con una teoría bien definida. De hecho, si el conjunto de datos es pequeño o no tengo datos sin etiquetar, es probable que estos (o RF) sean mi primera opción para la experimentación. ¿Por qué cuando los conjuntos de datos son pequeños? Veamos esta figura (esta figura es de http://cs229.stanford.edu/materi … diapositiva no 3, solo la estoy redibujando, por lo que es posible que desee ver las diapositivas originales …)

básicamente, se espera que cuando los conjuntos de datos sean pequeños, la mayoría de los algoritmos de aprendizaje tengan un mejor desempeño que las metodologías de aprendizaje profundo.

Además, los SVM son clasificadores mucho más potentes que KNN. Y también se usan en jerarquías profundas http://deeplearning.net/wp-conte… .

El SVM (redes neuronales convolucionales CS231n para el reconocimiento visual) es un objetivo más local que puede considerarse como un error o una característica. Además, el SVM calcula puntuaciones no calibradas y no fáciles de interpretar. Además, no pueden hacer uso de conjuntos de datos no etiquetados. Dicho esto, los SVM son uno de los clasificadores más potentes que existen …

Además, como dijo Leonid, la elección depende más de los datos, ya que K-NN requerirá datos menores (con conjuntos de datos más grandes, esto podría ser mucho más lento en el momento de la prueba).

Las redes neuronales superan a otros métodos, generalmente si (1) realmente hay muchos datos (2) su estructura es compleja, por ejemplo, tienen muchas capas. En particular, si desea resolver un problema de clasificación, necesita muchos ejemplos por clase.

El clasificador vecino más cercano, por el contrario, no necesita muchos ejemplos por clase. Entonces, si tiene un problema de clasificación con un par de ejemplos de entrenamiento por clase, los vecinos más cercanos probablemente vencerán a otros métodos. Incluso cuando esto no es cierto, es decir, hay muchos datos de entrenamiento para cada clase, la decisión de un clasificador kNN es una buena meta-característica (¡para SVN o una red neuronal!).

Los SVM requieren sustancialmente más datos de entrenamiento que kNN, pero menos que las redes neuronales (para obtener un rendimiento decente). Los SVM lineales se pueden entrenar más rápidamente, pero son menos precisos que los enfoques no lineales. Sin embargo, los granos no lineales pueden no generalizarse bien (ver Capítulo 5, de Goodfellow et al). Sus tiempos de entrenamiento también son más largos en comparación con el caso lineal. Los enfoques estándar para entrenar SVM son más que cuadráticos en el número de muestras de entrenamiento (por ejemplo, código Scikit-learn), pero los tiempos de entrenamiento pueden ser más bajos para SVM lineal y SVM no lineal entrenado con algunos algoritmos recientes (vea una ACTUALIZACIÓN al final )

Dicho esto, los algoritmos de entrenamiento para SVM tienen mejores garantías (el problema de optimización es convexo). Las redes neuronales profundas son más delicadas y a veces requieren un poco de cuidado de niños.

ACTUALIZACIÓN sobre los tiempos de capacitación de SVM : recientemente realicé una revisión adicional de la literatura sobre el tema. El SVM estándar con un núcleo no lineal tiene más de una complejidad cuadrática con respecto al número de ejemplos de entrenamiento. De hecho, esta es la complejidad de la implementación de SVM en LIBSVM y Scikit-learn.

Para el SVM lineal, puede hacer que la complejidad sea proporcional al número de muestras de entrenamiento multiplicado por el número de características distintas de cero (consulte Entrenamiento de SVM lineales en tiempo lineal, 2006 Thorsten Joachims). Sin embargo, esto es cierto solo para un pequeño conjunto de características (en comparación con el número de muestras de entrenamiento). No sé qué sucede si entreno SVM en vectores TF-IDF dispersos que incluso pueden incluir bigrams. En este caso, la cantidad de funciones es enorme y los tiempos de entrenamiento pueden ser largos.

Por último, pero no menos importante, hay varias mejoras relativamente recientes que facilitan la capacitación de SVM (especialmente las kernelized), por ejemplo, al confiar en un gradiente estocástico presupuestado decente. Hay una serie de implementaciones proporcionadas en la biblioteca BudgetedSVM.

SVM es solo otra hipótesis. Para problemas donde el supuesto de margen grande es cierto, SVM funcionará mejor que ANN & k-NN. Además, la formulación de la función de costo también es diferente. Entonces, dependiendo del problema, un SVM podría converger a una mejor solución y más rápido que otros modelos.

More Interesting

Cómo medir cómo suenan dos señales similares

¿Qué algoritmos son buenos para usar en el procesamiento del lenguaje natural?

¿Qué métricas debo usar en mi investigación de preprocesamiento de datos (no estructurada)?

¿Cuáles son los trabajos mejor pagados en el aprendizaje automático y qué habilidades requiere?

¿Qué es un buen marco de visualización de datos en tiempo real?

¿Se utilizan algoritmos básicos de CS en el aprendizaje automático?

¿Cómo se usa el aprendizaje automático en FinTech (P2P, pagos), particularmente fuera de algo trading? ¿Alguien tiene ejemplos específicos en punto a punto, verificación de crédito, pagos, etc.?

¿Es Cortana de Microsoft una copia flagrante de Siri de Apple?

¿Es el atributo central del reconocimiento de patrones genios?

¿Alguna vez usamos la estimación de máxima verosimilitud?

¿Qué parámetros en los datos de entrenamiento / prueba deben considerarse para decidir la elección de un método de clasificación de aprendizaje automático (fuera de SVM, red neuronal, regresión logística, etc.)?

Visión por computadora: ¿Cuáles son los problemas abiertos para la recuperación de imágenes?

¿Qué pasaría si las máquinas escribieran algunas de las preguntas sobre Quora?

¿Cuáles son los últimos algoritmos de aprendizaje de los vecinos más cercanos? Me refiero a todo lo que se basa en datos, como métodos basados ​​en instancias, kNN, algoritmos de aprendizaje vecinos y métricos, todo en un solo lugar.

Cómo justificar el rendimiento de un modelo de aprendizaje profundo personalizado (CNN)