¿Se trata de la inversa de una matriz simétrica (covarianza) definida positiva?


27

En estadística y sus diversas aplicaciones, a menudo calculamos la matriz de covarianza , que es positiva definida (en los casos considerados) y simétrica, para varios usos. A veces, necesitamos el inverso de esta matriz para varios cálculos (formas cuadráticas con este inverso como la (única) matriz central, por ejemplo). Dadas las cualidades de esta matriz y los usos previstos, me pregunto:

¿Cuál es la mejor forma, en términos de estabilidad numérica, de computar o usar (digamos para formas cuadráticas o multiplicación de matriz-vector en general) este inverso? ¿Alguna factorización que puede ser útil?

Respuestas:


14

La factorización de Cholesky conduce a una factorización de Cholesky de la inversa con la matriz triangular superior .C - 1 = S S T S = R - 1do=RTRdo-1=SSTS=R-1

En la práctica, es mejor mantener el factor inverso. Si es escaso, generalmente es aún mejor mantener implícito, ya que los productos de matriz de vectores pueden calcularse resolviendo los dos sistemas triangulares y .S y = C - 1 x R T z = x R y = zRSy=do-1XRTz=XRy=z


25

Una factorización de Cholesky tiene más sentido para la mejor estabilidad y velocidad cuando se trabaja con una matriz de covarianza, ya que la matriz de covarianza será una matriz simétrica semi-definida positiva. Cholesky es un natural aquí. PERO...

SI tiene la intención de calcular una factorización de Cholesky, antes de calcular la matriz de covarianza, hágase un favor. Haga que el problema sea lo más estable posible calculando una factorización QR de su matriz. (Un QR también es rápido). Es decir, si calcula la matriz de covarianza como

C=ATA

donde ha tenido la columna significa eliminada, luego vea que cuando forma , cuadra el número de condición. Así que mejor es formar los factores QR de en lugar de computar explícitamente una factorización de Cholesky de .C A A T AACAATA

A=QR

Como Q es ortogonal,

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

Así obtenemos el factor Cholesky directamente de la factorización QR, en forma de . Si un -menos factorización QR está disponible, esto es aún mejor, ya que no es necesario . Un QR sin es algo rápido de calcular, ya que nunca se genera. Se convierte simplemente en una secuencia de transformaciones del Jefe de familia. (Una columna pivoteada, -less QR sería lógicamente aún más estable, a costa de un poco de trabajo extra para elegir los pivotes). Q Q Q Q QRTQQQQQ

La gran virtud de usar el QR aquí es que es muy estable numéricamente en problemas desagradables. Nuevamente, esto se debe a que nunca tuvimos que formar la matriz de covarianza directamente para calcular el factor Cholesky. Tan pronto como forme el producto , cuadrará el número de condición de la matriz. Efectivamente, pierde información en las partes de esa matriz donde originalmente tenía muy poca información para comenzar.ATA

Finalmente, como señala otra respuesta, ni siquiera necesita calcular y almacenar el inverso, sino usarlo implícitamente en forma de soluciones de retroceso en sistemas triangulares.


55
Y si necesita evaluar una forma cuadrática basada en , puede hacerlo de manera estable calculando , es decir, haciendo una sustitución hacia adelante y tomando la norma. x , C - 1 x = x , ( R T R ) - 1 x = R - T x 2do-1X,do-1X=X,(RTR)-1X=R-TX2
Christian Clason

3

Hice esto por primera vez recientemente, utilizando las sugerencias de mathSE.

SVD fue recomendado por la mayoría, creo, pero opté por la simplicidad de Cholesky:

Si la matriz , descompongo en una matriz triangular usando Cholesky, de modo que . Luego uso la sustitución hacia atrás o hacia adelante (dependiendo de si elijo que L sea triangular superior o inferior), para invertir , de modo que tenga . A partir de esto, puedo calcular rápidamente .M=AAMLM=LLLL1M1=(LL)1=LL1


Empezar con:

M=AA , donde es conocido y es implícitamente simétrico y también es positivo-definido.M

Factorización de Cholesky:

METROLL , donde es cuadrado y no singularL

Reemplazo de espalda:

LL-1 , probablemente la forma más rápida de invertir (aunque no me cite en eso)L

Multiplicación:

METRO-1=(LL)-1=L-L-1

Notación utilizada: los índices inferiores son filas, los índices superiores son columnas y es la transposición deL-L-1


Mi algoritmo Cholesky (probablemente de Recetas Numéricas o Wikipedia)

Lyoj=METROyoj-METROyoMETROjMETROyoyo-METROyoMETROyo

Esto casi puede hacerse en el lugar (solo necesita almacenamiento temporal para los elementos diagonales, un acumulador y algunos iteradores enteros).


Mi algoritmo de sustitución de espalda (de Numerical Recipes, verifique su versión, ya que puede haber cometido un error con el marcado LaTeX)

(L-1)yoj={1/ /LyoyoSi yo=j(-Lyo(L-T)j)/ /Lyoyode otra manera

A medida que aparece en la expresión, el orden que itera sobre la matriz es importante (algunas partes de la matriz de resultados dependen de otras partes que deben calcularse de antemano). Consulte el código de Recetas numéricas para ver un ejemplo completo en código. [Editar]: En realidad, solo verifique el ejemplo de Recetas numéricas. He simplificado demasiado el uso de productos de punto, hasta el punto de que la ecuación anterior tiene una dependencia cíclica, sin importar el orden que repita ...L-T


2

Si sabe que la matriz tiene un inverso (es decir, si es realmente positivo definido) y si no es demasiado grande, entonces la descomposición de Cholesky proporciona un medio apropiado para caracterizar el inverso de una matriz.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.