¿Cómo proyectar un nuevo vector en el espacio PCA?

21

Después de realizar el análisis de componentes principales (PCA), quiero proyectar un nuevo vector en el espacio PCA (es decir, encontrar sus coordenadas en el sistema de coordenadas PCA).

He calculado PCA en lenguaje R usando prcomp. Ahora debería poder multiplicar mi vector por la matriz de rotación PCA. ¿Deben los componentes principales de esta matriz estar dispuestos en filas o columnas?

píxel
fuente

Respuestas:

23

Bueno, @Srikant ya le dio la respuesta correcta ya que la matriz de rotación (o cargas) contiene vectores propios dispuestos en columnas, por lo que solo tiene que multiplicar (usando %*%) su vector o matriz de datos nuevos con, por ejemplo prcomp(X)$rotation. Sin embargo, tenga cuidado con los parámetros adicionales de centrado o escala que se aplicaron al calcular los EV de PCA.

En R, también puede encontrar útil la predict()función, vea ?predict.prcomp. Por cierto, puede verificar cómo se implementa la proyección de nuevos datos simplemente ingresando:

getS3method("predict", "prcomp")
chl
fuente
24

Solo para agregar a la fantástica respuesta de @ chl (+1), puede usar una solución más liviana:

# perform principal components analysis
pca <- prcomp(data) 

# project new data onto the PCA space
scale(newdata, pca$center, pca$scale) %*% pca$rotation 

Esto es muy útil si no desea guardar todo el pcaobjeto para proyectarlo newdataen el espacio PCA.

Ben Rollert
fuente
5

En SVD, si A es una matriz mxn, las k filas superiores de la matriz singular derecha V, es una representación de dimensión k de las columnas originales de A donde k <= n

A = UΣV t
=> A t = VΣ t U t = VΣU t
=> A t U = VΣU t U = VΣ ----------- (porque U es ortogonal)
=> A t- 1 = VΣΣ -1 = V

Entonces -1V=UNtUΣ

Las filas de A t o las columnas de A se asignan a las columnas de V.
Si la matriz de los nuevos datos sobre los que se realiza PCA para la reducción de dimensiones es Q, matriz aqxn, entonces use la fórmula para calcular - 1 , el resultado R es el resultado deseado. R es una matriz de n por n, y las k filas superiores de R (puede verse como una matriz de k por n) es una nueva representación de las columnas de Q en el espacio de dimensión k.R=QtUΣ

Tom
fuente
2

Creo que los vectores propios (es decir, los componentes principales) deben organizarse como columnas.


fuente