Cálculo / estimativa rápidos de um sistema linear de baixo escalão

10

Os sistemas lineares de equações são difundidos nas estatísticas computacionais. Um sistema especial que encontrei (por exemplo, na análise fatorial) é o sistema

Ax=b

onde Aqui é uma matriz diagonal com uma diagonal estritamente positiva, é uma matriz semi-definida positiva simétrica (com ) e é uma matriz arbitrária . Somos solicitados a resolver um sistema linear diagonal (fácil) que foi perturbado por uma matriz de baixo escalão. A maneira ingênua de resolver o problema acima é inverter usando a fórmula de Woodbury . No entanto, isso não parece certo, pois as fatorações de Cholesky e QR geralmente podem acelerar drasticamente a solução de sistemas lineares (e equações normais). Eu vim recentemente no D n × n Ω m × m m n B n × m A

A=D+BΩBT
Dn×nΩm×mmnBn×mANo artigo seguinte , isso parece adotar a abordagem de Cholesky e menciona a instabilidade numérica da inversão de Woodbury. No entanto, o artigo parece em rascunho e não consegui encontrar experimentos numéricos ou pesquisas de apoio. Qual é o estado da arte para resolver o problema que descrevi?
gappy
fonte
11
@ gappy, você considerou usar a decomposição QR (ou Cholesky) para matriz (o termo do meio na fórmula de Woodburry)? As operações restantes são multiplicações simples de matriz. A principal fonte de instabilidade é o cálculo de . Desde eu suspeita que este pedido de QR ou de Cholesky combinado com Woodbury será mais rápido do que QR em toda matriz . É claro que isso não é um estado da arte, apenas observações gerais. Ω - 1 m < < n AΩ1+BD1BTΩ1m<<nA
mpiktas
Eu suspeito que o que Matthias Seeger defende está dentro do estado da arte, ele é um cara muito brilhante e esses tipos de problemas surgem repetidamente no tipo de modelos que ele investiga. Eu uso métodos baseados em Cholesky pelas mesmas razões. Suspeito que exista uma discussão em "Matrix Computations" de Golub e Van Loan, que é a referência padrão para esse tipo de coisa (embora eu não tenha minha cópia em mãos). ϵ
Dikran Marsupial
Observe que, ao tomar seu problema é equivalente à solução do sistema onde . Então, isso simplifica um pouco o problema. Agora, deixando , sabemos que é semidefinido positivo com no máximo valores próprios positivos. Como , encontrar os maiores valores próprios e os vetores próprios correspondentes pode ser feito de várias maneiras. A solução é então onde fornece a composição automática de(I+ ˉ B ohms ˉ B T)x= ˉ b ˉ b =D-1/2bΣ= ˉ B ohms ˉ B TΣmm«nmx=Q(I+Λ)-1QT ˉ b ΣB¯=D1/2B(I+B¯ΩB¯T)x=b¯b¯=D1/2bΣ=B¯ΩB¯TΣmmnmx=Q(I+Λ)1QTb¯ ΣΣ=QΛQTΣ.
cardeal
Pequenas correções: (1) O sistema equivalente é e (2) A solução final é . (Eu coloquei um na frente de nos dois casos.) Observe que todos os inversos são de matrizes diagonais e, portanto, são triviais. 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: Eu acho que você quis dizer pois na versão que você escreveu o produto da matriz não está bem definido devido a uma incompatibilidade de dimensão. :)Ω1+BTD1B
cardeal

Respostas:

2

"Matrix Computations" de Golub & van Loan tem uma discussão detalhada no capítulo 12.5.1 sobre a atualização de fatorações QR e Cholesky após atualizações no rank-p.

Fabian Pedregosa
fonte
Eu sei, e as funções relevantes do lapack são mencionadas no artigo que vinculei e no livro. Gostaria de saber, no entanto, qual é a melhor prática para o problema em questão, não para o problema genérico de atualização.
gappy