Comment rendre une matrice positive définie?

10

J'essaie d'implémenter un algorithme EM pour le modèle d'analyse factorielle suivant;

Wj=μ+Baj+ejforj=1,,n

est un vecteur aléatoire à p dimensions, a j est un vecteur à q dimensions de variables latentes et B est une matrice pxq de paramètres.WjajB

En raison d'autres hypothèses utilisées pour le modèle, je sais que D est la matrice de covariance de variance des termes d'erreur e j , D = diag ( σ 2 1 , σ 2 2 , ..., σ 2 p ).WjN(μ,BB+D)DejDσ12σ22σp2

Pour l'algorithme EM au travail, je fais des itérations de dôme impliquant une estimation de et D matrices et pendant ces itérations je calculer l'inverse de B B ' + D à chaque itération en utilisant de nouvelles estimations de B et D . Malheureusement au cours des itérations, B B + D perd son caractère définitif positif (mais cela ne devrait pas parce qu'il s'agit d'une matrice de variance-covariance) et cette situation ruine la convergence de l'algorithme. Mes questions sont:BDBB+DBDBB+D

  1. Cette situation montre-t-elle qu'il y a un problème avec mon algorithme, car la probabilité devrait augmenter à chaque étape de l'EM?

  2. Quels sont les moyens pratiques pour rendre une matrice positive définie?

Edit: Je calcule l'inverse en utilisant un lemme d'inversion de matrice qui déclare que:

(BB+D)1=D1D1B(Iq+BD1B)1BD1

où le côté droit n'implique que les inverses des matrices .q×q

Andy Amos
la source
1
Cela pourrait aider à mieux comprendre comment «perd» son caractère définitif positif. Cela implique que B B ou D (ou les deux) deviennent définis non positifs. C'est difficile à faire lorsque B B est calculé directement à partir de B et encore plus difficile lorsque D est calculé comme une matrice diagonale avec des carrés sur sa diagonale! BB+DBBDBBBD
whuber
@whuber Typiquement dans FA , donc B B ' n'est jamais défini définitivement positif. Mais (théoriquement) B B + D devrait l'être, en supposant que les σ 2 j sont tous supérieurs à zéro. q<pBBBB+Dσj2
JMS
Ceci est lié à cette question: stats.stackexchange.com/questions/6364/…
Gilead
1
@JMS Merci. Je pense que mon commentaire est toujours pertinent: peut être indéfini, mais ne doit toujours pas avoir de valeurs propres négatives. Cependant, des problèmes surviendront lorsque le plus petit des σ 2 i est comparable à une erreur numérique dans l'algorithme d'inversion. Si tel est le cas, une solution consiste à appliquer SVD à B B ' et zéro les valeurs propres vraiment petites (ou négatives), puis recalcule B B ' et ajouter D . BBσi2BBBBD
whuber
1
Ce doit être de petits éléments en ; I q + B D - 1 B devrait être bien conditionné sinon puisque q < pDIq+BD1Bq<p
JMS

Réponses:

3

OK, puisque vous faites FA, je suppose que est de rang de colonne complet q et q < p . Nous avons besoin de quelques détails supplémentaires. Cela peut être un problème numérique; cela peut également être un problème avec vos données.Bqq<p

Comment calculez-vous l'inverse? Avez-vous besoin de l'inverse explicitement ou pouvez-vous ré-exprimer le calcul comme la solution d'un système linéaire? (c.-à-d. pour obtenir résoudre A x = b pour x, qui est généralement plus rapide et plus stable)A1bAx=b

Qu'arrive-t-il à ? Les estimations sont-elles vraiment petites / 0 / négatives? Dans un certain sens, c'est le lien critique, car B B ' est bien sûr déficient en rang et définit une matrice de covariance singulière avant d'ajouter D , vous ne pouvez donc pas l'inverser. L'ajout de la matrice diagonale positive D le rend techniquement complet, mais B B + D pourrait encore être horriblement mal conditionné si D est petit.DBBDDBB+DD

Souvent, l'estimation des variances idiosyncratiques (votre , les éléments diagonaux de D ) est proche de zéro ou même négative; ce sont les cas Heywood. Voir par exemple http://www.technion.ac.il/docs/sas/stat/chap26/sect21.htm (tout texte FA devrait également en discuter, c'est un problème très ancien et bien connu). Cela peut résulter de la spécification incorrecte du modèle, des valeurs aberrantes, de la malchance, des éruptions solaires ... le MLE est particulièrement sujet à ce problème, donc si votre algorithme EM est conçu pour obtenir le MLE.σi2D

Si votre algorithme EM approche d'un mode avec de telles estimations, il est possible que perde sa définition positive, je pense. Il existe différentes solutions; Personnellement, je préférerais une approche bayésienne, mais même alors, vous devez être prudent avec vos priors (des priors incorrects ou même des priors appropriés avec trop de masse près de 0 peuvent avoir le même problème pour essentiellement la même raison)BB+D

JMS
la source
Permettez-moi de souligner que dans la partie principale des algorithmes, vous ne voulez jamais inverser réellement une matrice. Vous devrez peut-être à la toute fin pour obtenir les estimations standard. Voir cet article de blog johndcook.com/blog/2010/01/19/dont-invert-that-matrix
Samsdram
Les valeurs de la matrice D deviennent de plus en plus petites à mesure que le nombre d'itérations augmente. C'est peut-être le problème comme vous l'avez souligné.
Andy Amos
1
@Andy Amos: Je parierais de l'argent dessus. Comme @whuber le fait remarquer, il est presque impossible que ait des valeurs propres négatives si vous le calculez directement, et les zéros (de défaut de classement) devraient être pris en compte en ajoutant D depuis sa diagonale positive - à moins que certains d'entre eux les éléments sont vraiment petits. Essayez de générer des données à partir d'un modèle où σ 2 i sont assez grandes et q B 2 i qσ 2 i . Plus il y a de données, mieux c'est pour que les estimations soient précises et stables. Cela vous indiquera au moins s'il y a un problème dans votre implémentation. BBDσi2qBiq2σi2
JMS