El Kernel Trick

De hecho, el concepto comentado puede generalizarse. Si a y b son dos vectores en un espacio de baja dimensionalidad, el resultado devuelto por cualquier función K(a, b) que cumpla cierta condición matemática (la llamada condición de Mercer) puede ser interpretado como el resultado de evaluar el producto escalar de los vectores a y b transformados según alguna función φ, recibiendo esta función K el nombre de kernel. Es decir, si K es una función que cumple la condición de Mercer y Φ es una función que transforma los vectores a y b de un espacio de baja dimensionalidad a otro de alta dimensionalidad, entonces se puede afirmar que

K(a, b) = Φ(a).Φ(b)

para todos los valores de a y b.

Pensemos que el producto escalar Φ(a).Φ(b) puede resultar muy difícil o imposible de calcular (imaginemos una función Φ que transforme nuestros datos a un espacio de dimensionalidad infinita), pero el kernel K nos permite obtener el equivalente al producto escalar mencionado sin necesidad de conocer la función Φ ni de transformar los datos a y b.

O, dicho con otras palabras:

  • Si es fácil obtener el resultado de aplicar la función K a los vectores a y b
  • La función de transformación Φ tal que Φ(a).Φ(b) = K(a, b) supone una transformación a un espacio de mayor multidimensionalidad, y
  • Es posible obtener un clasificador de máximo margen en el espacio destino

...entonces el conocer la función Φ a la que representa el kernel o aplicarla a nuestros datos es, sencillamente, innecesario.

La función Φ puede estar transformando nuestros datos a un espacio de 10, 1.000 o un billón de dimensiones, y puede estar haciéndolo aplicando unos cálculos u otros. Pero todo eso resulta absolutamente irrelevante, pues podemos aplicar el kernel directamente a nuestros datos en el espacio de origen y obviar el paso por el espacio destino, lo que nos permite obtener resultados que exigirían transformar los datos sin estar realmente transformándolos.

Esto es lo que se conoce como el kernel trick.