El núcleo es una forma de calcular el producto escalar de dos vectores e y en algún espacio de características (posiblemente de muy alta dimensión), por lo que las funciones del núcleo a veces se denominan "producto escalar generalizado".xy
Supongamos que tenemos un mapeo que trae nuestros vectores en R n a algún espacio de características. Entonces, el producto escalar deyen este espacio es. Un núcleo es una funciónque corresponde a este producto escalar, es decir,.φ:Rn→RmRnx y φ( x ) T φ( y )kk( x , y )=φ( x ) T φ( y )Rmxyφ(x)Tφ(y)kk(x,y)=φ(x)Tφ(y)
¿Por qué es útil esto? Los núcleos dan una manera de calcular productos de puntos en algún espacio de características sin siquiera saber qué es este espacio y qué es .φ
Por ejemplo, considere un núcleo polinomial simple con . Esto no parece corresponder a ninguna función de mapeo , es solo una función que devuelve un número real. Suponiendo que y , esta expresión:x , y ∈ R 2 φ x = ( x 1 , x 2 ) y = ( y 1 , y 2 )k(x,y)=(1+xTy)2x,y∈R2φx=(x1,x2)y=(y1,y2)
k(x,y)=(1+xTy)2=(1+x1y1+x2y2)2==1+x21y21+x22y22+2x1y1+2x2y2+2x1x2y1y2
Tenga en cuenta que esto no es más que un producto de punto entre dos vectores y y . Entonces el kernel calcula un producto de puntos en Espacio de 6 dimensiones sin visitar explícitamente este espacio.(1,y 2 1 ,y 2 2 , √(1,x21,x22,2–√x1,2–√x2,2–√x1x2)φ(x)=φ(x1,x2)=(1,x(1,y21,y22,2–√y1,2–√y2,2–√y1y2)k(x,y)=(1+ x Tφ(x)=φ(x1,x2)=(1,x21,x22,2–√x1,2–√x2,2–√x1x2)k(x,y)=(1+xTy)2=φ(x)Tφ(y)
Otro ejemplo es el kernel gaussiano . Si expandimos Taylor esta función, veremos que corresponde a un codominio de dimensiones infinitas de .k(x,y)=exp(−γ∥x−y∥2)φ
Finalmente, recomendaría un curso en línea "Aprendiendo de los datos" del profesor Yaser Abu-Mostafa como una buena introducción a los métodos basados en el núcleo. Específicamente, las conferencias "Máquinas de vectores de soporte" , "Métodos del núcleo" y "Funciones de base radial" tratan sobre los núcleos.
Una forma muy simple e intuitiva de pensar en los núcleos (al menos para SVM) es una función de similitud. Dados dos objetos, el núcleo genera una puntuación de similitud. Los objetos pueden ser cualquier cosa a partir de dos enteros, dos vectores con valores reales, árboles, lo que sea, siempre que la función del núcleo sepa cómo compararlos.
El ejemplo posiblemente más simple es el núcleo lineal, también llamado producto de puntos. Dados dos vectores, la similitud es la longitud de la proyección de un vector sobre otro.
Otro ejemplo interesante de kernel es el kernel gaussiano. Dados dos vectores, la similitud disminuirá con el radio de . La distancia entre dos objetos es "ponderada" por este parámetro de radio.σ
El éxito del aprendizaje con núcleos (de nuevo, al menos para SVM), depende en gran medida de la elección del núcleo. Puede ver un núcleo como una representación compacta del conocimiento sobre su problema de clasificación. Muy a menudo es un problema específico.
No llamaría a un núcleo una función de decisión ya que el núcleo se usa dentro de la función de decisión. Dado un punto de datos para clasificar, la función de decisión hace uso del núcleo al comparar ese punto de datos con una serie de vectores de soporte ponderados por los parámetros aprendidos . Los vectores de soporte están en el dominio de ese punto de datos y el algoritmo de aprendizaje encuentra los parámetros aprendidos .αα α
fuente
Un ejemplo visual para ayudar a la intuición.
Considere el siguiente conjunto de datos donde los puntos amarillo y azul claramente no son linealmente separables en dos dimensiones.
Si pudiéramos encontrar un espacio dimensional superior en el que estos puntos fueran linealmente separables , entonces podríamos hacer lo siguiente:
Hay muchos espacios dimensionales superiores en los que estos puntos son linealmente separables. Aquí hay un ejemplo
Aquí es donde entra en juego el truco Kernel. Citando las grandes respuestas anteriores
Si pudiéramos encontrar una función del núcleo que fuera equivalente al mapa de características anterior, entonces podríamos conectar la función del núcleo en el SVM lineal y realizar los cálculos de manera muy eficiente.
Núcleo polinomial
Resulta que el mapa de características anterior corresponde al núcleo polinomial bien conocido : . Deje y obtenemosK(x,x′)=(xTx′)d d=2 x=(x1,x2)T
Visualizar el mapa de características y la línea límite resultante
Fuente
fuente
Muy simple (pero con precisión) un núcleo es un factor de peso entre dos secuencias de datos. Este factor de pesaje puede asignar más peso a un " punto de datos " en un " punto de tiempo " que al otro " punto de datos ", o asignar un peso igual o asignar más peso al otro " punto de datos " y así sucesivamente.
De esta forma, la correlación ( producto de puntos ) puede asignar más "importancia" en algunos puntos que en otros y, por lo tanto, hacer frente a las no linealidades (por ejemplo , espacios no planos ), información adicional, suavizado de datos , etc.
Todavía de otra manera, un núcleo es una forma de cambiar las dimensiones relativas (o unidades de dimensión ) de dos secuencias de datos para hacer frente a las cosas mencionadas anteriormente.
En una tercera forma (relacionada con las dos anteriores), un núcleo es una forma de mapear o proyectar una secuencia de datos en la otra de manera 1 a 1 teniendo en cuenta la información o criterios dados (por ejemplo, espacio curvo, datos faltantes, datos reordenando y así sucesivamente). Así, por ejemplo un núcleo dado puede estirar o encoger o de cultivos o doblar secuencia de uno de datos con el fin de encajar o mapa 1-a-1 sobre la otra.
Un núcleo puede actuar como un Procrustes para " encajar mejor "
fuente