Cómo seleccionar núcleos SVM

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:

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

A2A.

Como otros han señalado, no hay forma de averiguar qué núcleo sería el mejor para un problema en particular. La única forma de elegir el mejor núcleo es probar todos los núcleos posibles y elegir el que mejor haga empíricamente. Sin embargo, todavía podemos ver algunas diferencias entre varias funciones del núcleo, para tener algunas reglas generales.

Comencemos enumerando las funciones del núcleo:

  • Lineal: [matemática] K (x, y) = x ^ Ty [/ matemática]
  • Polinomio: [matemáticas] K (x, y) = (x ^ Ty + 1) ^ d [/ matemáticas]
  • Sigmoide: [matemáticas] K (x, y) = tanh (ax ^ Ty + b) [/ matemáticas]
  • RBF: [matemáticas] K (x, y) = \ exp (- \ gamma \ | x – y \ | ^ 2) [/ matemáticas]

Ahora, veamos algunas diferencias:

  • Invarianza de traducción : el kernel RBF es el único kernel fuera de lo anterior que es invariante de traducción, es decir, [matemática] K (x, y) = K (x + t, y + t) [/ matemática], donde t es cualquiera vector arbitrario Intuitivamente, esta propiedad es útil: si imagina que todos sus datos se encuentran en algún espacio, entonces la similitud entre los puntos no debería cambiar si cambia todos los datos, sin cambiar las posiciones relativas de los puntos.
  • Producto interno vs distancia euclidiana : relacionado con el punto anterior, el núcleo RBF es una función de la distancia euclidiana entre los puntos, mientras que todos los demás núcleos son funciones del producto interno de los puntos. De nuevo, tiene más sentido intuitivo tener una distancia euclidiana: los puntos más cercanos deberían ser más similares. Si dos puntos están cerca del origen, pero en lados opuestos, los núcleos internos basados ​​en productos asignan al par un valor bajo, pero los núcleos basados ​​en distancia euclidiana asignan al par un valor alto. Sin embargo, es importante tener en cuenta que para algunas aplicaciones, el producto interno es a veces la métrica de similitud más preferida, como en los vectores de bolsa de palabras, porque le importa más la dirección de los vectores (qué palabras aparecen tanto en el documento vectores) en lugar de los recuentos reales.
  • Normalizado : Se dice que un núcleo está normalizado si [matemática] K (x, x) = 1 [/ matemática] para todos [matemática] x [/ matemática]. Esto es cierto solo para el kernel RBF en la lista anterior. De nuevo, intuitivamente, desea que esta propiedad se mantenga: si [math] x [/ math] y [math] x [/ math] tienen una similitud de [math] \ lambda [/ math], entonces [math] 2x [/ math] y [math] 2x [/ math] también deben tener una similitud de [math] \ lambda [/ math]. Puede convertir un kernel arbitrario [math] K (x, y) [/ math] en un kernel normalizado [math] \ tilde {K} (x, y) [/ math] definiendo [math] \ tilde {K} (x, y) = \ dfrac {K (x, y)} {\ sqrt {K (x, x)} \ sqrt {K (y, y)}} [/ math]. (Además, como nota al margen, el kernel RBF es el kernel normalizado para el kernel exponencial, [math] K (x, y) = \ exp (x ^ Ty) [/ math].)

Estas propiedades tienden a mejorar el núcleo RBF en general, para la mayoría de los problemas. Y debido a que hace lo mejor empíricamente, tiende a ser más ampliamente utilizado. Sin embargo, solo para reiterar, dependiendo de la naturaleza del problema, es posible que uno de los otros núcleos funcione mejor que el núcleo RBF.

Primero: ¿Por qué el núcleo RBF es el más utilizado? Debido a que SVM es intrínsecamente un separador lineal cuando las clases no son linealmente separables, podemos proyectar los datos en un espacio de alta dimensionalidad y con una alta probabilidad de encontrar una separación lineal. Este es el teorema de Cover y el Kernel RBF hace exactamente eso: proyecta los datos en dimensiones infinitas y luego encuentra una separación lineal.

