Esta pregunta trata sobre una manera eficiente de calcular los componentes principales.
Muchos textos sobre PCA lineal abogan por el uso de la descomposición de valores singulares de los datos de casos . Es decir, si tenemos datos y queremos reemplazar las variables (sus columnas ) por componentes principales, hacemos SVD: , valores singulares (raíces cuadradas de los valores propios) que ocupan la diagonal principal de , los vectores propios derechos son la matriz de rotación ortogonal de las variables de los ejes en componentes de los ejes, los vectores propios izquierdos son como , solo para los casos. Entonces podemos calcular los valores de los componentes como .
Otra forma de hacer PCA de variables es mediante la descomposición de matriz cuadrada (es decir, pueden ser correlaciones o covarianzas , etc., entre las variables). La descomposición puede ser descomposición propia o descomposición de valores singulares: con una matriz semidefinida positiva simétrica cuadrada, darán el mismo resultado con valores propios que la diagonal de y como se describió anteriormente. Los valores de los componentes serán .
Ahora, mi pregunta: si data es una matriz grande, y el número de casos es (que a menudo es un caso) mucho mayor que el número de variables, entonces se espera que way (1) sea mucho más lento que way (2 ), porque way (1) aplica un algoritmo bastante costoso (como SVD) a una matriz grande; calcula y almacena una matriz enorme que realmente no necesitamos en nuestro caso (el PCA de las variables). Si es así, ¿ por qué tantos libros de texto parecen abogar o solo mencionar la única forma (1)? ¿Quizás es eficiente y me falta algo?
Joliffe, Principal component analysis, 2nd ed.
realidad, Joliffe describe ambas formas, pero en el capítulo central sobre PCA dice sobre la manera 1, por lo que puedo recordar.
R
svd