Calcul / estimation rapide d'un système linéaire de bas rang

10

Les systèmes d'équations linéaires sont omniprésents dans les statistiques de calcul. Un système spécial que j'ai rencontré (par exemple, dans l'analyse factorielle) est le système

Ax=b

A=D+BΩBT
Ici D est une matrice diagonale n×n avec une diagonale strictement positive, Ω est une matrice semi-définie positive symétrique m×m (avec mn ) positive, et B est une matrice arbitraire n×m . On nous demande de résoudre un système linéaire diagonal (facile) qui a été perturbé par une matrice de bas rang. La manière naïve de résoudre le problème ci-dessus consiste à inverser A utilisant la formule de Woodbury . Cependant, cela ne semble pas correct, car les factorisations Cholesky et QR peuvent généralement accélérer considérablement la solution des systèmes linéaires (et des équations normales). Je suis récemment venu sur lel'article suivant , qui semble adopter l'approche de Cholesky, et mentionne l'instabilité numérique de l'inversion de Woodbury. Cependant, le document semble à l'état d'ébauche et je n'ai pas pu trouver d'expériences numériques ou de recherches à l'appui. Quel est l'état de l'art pour résoudre le problème que j'ai décrit?
gappy
la source
1
@gappy, avez-vous envisagé d'utiliser la décomposition QR (ou Cholesky) pour la matrice (le terme moyen de la formule de Woodburry)? Les opérations restantes sont de simples multiplications matricielles. La principale source d'instabilité est alors le calcul de . Depuis Je soupçonne que cette application de QR ou Cholesky combinée à Woodbury sera plus rapide que QR sur toutes matrice . Bien sûr, ce n'est pas un état de l'art, juste des observations générales. Ω - 1 m < < n AΩ1+BD1BTΩ1m<<nA
mpiktas
Je soupçonne que ce que Matthias Seeger préconise est à la hauteur de de l'état de l'art, il est un type très brillant et ce genre de problèmes se répète à plusieurs reprises dans le type de modèles qu'il étudie. J'utilise des méthodes basées sur Cholesky pour les mêmes raisons. Je soupçonne qu'il y a une discussion dans "Matrix Computations" de Golub et Van Loan, qui est la référence standard pour ce genre de chose (bien que je n'ai pas ma copie à portée de main). ϵ
Dikran Marsupial
Notez qu'en prenant votre problème équivaut à résoudre le système où . Donc, cela simplifie un peu le problème. Maintenant, en laissant , nous savons que est semi-défini positif avec au plus valeurs propres positives. Depuis , la recherche des plus grandes valeurs propres et des vecteurs propres correspondants peut se faire de différentes manières. La solution est alors où donne la composition d'origine deB¯=D1/2B(I+B¯ΩB¯T)x=b¯b¯=D1/2bΣ=B¯ΩB¯TΣmmnmx=Q(I+Λ)1QTb¯Σ=QΛQTΣ.
cardinal
Petites corrections: (1) Le système équivalent est et (2) La solution finale est . (J'avais laissé tomber un devant dans les deux cas.) Notez que tous les inverses sont de matrices diagonales et sont donc triviaux. x = D - 1 / 2 Q ( I + Λ ) - 1 Q T D - 1 / 2 b D 1 / 2 x(I+B¯ΩB¯T)D1/2x=b¯x=D1/2Q(I+Λ)1QTD1/2bD1/2x
cardinal
@mpiktas: Je pense que vous vouliez dire car dans la version que vous avez écrite, le produit matriciel n'est pas bien défini en raison d'un décalage de dimension. :)Ω1+BTD1B
cardinal

Réponses:

2

"Matrix Computations" par Golub & van Loan a une discussion détaillée dans le chapitre 12.5.1 sur la mise à jour des factorisations QR et Cholesky après les mises à jour de rang p.

Fabian Pedregosa
la source
Je sais, et les fonctions pertinentes de lapack sont mentionnées à la fois dans l'article que j'ai lié à et dans le livre. Je me demande cependant quelle est la meilleure pratique pour le problème actuel, pas pour le problème de mise à jour générique.
gappy