¿Kernel PCA con kernel lineal es equivalente a PCA estándar?

17

Si en el núcleo PCA elijo un núcleo lineal K(x,y)=xy , ¿el resultado será diferente del PCA lineal ordinario ? ¿Son las soluciones fundamentalmente diferentes o existe alguna relación bien definida?

tgoossens
fuente

Respuestas:

27

Resumen: el núcleo PCA con núcleo lineal es exactamente equivalente al estándar PCA.

Sea la matriz de datos centrada de tamaño N × D con variables D en columnas y N puntos de datos en filas. Entonces la matriz de covarianza D × D viene dada por XX / ( n - 1 ) , sus vectores propios son ejes principales y los valores propios son variaciones de PC. Al mismo tiempo, se puede considerar la llamada matriz de Gram X X del tamaño N × N. Es fácil ver que tiene los mismos valores propios (es decir, variaciones de PC) hasta el n - 1XN×DDND×DXX/(n1)XXN×Nn1 factor, y sus vectores propios son componentes principales escalados a la norma de la unidad.

Esto era PCA estándar. Ahora, en el kernel PCA consideramos alguna función que asigna cada punto de datos a otro espacio vectorial que generalmente tiene una mayor dimensionalidad D n e w , posiblemente incluso infinito. La idea de kernel PCA es realizar la PCA estándar en este nuevo espacio.ϕ(x)Dnew

Dado que 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 para PCA descrito anteriormente. De hecho, la matriz de Gram seguirá siendo del mismo tamaño manejable . Los elementos de esta matriz están dados por ϕ ( x i ) ϕ ( x j ) , que llamaremos función de núcleo K ( x i , x j ) = ϕ ( x i ) ϕ ( x j )N×Nϕ(xi)ϕ(xj)K(xi,xj)=ϕ(xi)ϕ(xj). Esto es lo que se conoce como el truco del núcleo : en realidad, uno nunca necesita calcular , sino solo K ( ) . Los vectores propios de esta matriz de Gram serán los componentes principales en el espacio objetivo, los que nos interesan.ϕ()K()

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

Una referencia muy legible es Scholkopf B, Smola A y Müller KR, análisis de componentes principales de Kernel, 1999 , y tenga en cuenta que, por ejemplo, en la Figura 1, se refieren explícitamente al PCA estándar como el que utiliza el producto de punto como una función de kernel:

kernel PCA

ameba dice Reinstate Monica
fuente
¿De dónde son esas fotos en tu respuesta? ¿De algún libro?
Pinocho
@Pinocchio, la cifra está tomada de Scholkopf et al. papel, referenciado y vinculado en mi respuesta.
ameba dice Reinstate Monica
"Es fácil ver que tiene los mismos valores propios (es decir, variaciones de PC) hasta el factor n-1 ". ¿No significa esto que no son completamente equivalentes entonces? Digamos que tengo una matriz con n = 10 muestras, d = 200 dimensiones. En PCA estándar podría proyectar los datos a 199 dimensiones si quisiera, pero en PCA de núcleo con núcleo lineal solo puedo tener hasta 10 dimensiones.
Cesar
1
@Cesar, no, si tiene n = 10 muestras, entonces la matriz de covarianza tendrá un rango de 10-1 = 9 y la PCA estándar solo encontrará 9 dimensiones (así como la PCA del núcleo). Ver aquí: stats.stackexchange.com/questions/123318 .
ameba dice Reinstate Monica
Recibo un archivo que no se encuentra para el enlace de referencia de Scholkopf B, Smola A y Müller KR.
pbible
5

XN×DDNX=UΣVUXXX=UΣ2U tiene los mismos vectores singulares izquierdos y, por lo tanto, los mismos componentes principales.

Martha White
fuente
Para PCA estándar, pensé que nos importaba, la SVD de la matriz de covarianza, así que realmente no entiendo cómo es relevante la SVD de X, ¿podría expandirse?
m0s
@ m0s Para PCA, nos preocupamos por la descomposición propia de la matriz de covarianza que usualmente realizamos mediante la SVD de la matriz de datos (centrada).
MrDrFenner
1

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

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

linearKPCAmatrix=1lj=1lK(xj,xj)=1lj=1lxjxjT=PCAmatrix

Puedes consultar con más detalles aquí .

Jundiaius
fuente
3
K(xi,xj)