Kernel lineal y kernel no lineal para máquina de vectores de soporte?

45

Cuando se utiliza la máquina de vectores de soporte, ¿existen pautas para elegir un núcleo lineal frente a un núcleo no lineal, como RBF? Una vez escuché que el kernel no lineal tiende a no funcionar bien una vez que el número de características es grande. ¿Hay alguna referencia sobre este tema?

user3269
fuente
1
para mi sabiduría, esto se basa en el problema en cuestión y es peligroso usar tales pulgares en la práctica.
htrahdis

Respuestas:

66

Por lo general, la decisión es si usar un núcleo lineal o un núcleo RBF (también conocido como gaussiano). Hay dos factores principales a considerar:

  1. Resolver el problema de optimización para un núcleo lineal es mucho más rápido, ver, por ejemplo, LIBLINEAR.
  2. Típicamente, el mejor rendimiento predictivo posible es mejor para un núcleo no lineal (o al menos tan bueno como el lineal).

Se ha demostrado que el núcleo lineal es una versión degenerada de RBF , por lo tanto, el núcleo lineal nunca es más preciso que un núcleo RBF sintonizado correctamente. Citando el resumen del artículo que vinculé:

El análisis también indica que si se ha realizado la selección completa del modelo utilizando el núcleo gaussiano, no hay necesidad de considerar SVM lineal.

Una regla general básica se trata brevemente en la guía práctica de NTU para apoyar la clasificación de vectores (Apéndice C).

Si el número de características es grande, es posible que no sea necesario asignar datos a un espacio dimensional superior. Es decir, el mapeo no lineal no mejora el rendimiento. Usar el núcleo lineal es lo suficientemente bueno, y uno solo busca el parámetro C.

Su conclusión es más o menos correcta pero tiene el argumento al revés. En la práctica, el núcleo lineal tiende a funcionar muy bien cuando el número de características es grande (por ejemplo, no es necesario asignar un espacio de características dimensionales aún mayor). Un ejemplo típico de esto es la clasificación de documentos, con miles de dimensiones en el espacio de entrada.

En esos casos, los núcleos no lineales no son necesariamente significativamente más precisos que los lineales. Esto básicamente significa que los núcleos no lineales pierden su atractivo: requieren mucho más recursos para entrenar con poco o ningún aumento en el rendimiento predictivo, entonces, ¿por qué molestarse?

TL; DR

Siempre intente lineal primero, ya que es mucho más rápido entrenar (prueba AND). Si la precisión es suficiente, felicítese por un trabajo bien hecho y continúe con el siguiente problema. Si no, intente con un núcleo no lineal.

Marc Claesen
fuente
1
Tengo esta explicación para el truco del kernel: stats.stackexchange.com/questions/131138/…
37

Andrew Ng da una buena explicación general en este video que comienza a las 14:46, aunque vale la pena ver todo el video.

Puntos clave

  • Use kernel lineal cuando el número de características es mayor que el número de observaciones.
  • Use el núcleo gaussiano cuando el número de observaciones es mayor que el número de características.
  • Si el número de observaciones es mayor que 50,000, la velocidad podría ser un problema cuando se usa el núcleo gaussiano; por lo tanto, uno podría querer usar un núcleo lineal.
Akavall
fuente
acordado ................
datmannz
1
el enlace está muerto: creo que este es el mismo video: youtube.com/watch?v=hDh7jmEGoY0
ihebiheb