Processing math: 100%

25 votos

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

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

He calculado PCA en lenguaje R utilizando prcomp . Ahora debería poder multiplicar mi vector por la matriz de rotación PCA. Los componentes principales de esta matriz, ¿deben ordenarse en filas o en columnas?

31voto

user37531 Puntos 11

Sólo para añadir a la fantástica respuesta de @chl (+1), puedes utilizar una solución más ligera:

# 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 pca objeto para proyectar newdata en el espacio PCA.

31voto

DavLink Puntos 101

Bueno, @Srikant ya te ha dado la respuesta correcta, ya que la matriz de rotación (o de cargas) contiene vectores propios ordenados por columnas, de modo que sólo tienes que multiplicar (usando %*% ) su vector o matriz de nuevos datos con, por ejemplo prcomp(X)$rotation . Sin embargo, hay que tener cuidado con los parámetros adicionales de centrado o escalado que se aplicaron al calcular los EV del ACP.

En R, también puede resultarle útil la función predict() véase ?predict.prcomp . BTW, puede comprobar cómo se implementa la proyección de nuevos datos simplemente introduciendo:

getS3method("predict", "prcomp")

9voto

Tom Puntos 168

En SVD, si A es una matriz m x n, 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 = UV t
\=> A t \= V t U t \= VU t
\=> A t U = VU t U = V -----------(porque U es ortogonal)
\=> A t U -1 \=V -1 \=V

Así que V=AtU -1

Las filas de A t o las columnas de A corresponden a las columnas de V.
Si la matriz de los nuevos datos sobre la que se va a realizar el ACP para la reducción de dimensiones es Q, una matriz q x n, utilice la fórmula para calcular R=QtU -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.

3voto

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

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