Soy un principiante cuando se trata de soportar máquinas de vectores. ¿Existen algunas pautas que digan qué núcleo (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 información específica o no, es decir, tengo un problema de clasificación binaria.
¿Puede decir en general qué núcleo es el más adecuado para esta tarea? ¿O tengo que probar varios de ellos en mi conjunto de datos específico para encontrar el mejor? Por cierto, estoy usando la biblioteca de Python scikit-learn que hace uso de la biblioteca libSVM.
classification
svm
model-selection
libsvm
kernel-trick
pemistahl
fuente
fuente
Respuestas:
De hecho, has encontrado una pregunta abierta en la literatura. Como usted dice, hay una variedad de núcleos (por ejemplo, lineal, función de base radial, sigmoide, polinomio), y realizará su tarea de clasificación en un espacio definido por sus respectivas ecuaciones. Que yo sepa, nadie ha demostrado definitivamente que un núcleo siempre se desempeña mejor en un tipo de tarea de clasificación de texto en comparación con otro.
Una cosa a tener en cuenta es que cada función del kernel tiene 1 o más parámetros que deberán optimizarse para su conjunto de datos, lo que significa que, si lo está haciendo correctamente, debe tener una segunda colección de entrenamiento de retención en la que pueda Investigue los mejores valores para estos parámetros. (Digo una segunda colección de espera, porque ya deberías tener una que estés usando para descubrir las mejores características de entrada para tu clasificador). Hice un experimento hace un tiempo en el que hice una optimización a gran escala de cada uno de ellos. estos parámetros para una tarea de clasificación textual simple y encontraron que cada núcleo parecía funcionar razonablemente bien, pero lo hizo en diferentes configuraciones. Si recuerdo mis resultados correctamente, sigmoid funcionó mejor, pero lo hizo con ajustes de parámetros muy específicos, que me tomaron más de un mes para encontrar mi máquina.
fuente
Prueba el núcleo gaussiano.
El núcleo gaussiano a menudo se prueba primero y resulta ser el mejor núcleo en muchas aplicaciones (con sus características de bolsa de palabras, también). También deberías probar el núcleo lineal. No espere que dé buenos resultados, los problemas de clasificación de texto tienden a ser no lineales. Pero le da una idea de sus datos y puede estar contento de cuánto mejora la no linealidad en sus resultados.
Asegúrese de validar correctamente el ancho del kernel y piense en cómo desea normalizar sus funciones (tf-idf, etc.).
Yo diría que puede mejorar sus resultados con una mejor normalización de características más que con la elección de un núcleo diferente (es decir, no el gaussiano).
fuente