33 votos

¿Es el Kernel PCA con núcleo lineal equivalente al PCA estándar?

Si en núcleo PCA Elijo un núcleo lineal $K(\mathbf{x},\mathbf{y}) = \mathbf x^\top \mathbf y$ ¿el resultado va a ser diferente del PCA lineal ordinario ? ¿Son las soluciones fundamentalmente diferentes o existe alguna relación bien definida?

43voto

zowens Puntos 1417

Resumen: el kernel PCA con kernel lineal es exactamente equivalente al PCA estándar.

Dejemos que $\mathbf{X}$ sea la matriz de datos centrada de $N \times D$ tamaño con $D$ variables en columnas y $N$ puntos de datos en filas. Entonces el $D \times D$ La matriz de covarianza viene dada por $\mathbf{X}^\top\mathbf{X}/(n-1)$ sus vectores propios son los ejes principales y los valores propios son las varianzas del PC. Al mismo tiempo, se puede considerar la llamada matriz de Gram $\mathbf{X}\mathbf{X}^\top$ de la $N \times N$ tamaño. Es fácil ver que tiene los mismos valores propios (es decir, las varianzas de PC) hasta el $n-1$ y sus vectores propios son componentes principales escalados a norma unitaria.

Se trata de un PCA estándar. Ahora, en el kernel PCA consideramos alguna función $\phi(x)$ que mapea cada punto de datos a otro espacio vectorial que suele tener mayor dimensionalidad $D_\mathrm{new}$ posiblemente incluso infinito. La idea del kernel PCA es realizar el PCA estándar en este nuevo espacio.

Como la dimensionalidad de este nuevo espacio es muy grande (o infinita), es difícil o imposible calcular una matriz de covarianza. Sin embargo, podemos aplicar el segundo enfoque del ACP descrito anteriormente. En efecto, la matriz Gram seguirá siendo del mismo tamaño manejable $N \times N$ tamaño. Los elementos de esta matriz vienen dados por $\phi(\mathbf{x}_i)\phi(\mathbf{x}_j)$ que llamaremos función kernel $K(\mathbf{x}_i,\mathbf{x}_j)=\phi(\mathbf{x}_i)\phi(\mathbf{x}_j)$ . Esto es lo que se conoce como el truco del núcleo En realidad, no es necesario calcular nunca $\phi()$ pero sólo $K()$ . Los vectores propios de esta matriz de Gram serán los componentes principales en el espacio objetivo, los que nos interesan.

La respuesta a su pregunta es ahora obvia. Si $K(x,y)=\mathbf{x}^\top \mathbf{y}$ entonces la matriz Gram del núcleo se reduce a $\mathbf{X} \mathbf{X}^\top$ que es igual a la matriz de Gram estándar, y por lo tanto los componentes principales no cambiarán.

Una referencia muy fácil de leer es Scholkopf B, Smola A, y Müller KR, Kernel principal component analysis, 1999 y observe que, por ejemplo, en la Figura 1 se refieren explícitamente al ACP estándar como el que utiliza el producto de puntos como función del núcleo:

kernel PCA

0 votos

¿de dónde son esas fotos en su respuesta? ¿De algún libro?

0 votos

@Pinocchio, la figura está tomada del artículo de Scholkopf et al., referenciado y enlazado en mi respuesta.

0 votos

"Es fácil ver que tiene los mismos valores propios (es decir, las varianzas de los PC) hasta el factor n1 "¿No significa esto que no son completamente equivalentes? Digamos que tengo una matriz con n=10 muestras, d=200 dimensiones. En el PCA estándar podría proyectar los datos hasta 199 dimensiones si quisiera, pero en el PCA de núcleo con núcleo lineal sólo puedo hasta 10 dimensiones.

6voto

Martha White Puntos 31

Además de la bonita respuesta de Ameba, hay una forma aún más sencilla de ver la equivalencia. De nuevo, dejemos que $X$ sea la matriz de datos de $N \times D$ tamaño con $D$ variables en columnas y $N$ puntos de datos en filas. El PCA estándar corresponde a la descomposición del valor singular de la matriz $X = U \Sigma V^\top$ con $U$ los componentes principales de $X$ . La descomposición del valor singular del núcleo lineal $XX^\top = U \Sigma^2 U^\top$ tiene los mismos vectores singulares izquierdos y, por tanto, las mismas componentes principales.

0 votos

Para el PCA estándar, pensé que nos preocupábamos por la SVD de la matriz de covarianza, así que no entiendo cómo es que la SVD de X es relevante, ¿podría explicarlo?

0 votos

@m0s Para el PCA, nos preocupamos por la eigendecomposición de la matriz de covarianza que solemos realizar mediante la SVD de la matriz de datos (centrada).

1voto

kynan Puntos 1181

Me parece que un KPCA con kernel lineal debería ser lo mismo que el PCA simple.

La matriz de covarianza de la que vas a obtener los valores propios es la misma:

$$ linearKPCA_{matrix} = \frac{1}{l} \sum_{j=1}^{l}K(x_{j},x_{j}) = \frac{1}{l} \sum_{j=1}^{l}x_{j}x_{j}^T = PCA_{matrix} $$

Puede consultar con más detalle aquí .

3 votos

Tu respuesta es correcta en espíritu, pero la fórmula parece confusa. El KPCA funciona con la matriz Gram $K(x_i, x_j)$ no con la matriz de covarianza (para muchos núcleos no lineales es realmente imposible calcular la matriz de covarianza ya que el espacio objetivo tiene una dimensionalidad infinita). Véase la página 2 del artículo que citas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X