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.
- ¿Qué es Mach 23 en millas por hora?
- ¿Alguna forma de dormir será esencial en la IA (inteligencia artificial)?
- ¿Cómo se usa LSTM para la clasificación?
- ¿Cuál es el enfoque más eficiente para los sistemas de recomendación?
- ¿Se pueden mapear los datos de entrada circulares (como la fase de una sinusoide) en un espacio de características lineales usando un núcleo lineal usando SVM? Si no, ¿qué núcleo es óptimo para datos de entrada circulares?
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:
- 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)
- 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/…