Traiter l'inverse d'une matrice symétrique définie positive (covariance)?


27

En statistique et ses diverses applications, nous calculons souvent la matrice de covariance , qui est définie positive (dans les cas considérés) et symétrique, pour différentes utilisations. Parfois, nous avons besoin de l'inverse de cette matrice pour divers calculs (formes quadratiques avec cet inverse comme (seule) matrice centrale, par exemple). Compte tenu des qualités de cette matrice et des utilisations envisagées, je me demande:

Quelle est la meilleure façon, en termes de stabilité numérique, de calculer ou d'utiliser (disons pour les formes quadratiques ou la multiplication matrice-vecteur en général) cet inverse? Une factorisation qui peut être utile?

Réponses:


14

La factorisation de Cholesky C=RTR conduit à une factorisation de type Cholesky de l'inverse C1=SST avec la matrice triangulaire supérieure S=R1 .

En pratique, il est préférable de garder l'inverse factorisé. Si R est clairsemé, il est généralement préférable de garder S implicite, car les produits matriciels vectoriels y=C1x peuvent être calculés en résolvant les deux systèmes triangulaires RTz=x et Ry=z .


25

Une factorisation de Cholesky a le plus de sens pour la meilleure stabilité et vitesse lorsque vous travaillez avec une matrice de covariance, car la matrice de covariance sera une matrice symétrique semi-définie positive. Cholesky est un naturel ici. MAIS...

SI vous avez l'intention de calculer une factorisation de Cholesky, avant de calculer la matrice de covariance, rendez-vous service. Rendez le problème stable au maximum en calculant une factorisation QR de votre matrice. (Un QR est aussi rapide.) Autrement dit, si vous calculez la matrice de covariance comme

C=ATA

ACAATA

A=QR

Puisque Q est orthogonal,

C=(QR)TQR=RTQTQR=RTIR=RTR

RTQQQQQ

ATA

Enfin, comme le souligne une autre réponse, vous n'avez même pas besoin de calculer et de stocker l'inverse du tout, mais de l'utiliser implicitement sous la forme de backsolves sur des systèmes triangulaires.


5
C1x,C1x=x,(RTR)1x=RTx2

3

Je l'ai fait pour la première fois récemment, en utilisant les suggestions de mathSE.

SVD a été recommandé par la plupart je pense, mais j'ai opté pour la simplicité de Cholesky:

Si la matrice , alors je décompose en une matrice triangulaire utilisant Cholesky, telle que . J'utilise ensuite la substitution arrière ou la substitution avant (selon que je choisis L pour être triangulaire supérieur ou inférieur), pour inverser , de sorte que j'ai . À partir de là, je peux calculer rapidement .M=AAMLM=LLLL1M1=(LL)1=LL1


Commencer avec:

M=AA , où est connu et est implicitement symétrique et est également positif-défini.M

Factorisation de Cholesky:

MLL , où est carré et non singulierL

Remplacement arrière:

LL1 , probablement le moyen le plus rapide pour inverser (ne me citez pas là-dessus cependant)L

Multiplication:

M1=(LL)1=LL1

Notation utilisée: les indices inférieurs sont des lignes, les indices supérieurs sont des colonnes et est la transposition deLL1


Mon algorithme Cholesky (probablement de Recettes numériques ou Wikipedia)

Lij=MijMiMjMiiMiMi

Cela peut presque être fait sur place (vous n'avez besoin que d'un stockage temporaire pour les éléments diagonaux, un accumulateur et certains itérateurs entiers).


Mon algorithme de substitution arrière (à partir de Recettes numériques, vérifiez leur version car j'ai peut-être fait une erreur avec le balisage LaTeX)

(L1)ij={1/Liiif i=j(Li(LT)j)/Liiotherwise

Comme apparaît dans l'expression, l'ordre que vous parcourez la matrice est important (certaines parties de la matrice de résultat dépendent d'autres parties de celle-ci qui doivent être calculées au préalable). Vérifiez le code des recettes numériques pour un exemple complet dans le code. [Modifier]: En fait, vérifiez simplement l'exemple de recettes numériques. J'ai trop simplifié trop en utilisant des produits scalaires, au point que l'équation ci-dessus a une dépendance cyclique quel que soit l'ordre dans lequel vous répétez ...LT


2

Si vous savez que la matrice a un inverse (c'est-à-dire si elle est bien définie positive) et si elle n'est pas trop grande, la décomposition de Cholesky donne un moyen approprié pour caractériser l'inverse d'une matrice.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.