En el campo de la estadística multivariante , el análisis de componentes principales de kernel (kernel PCA) [1] es una extensión del análisis de componentes principales (PCA) que utiliza técnicas de métodos de kernel . Utilizando un kernel, las operaciones originalmente lineales de PCA se realizan en un espacio de Hilbert de kernel de reproducción .
Recuerde que el PCA convencional opera con datos centrados en cero; es decir,
donde es una de las observaciones multivariadas. Opera diagonalizando la matriz de covarianza ,
En otras palabras, da una descomposición propia de la matriz de covarianza:
que puede reescribirse como
(Ver también: Matriz de covarianza como operador lineal )
Para entender la utilidad del PCA de kernel, en particular para la agrupación, observe que, si bien N puntos no pueden, en general, separarse linealmente en dimensiones, casi siempre pueden separarse linealmente en dimensiones. Es decir, dados N puntos, si los asignamos a un espacio N -dimensional con
Es fácil construir un hiperplano que divida los puntos en grupos arbitrarios. Por supuesto, esto crea vectores linealmente independientes, por lo que no hay covarianza sobre la cual realizar una descomposición propia explícitamente como lo haríamos en un PCA lineal.
En cambio, en el PCA de núcleo, se "elige" una función arbitraria y no trivial que nunca se calcula explícitamente, lo que permite la posibilidad de utilizar funciones de dimensiones muy altas si nunca tenemos que evaluar realmente los datos en ese espacio. Dado que generalmente tratamos de evitar trabajar en el espacio de funciones, al que llamaremos "espacio de características", podemos crear el núcleo N por N.
que representa el espacio de producto interno (ver Matriz de Gram ) del espacio de características que de otro modo sería intratable. La forma dual que surge en la creación de un kernel nos permite formular matemáticamente una versión de PCA en la que nunca resolvemos realmente los vectores y valores propios de la matriz de covarianza en el espacio (ver Truco del kernel ). Los N elementos en cada columna de K representan el producto escalar de un punto de los datos transformados con respecto a todos los puntos transformados (N puntos). Algunos kernels bien conocidos se muestran en el ejemplo siguiente.
Como nunca trabajamos directamente en el espacio de características, la formulación de núcleo de PCA está restringida en el sentido de que no calcula los componentes principales en sí, sino las proyecciones de nuestros datos sobre esos componentes. Para evaluar la proyección desde un punto en el espacio de características sobre el késimo componente principal (donde el superíndice k significa el componente k, no potencias de k)
Observamos que denota el producto escalar, que es simplemente los elementos del núcleo . Parece que todo lo que queda es calcular y normalizar el , lo que se puede hacer resolviendo la ecuación del vector propio
donde es el número de puntos de datos en el conjunto, y y son los valores propios y los vectores propios de . Luego, para normalizar los vectores propios , requerimos que
Se debe tener cuidado con el hecho de que, independientemente de si tiene media cero en su espacio original, no se garantiza que esté centrado en el espacio de características (que nunca calculamos explícitamente). Dado que se requieren datos centrados para realizar un análisis de componentes principales eficaz, " centralizamos " para convertirnos en
donde denota una matriz N por N en la que cada elemento toma el valor . Usamos para realizar el algoritmo PCA del núcleo descrito anteriormente.
Aquí se debe ilustrar una advertencia del PCA de kernel. En el PCA lineal, podemos usar los valores propios para clasificar los vectores propios en función de qué parte de la variación de los datos es capturada por cada componente principal. Esto es útil para la reducción de la dimensionalidad de los datos y también se podría aplicar al KPCA. Sin embargo, en la práctica hay casos en los que todas las variaciones de los datos son iguales. Esto suele deberse a una elección incorrecta de la escala de kernel.
En la práctica, un conjunto de datos grande genera un K grande, y almacenar K puede convertirse en un problema. Una forma de lidiar con esto es realizar una agrupación en el conjunto de datos y llenar el núcleo con las medias de esos grupos. Dado que incluso este método puede producir un K relativamente grande, es común calcular solo los valores propios P superiores y los vectores propios de los valores propios se calculan de esta manera.
Considere tres nubes concéntricas de puntos (mostradas en la imagen); deseamos utilizar el análisis de componentes principales (PCA) del núcleo para identificar estos grupos. El color de los puntos no representa información involucrada en el algoritmo, sino que solo muestra cómo la transformación reubica los puntos de datos.
Primero, consideremos el núcleo
La aplicación de esto al PCA del kernel produce la siguiente imagen.
Consideremos ahora un kernel gaussiano:
Es decir, este kernel es una medida de cercanía, igual a 1 cuando los puntos coinciden e igual a 0 en el infinito.
Obsérvese en particular que el primer componente principal es suficiente para distinguir los tres grupos diferentes, lo que es imposible utilizando solo PCA lineal, porque el PCA lineal opera solo en el espacio dado (en este caso bidimensional), en el que estas nubes de puntos concéntricos no son linealmente separables.
Se ha demostrado que el PCA del núcleo es útil para la detección de novedades [3] y la eliminación de ruido de imágenes. [4]