El kernel lineal funciona muy bien cuando tiene muchas características porque es probable que sus datos ya sean linealmente separables y un SVM encuentre el mejor hiperplano de separación. Los núcleos lineales son excelentes para datos muy escasos como texto.

Cuando los datos no son linealmente separables, la primera opción es siempre un núcleo RBF porque son muy flexibles y por las razones que expliqué en el primer párrafo.

La forma práctica de decidir qué kernel usar es mediante validación cruzada, no hay forma de luchar contra el éxito, si encuentra un kernel que funciona realmente bien para sus datos, entonces ese es el ganador.

Tanto LR como SVM son algoritmos de clasificación supervisados. Podemos decidir con qué modelo ir de antemano, si tenemos una idea sobre el número total de características (n) y los puntos de datos de entrenamiento totales (m).

  • Si n es relativamente mayor que m (como para la clasificación de texto), se pueden usar LR y SVM lineal (con núcleo lineal) y ambos tienen una complejidad similar.
  • Si n es pequeño ym es intermedio (lo suficiente como para hacer el modelado), entonces SVM con kernel como el kernel gaussiano proporciona mejores resultados y será un poco más difícil de trabajar que LR.
  • Si n es pequeño ym es muy grande, entonces esto tiende a no ajustarse a los datos de la prueba. Por lo tanto, reúna características adicionales o agregue características polinómicas para que se acerque a nuestro primer caso y use LR o SVM lineal
  • Si n es muy grande ym es pequeño, entonces esto tiende a sobreajustar los datos. Por lo tanto, tratamos de eliminar las correlaciones entre características, eliminar características no significativas, reunir más conjuntos de datos para capacitación o usar la regularización. Finalmente, terminamos nuevamente con el primer caso y usamos LR o SVM lineal.

Muchos algoritmos, como Neutral Networks, proporcionan una mejor precisión y rendimiento en todos los casos anteriores, pero tienen un mayor tiempo de ejecución. Según la necesidad, tenemos que elegir nuestro algoritmo porque siempre hay una compensación entre precisión y tiempo de ejecución.

Para agregar brevemente un método más simple a las otras metodologías de selección de kernel ya mencionadas, se puede determinar empíricamente el kernel óptimo mediante la experimentación. Hacerlo implica:

  1. Implementando una versión del SVM de uno usando cada núcleo
  2. Evaluar el rendimiento de SVM con cada kernel mediante validación cruzada
  3. Seleccionar el núcleo que produjo resultados óptimos

More Interesting

¿Cómo pasar de Data Science a Big Data? ¿Alguien puede darme un cronograma gradual para aprender Big Data?

¿Dónde encaja Java en una atmósfera de Big Data?

Soy un desarrollador de Ruby on Rails. ¿Cómo hago una transición a un rol de Data Scientist?

¿Cómo puedo leer datos del PLC?

Cómo encontrar las publicaciones más populares en un sitio web

¿Pueden las herramientas de Big Data ayudar a borrar el ciclo económico?

¿Cuáles son algunos algoritmos de aprendizaje automático que no pueden tolerar la falta de datos?

¿Cuáles son las empresas analíticas de big data que figuran en los EE. UU. Y Europa en el ámbito de la atención médica?

¿Qué tan grande será el mercado para el modelado de datos de crowdsourcing? ¿Qué sectores se beneficiarán más? ¿Qué tipos de expertos se ganarán la vida compitiendo en estos sitios en el futuro?

¿Vale la pena cambiar de carrera de ciencia de datos a actuario?

¿Cuál es el futuro de la ciencia de datos en los próximos años? ¿Cómo es el mercado laboral en ciencia de datos para los graduados de nivel de entrada? ¿Es fácil de aprender, o necesitamos hacer más y más trabajo duro para conseguir un trabajo de nivel de entrada?

¿Qué diferencia a una solución típica de Kaggle en algún lugar en el medio del paquete frente a alguien en, digamos, el 5-10% superior?

Cómo hacer un trabajo orientado a la investigación en big data

¿Cuál sería un buen lugar para un doctorado en ciencia de datos y ciencias del comportamiento?

¿Los grandes datos solo están desestructurados o pueden estructurarse también?