Dado un conjunto de datos arbitrario, normalmente no sabe qué núcleo puede funcionar mejor. Recomiendo comenzar con el espacio de hipótesis más simple primero, dado que no sabe mucho sobre sus datos, y avanzar hacia los espacios de hipótesis más complejos.
Entonces, el núcleo lineal funciona bien si su conjunto de datos es linealmente separable; sin embargo, si su conjunto de datos no es linealmente separable, un núcleo lineal no lo va a cortar (casi en sentido literal;)).
Por simplicidad (y para fines de visualización), supongamos que nuestro conjunto de datos consta de 2 dimensiones solamente. A continuación, tracé las regiones de decisión de un SVM lineal en 2 características del conjunto de datos de iris:
- ¿Cómo elegir un filamento ABS de alta calidad? ¿Cómo entiendo los datos técnicos relevantes?
- ¿Cuál es la diferencia entre Data science, Big Data y Hadoop?
- ¿Cuáles son algunos materiales de lectura de calidad para la ciencia de datos?
- ¿Cuándo explotará la burbuja de ciencia de datos?
- ¿Cuál es el mejor extractor de datos web?
Esto funciona perfectamente bien. Y aquí viene el kernel RBF SVM:
Ahora, parece que tanto el kernel lineal como el RBF SVM funcionarían igualmente bien en este conjunto de datos. Entonces, ¿por qué preferir la hipótesis lineal más simple? Piense en la Navaja de Occam en este caso particular. Linear SVM es un modelo paramétrico, un kernel RBF SVM no lo es, y la complejidad de este último crece con el tamaño del conjunto de entrenamiento. No solo es más costoso entrenar un SVM de kernel RBF, sino que también tiene que mantener la matriz del kernel alrededor, y la proyección en este espacio dimensional infinito “infinito” donde los datos se vuelven linealmente separables también es más costosa durante la predicción. Además, tiene más hiperparámetros para ajustar, por lo que la selección del modelo también es más costosa. Y finalmente, ¡es mucho más fácil equipar un modelo complejo!
De acuerdo, lo que he dicho anteriormente parece muy negativo con respecto a los métodos del núcleo, pero realmente depende del conjunto de datos. Por ejemplo, si sus datos no son linealmente separables, no tiene sentido usar un clasificador lineal:
En este caso, un núcleo RBF tendría mucho más sentido:
En cualquier caso, no me molestaría demasiado en el núcleo polinomial. En la práctica, es menos útil por razones de rendimiento (computacional y predictivo) de rendimiento. Entonces, la regla general es: usar SVM lineales (o regresión logística) para problemas lineales, y núcleos no lineales como el núcleo de la función de base radial para problemas no lineales.
Por cierto. la región de decisión SVM del kernel RBF también es en realidad una región de decisión lineal. Lo que realmente hace el kernel RBF SVM es crear combinaciones no lineales de sus características para elevar sus muestras en un espacio de características de dimensiones superiores donde puede usar un límite de decisión lineal para separar sus clases:
Bien, arriba, lo guié a través de un ejemplo intuitivo donde podemos visualizar nuestros datos en 2 dimensiones … pero ¿qué hacemos en un problema del mundo real, es decir, un conjunto de datos con más de 2 dimensiones? Aquí, queremos vigilar nuestra función objetivo: minimizar la pérdida de la bisagra. Configuraríamos una búsqueda de hiperparámetros (búsqueda de cuadrícula, por ejemplo) y compararíamos diferentes núcleos entre sí. En función de la función de pérdida (o una métrica de rendimiento como precisión, F1, MCC, ROC auc, etc.) podríamos determinar qué núcleo es “apropiado” para la tarea dada. Tengo más publicaciones aquí si ayuda: ¿Cómo evalúo un modelo? El | Una configuración básica de búsqueda de tuberías y cuadrículas a través de scikit-learn: Jupyter Notebook Viewer