Aquí x e y son dos puntos de datos en 3 dimensiones. Supongamos que necesitamos mapear x e y en un espacio de 9 dimensiones. Tenemos que hacer los siguientes cálculos para obtener el resultado final, que es sólo un escalar. La complejidad computacional, en este caso, es O(n²).
However, if we use the kernel function, which is denoted as k(x, y), instead of doing the complicated computations in the 9-dimensional space, we reach the same result within the 3-dimensional space by calculating the dot product of x -transpose and y. The computational complexity, in this case, is O(n).
In essence, what the kernel trick does for us is to offer a more efficient and less expensive way to transform data into higher dimensions. With that saying, the application of the kernel trick is not limited to the SVM algorithm. Cualquier cálculo que implique los productos punto (x, y) puede utilizar el truco del kernel.
Diferentes funciones del kernel
Hay diferentes kernels. Los más populares son el kernel polinómico y el kernel de función de base radial (RBF).
«Intuitivamente, el kernel polinómico mira no sólo las características dadas de las muestras de entrada para determinar su similitud, sino también las combinaciones de éstas» (Wikipedia), como el ejemplo anterior. Con n características originales y d grados de polinomio, el kernel polinomial arroja n^d características expandidas.
El formato del kernel polinómico El kernel RBF también se llama kernel gaussiano. Hay un número infinito de dimensiones en el espacio de características porque puede ser expandido por la serie de Taylor. El parámetro γ define la influencia de un solo ejemplo de entrenamiento. Cuanto más grande es, más cerca deben estar otros ejemplos para ser afectados (documentación de sklearn).
El formato del kernel RBF Hay diferentes opciones para las funciones del kernel en la biblioteca sklearn en Python. Incluso puedes construir un kernel personalizado si lo necesitas.
El final
El truco del kernel parece un plan «perfecto». Sin embargo, una cosa crítica a tener en cuenta es que cuando mapeamos los datos a una dimensión más alta, hay posibilidades de que podamos sobreajustar el modelo. Por lo tanto, la elección de la función kernel correcta (incluyendo los parámetros correctos) y la regularización son de gran importancia.
Si tienes curiosidad por saber qué es la regularización, he escrito un artículo hablando sobre mi forma de entenderla y lo puedes encontrar aquí.
Espero que disfrutes de este artículo. Como siempre, hazme saber si tienes alguna pregunta, comentario, sugerencia, etc. Gracias por leer 🙂