L'ACP est-elle toujours réalisée via la composition par équigène de la matrice de covariance lorsque la dimensionnalité est supérieure au nombre d'observations?

10

J'ai une matrice , contenant mes échantillons dans l' espace . Je souhaite maintenant coder ma propre analyse en composantes principales (ACP) dans Matlab. Je rabaisse d'abord à .X N = 20 D = 100 X X 020×100XN=20=100XX0

J'ai lu dans le code de quelqu'un que dans de tels scénarios où nous avons plus de dimensions que d'observations, nous ne décomposons plus la matrice de covariance du . Au lieu de cela, nous Eigen-decompose . Pourquoi est-ce correct?1X01N-1X0X0T

La matrice de covariance normale est de taille , dont chaque élément nous indique la covariance entre deux dimensions. Pour moi, n'est même pas aux bonnes dimensions! C'est une matrice , alors que nous dirait-elle? Covariance entre deux observations?!1× N×N1N-1X0X0TN×N

Sibbs Gambling
la source
La réponse à votre question est dans le cas où - comme il résulte de votre présentation de votre tâche - vous n'avez pas besoin de la matrice de covariance des colonnes pour elle-même. Vous ne le vouliez que comme un moyen d'obtenir des PC. Droite? Mais les mêmes résultats PCA peuvent être obtenus via les valeurs propres de X'Xet XX'(ainsi que svd de Xet X'). Ce qui est appelé "chargements" dans un cas sera appelé "scores pc" dans l'autre et vice versa. Parce que les deux ne sont que des coordonnées ( voir, par exemple ) et les axes, les "dimensions principales" sont les mêmes.
ttnphns
1
(suite) Si c'est le cas et que vous êtes libre de choisir lequel décomposer - il est sage de décomposer ce qui doit être fait plus rapidement / plus efficacement. Quand n<pil faut moins de RAM et moins de temps pour se décomposer XX'car il est de plus petite taille.
ttnphns du
@ttnphns Grande explication. Je vois le point maintenant. Cependant, j'ai toujours des problèmes pour passer de la propre XX'à l'ordinateur. Pourriez-vous s'il vous plaît me montrer très brièvement comment? Étant donné que les PC ne sont que des vecteurs propres de la matrice de covariance, j'ai tenté de passer de la valeur propre de XX'à la valeur propre de la matrice de covariance X'X, mais j'ai échoué.
Sibbs Gambling
1
Je dois y aller. Peut-être que @amoeba (qui est beaucoup plus agile en algèbre que moi) ou un autre lecteur se penchera bientôt ici et vous aidera. À votre santé.
ttnphns
1
@ttnphns: Fait :)
amibe

Réponses:

22

La matrice de covariance est de taille et est donnée par C = 1×

C=1N-1X0X0.

La matrice dont vous parlez n'est bien sûr pas une matrice de covariance; il est appelé matrice de Gram et est de taille : G = 1N×N

g=1N-1X0X0.

L'analyse en composantes principales (ACP) peut être implémentée via la composition par eigend de l'une ou l'autre de ces matrices. Ce ne sont que deux façons différentes de calculer la même chose.

La façon la plus simple et la plus utile de voir cela est d'utiliser la décomposition en valeurs singulières de la matrice de données . En branchant cela dans les expressions pour C et G , nous obtenons: CX=USVCg

C=VS2N-1Vg=US2N-1U.

Les vecteurs propres de la matrice de covariance sont les directions principales. Les projections des données sur ces vecteurs propres sont les principales composantes; ces projections sont données par U S . Principaux composants mis à l' échelle à la longueur de l' unité sont données par U . Comme vous le voyez, les vecteurs propres de la matrice de Gram sont exactement ces composants principaux mis à l'échelle. Et les valeurs propres de C et G coïncident.VUSUCg

N<N<


amibe
la source
1
Très bonne réponse! Je ne savais pas qu'il avait un nom! Merci beaucoup! Je suis maintenant confiant de l'utiliser pour accélérer mon calcul.
Sibbs Gambling
3
US/(n-1)VUXU
Cette réponse est plus claire que beaucoup d'expositions que j'ai vues dans les livres. Merci.
usεr11852
À des fins purement de références: je pense que l'article de 1969 sur la technométrie de IJ Good " Quelques applications de la décomposition singulière d'une matrice " est l'un des premiers à les référencer complètement.
usεr11852
1
@MattWenham Précisément.
amoeba