10 votos

Que SVM kernel a utilizar para un problema de clasificación binaria?

Soy un principiante cuando se trata de máquinas de vectores soporte. Hay algunas pautas que decir que kernel (por ejemplo, lineal, polinomial) es el más adecuado para un problema específico? En mi caso, tengo que clasificar las páginas web según si contienen alguna información específica o no, es decir, tengo un problema de clasificación binaria.

Se puede decir en general que el kernel es el más adecuado para esta tarea? O tengo que probar varios de ellos en mi conjunto específico de datos para encontrar el mejor? Por cierto, estoy usando la biblioteca de Python scikit-learn , que hace uso de la libSVM de la biblioteca.

10voto

LachlanG Puntos 133

En realidad hemos golpeó en algo de una pregunta abierta en la literatura. Como usted dice, hay una gran variedad de granos (por ejemplo, lineal, radial de la función de base, sigmoide, polinomio), y llevará a cabo su tarea de clasificación en un espacio definido por sus respectivas ecuaciones. A mi conocimiento, nadie ha demostrado que definitivamente uno de kernel siempre se realiza mejor en un tipo de texto de la tarea de clasificación con respecto a otra.

Una cosa a tener en cuenta es que cada núcleo de la función que tiene 1 o más de los parámetros que necesitan ser optimizados para el conjunto de datos, lo que significa que, si lo estás haciendo correctamente, debe tener una segunda sujeción de formación de la colección en la que usted puede investigar los mejores valores para estos parámetros. (Yo diría que un segundo de sujeción de la colección, porque usted ya debe haber uno que usted está utilizando para encontrar la mejor entrada de características para el clasificador.) Hice un experimento hace un tiempo en el que hice un gran escala de la optimización de cada uno de estos parámetros para un simple textual tarea de clasificación y encontró que cada núcleo se apareció a realizar razonablemente bien, sino que lo hizo en diferentes configuraciones. Si recuerdo mis resultados correctamente, sigmoide realiza el mejor, pero lo hizo muy específicos parámetro ajustes--que me tomó más de un mes para mi máquina a encontrar. Mi consejo es que, si usted tiene el tiempo suficiente y los datos para hacer algún parámetro de optimización de experimentos, podría ser interesante comparar el rendimiento de cada núcleo en su particular tarea de clasificación, pero, si no, SVM lineal realiza razonablemente bien en el texto de la clasificación, sólo tiene el c-parámetro a optimizar (aunque mucha gente sólo sale esto en la configuración por defecto), y le permitirá concentrarse en los aspectos de su sistema de clasificación que tendrá una mayor contribución al rendimiento final--de los tipos de entidades de entrada que usted use, y como modelo de ellos.

7voto

Pruebe el núcleo Gaussiano.

El núcleo Gaussiano es a menudo juzgados primero y resulta ser el mejor kernel en muchas aplicaciones (con su bolsa-de-palabras características, también). Usted debe probar el kernel lineal, demasiado. No es de esperar que dan buenos resultados, texto-clasificación de los problemas tienden a ser no lineal. Pero te da una sensación de datos y se puede ser feliz acerca de lo mucho que la no-linealidad mejora sus resultados.

Asegúrese de que ha de cruz validar su núcleo de ancho y pensar acerca de cómo usted desea normalizar sus características (tf-idf, etc).

Yo diría que usted puede mejorar sus resultados con una mejor función de la normalización de la más que con la elección de un kernel diferente (es decir, no el de Gauss).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X