Cette question concerne un moyen efficace de calculer les principaux composants.
De nombreux textes sur l'ACP linéaire préconisent l'utilisation de la décomposition en valeurs singulières des données casewise . Autrement dit, si nous avons des données et que nous voulons remplacer les variables (ses colonnes ) par des composants principaux, nous faisons SVD: , des valeurs singulières (racines carrées des valeurs propres) occupant la diagonale principale de , vecteurs propres droits sont la matrice de rotation orthogonale des variables-axes en composantes-axes, les vecteurs propres gauche sont comme , seulement pour les cas. Nous pouvons alors calculer les valeurs des composants comme .
Une autre façon de réaliser l'ACP des variables consiste à décomposer la matrice carrée (c'est-à-dire que peut être des corrélations ou des covariances, etc., entre les variables). La décomposition peut être une décomposition propre ou une décomposition en valeurs singulières: avec une matrice semi-définie positive symétrique carrée, ils donneront le même résultat avec des valeurs propres comme la diagonale de et comme décrit précédemment. Les valeurs des composants seront .
Maintenant, ma question: si les données sont une grande matrice et que le nombre de cas est (ce qui est souvent un cas) beaucoup plus grand que le nombre de variables, alors la voie (1) devrait être beaucoup plus lente que la voie (2), parce que way (1) applique un algorithme assez cher (tel que SVD) à une grande matrice; il calcule et stocke une énorme matrice dont nous n'avons vraiment pas besoin dans notre cas (le PCA des variables). Si c'est le cas , pourquoi tant de texbooks semblent-ils préconiser ou simplement mentionner la seule façon (1)? Peut-être qu'il est efficace et je manque quelque chose?
Joliffe, Principal component analysis, 2nd ed.
chose à mentionner, en fait, Joliffe décrit les deux façons, mais dans le chapitre central sur PCA, il dit à propos de la voie 1, pour autant que je me souvienne.
R
svd