Qu'est-ce que le sous-espace principal dans l'ACP probabiliste?

10

si est observé matrice de données et est variable latente alorsXY

X=WY+μ+ϵ

Où est la moyenne des données observées, et est l'erreur / bruit gaussien dans les données, et est appelé sous-espace principal.μϵW

Ma question est quand une PCA normale est utilisée, nous obtiendrions un ensemble de vecteurs propres orthonormés pour lesquels ce qui suit est vraiE

Y=EX

Mais dans PPCA, n'est ni orthonormé ni vecteur propre. Alors, comment puis-je obtenir les principaux composants de ?WW

Suite à mon instinct, j'ai cherché ppca dans MATLAB, où je suis tombé sur cette ligne:

À la convergence, les colonnes de W s'étendent sur le sous-espace, mais elles ne sont pas orthonormées. ppca obtient les coefficients orthonormaux, coeff, pour les composantes par orthogonalisation de W.

J'ai modifié le code PPCA un peu pour obtenir le W , il a couru et après orthogonalisation j'ai obtenu P de W .

Pourquoi cette orthogonalisation a donné des vecteurs propres, le long desquels la plupart des variances seront observées?

Je suppose que l'orthogonalisation me donne un ensemble de vecteurs orthogonaux / orthonormaux qui s'étendent sur le sous-espace principal, mais pourquoi cette matrice résultante orthogonalisée est égale à la matrice propre (je sais que la matrice propre en pca est également orthonormée)? Puis-je supposer que le sous-espace principal n'est couvert que par un ensemble unique de vecteurs orthonormaux? Dans ce cas, les deux résultats coïncideront toujours.

user3086871
la source
1
Juste pour effacer ma confusion, j'ai vérifié exactement où le W est calculé et je l'ai affecté à un nouveau paramètre de sortie appelé prin_sub. Je sais que ppca renvoie W en SW, mais juste pour être absolument clair, je l'ai fait de manière redondante. et dans le document un exemple a été donné en utilisant les données 'hald', j'ai utilisé leur code: P = orth (SW) aussi @amoeba J'ai supprimé mes autres questions.
user3086871

Réponses:

19

Ceci est une excellente question.

L'ACP probabiliste (PPCA) est le modèle de variable latente suivant où est une observation et est un latent vecteur variable; généralement . Notez que cela diffère de l'analyse factorielle dans un seul petit détail: la structure de la covariance des erreurs dans PPCA est et dans FA c'est une matrice diagonale arbitraire .

zN(0,I)xN(Wz+μ,σ2I),
xRpzRqqpσ2IΨ

Tipping & Bishop, 1999, Probabilistic Principal Component Analysis prouvent le théorème suivant: la solution de maximum de vraisemblance pour PPCA peut être obtenue analytiquement et est donnée par (Eq. 7): où est une matrice de directions principales principales (vecteurs propres de la matrice de covariance), est la matrice diagonale des valeurs propres correspondantes, est également donnée par une formule explicite, et est une matrice de rotation arbitraire (correspondant aux rotations dans l'espace latent).

WML=Uq(ΛqσML2I)1/2R,
UqqΛqσML2Rq×q

La ppca()fonction implémente l'algorithme de maximisation des attentes pour s'adapter au modèle, mais nous savons qu'il doit converger vers le comme indiqué ci-dessus.WML

Votre question est: comment obtenir si vous connaissez .UqWML

La réponse est que vous pouvez simplement utiliser la décomposition en valeurs singulières de . La formule ci-dessus est déjà de la forme matrice orthogonale fois matrice diagonale fois matrice orthogonale, donc elle donne la SVD, et comme elle est unique, vous obtiendrez comme vecteurs singuliers gauches de .WMLUqWML

C'est exactement ce que fait la ppca()fonction de Matlab à la ligne 305:

% Orthogonalize W to the standard PCA subspace
[coeff,~] = svd(W,'econ');

Puis-je supposer que le sous-espace principal n'est couvert que par un ensemble unique de vecteurs orthonormaux?

Non! Il existe un nombre infini de bases orthogonales couvrant le même sous-espace principal. Si vous appliquez un processus d'orthogonalisation arbitraire à vous n'êtes pas assuré d'obtenir . Mais si vous utilisez SVD ou quelque chose d'équivalent, cela fonctionnera.WMLUq

amibe
la source
1
Quelle excellente réponse! Tu es assez génial! Grande aide! Merci beaucoup. @amoeba
user3086871