Muchos clasificadores, entre ellos el Support Vector Machine (SVM) lineal, solo pueden resolver problemas que son separables linealmente, es decir, donde los puntos pertenecientes a la clase 1 pueden separarse de los puntos pertenecientes a la clase 2 por un hiperplano.
En muchos casos, un problema que no es separable linealmente se puede resolver aplicando una transformación phi() a los puntos de datos; se dice que esta transformación transforma los puntos a espacio de característica. La esperanza es que, en el espacio de características, los puntos serán linealmente separables. (Nota: este no es el truco del núcleo aún ... estad atentos.)
Se puede demostrar que, cuanto mayor es la dimensión del espacio de características, mayor es la cantidad de problemas que son separables linealmente en ese espacio. Por lo tanto, lo ideal sería que el espacio de funciones fuera tan alto como sea posible.
Lamentablemente, a medida que aumenta la dimensión del espacio de características, también lo hace la cantidad de cálculos requeridos. Aquí es donde entra el truco del kernel. Muchos algoritmos de aprendizaje automático (entre ellos el SVM) se pueden formular de tal manera que la única operación que realizan en los puntos de datos es un producto escalar entre dos puntos de datos. (. Voy a denotar un producto escalar entre x1 y x2 por <x1, x2>
)
Si transformamos nuestros puntos para ofrecer espacio, el producto escalar ahora se ve así:
<phi(x1), phi(x2)>
La idea clave es que existe una clase de funciones llamadas núcleos que se pueden utilizar para optimizar el cálculo de este producto escalar. El núcleo es una función K(x1, x2)
que tiene la propiedad de que
K(x1, x2) = <phi(x1), phi(x2)>
para alguna función phi(). En otras palabras: podemos evaluar el producto escalar en el espacio de datos de baja dimensión (donde x1 y x2 "vivo") sin tener que transformarse en el espacio de características de alta dimensión (donde phi (x1) y phi (x2) "viven ") - pero aún así obtenemos los beneficios de transformarnos en el espacio de funciones de alta dimensión. Esto se llama kernel truco.
Muchos núcleos populares, tales como la Gaussian kernel, en realidad corresponden a una transformación phi() que se transforma en un infinte dimensiones espacio función. El truco del kernel nos permite calcular productos escalares en este espacio sin tener que representar puntos en este espacio explícitamente (lo cual, obviamente, es imposible en computadoras con cantidades finitas de memoria).
+1, buena explicación. –
+1 - muy agradable, de hecho. – duffymo