Pozitif bir kesin simetrik (kovaryans) matrisin tersi ile başa çıkmak


27

İstatistiklerde ve çeşitli uygulamalarında, genellikle çeşitli kullanımlar için pozitif kesin (dikkate alınan durumlarda) ve simetrik olan kovaryans matrisini hesaplıyoruz . Bazen, çeşitli hesaplamalar için bu matrisin tersine ihtiyaç duyarız (örneğin, (sadece) merkez matrisiyle bu tersi ile ikinci dereceden formlar). Bu matrisin nitelikleri ve kullanım amaçları göz önüne alındığında, merak ediyorum:

Sayısal kararlılık açısından, hesaplama ya da kullanma yolunda en iyisi nedir (genel olarak karesel formlar veya matris-vektör çarpımı için diyelim)? İşe yarayabilecek bazı faktörler?

Yanıtlar:


14

Cholesky faktoringi , ters tersinin Cholesky benzeri bir faktörleşmesine , üst üçgen matrisi yol açar .C=RTRC1=SSTS=R1

Uygulamada, ters faktörü tutmak en iyisidir. Eğer seyrekse, kapalı tutulması genellikle daha iyidir , çünkü matris-vektör ürünleri iki üçgen sistemi ve çözerek hesaplanabilir .RSy=C1xRTz=xRy=z


25

Bir Cholesky faktoringi, bir kovaryans matrisi ile çalışırken en iyi stabilite ve hız için en anlamlı olanıdır, çünkü kovaryans matrisi, yarı-kesin simetrik matris pozitif olacaktır. Cholesky burada doğal bir şey. FAKAT...

Eğer bir Cholesky faktoringini hesaplamayı düşünüyorsanız, kovaryans matrisini hesaplamadan önce kendinize bir iyilik yapın. Matrisinizde bir QR faktoringi hesaplayarak sorunu maksimum derecede sabit hale getirin. (Bir QR de hızlıdır.) Kovaryans matrisini şu şekilde hesaplarsanız,

C=ATA

burada çıkarıldı kolon aracı aldı, daha sonra bu formu görmek , bu kareler durum sayısı. Bu yüzden , Cholesky faktörleştirmesini açıkça hesaplamak yerine , QR faktörlerini oluşturmak daha iyidir .ACAATA

A=QR

Q ortogonal olduğundan,

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

Böylece Cholesky faktörünü doğrudan QR faktoringinden, biçiminde elde ederiz . Bir Eğer -daha az QR çarpanlara mevcuttur, bu daha iyi gerekmez çünkü bile olduğunu . Bir beri -daha az QR, hesaplama için hızlı bir şeydir oluşturulan asla. Sadece Hanehalkı dönüşümlerinin bir dizisi haline gelir. (A sütunu döndürülebilir, -daha az QR mantıksal pivotlar seçmek için bazı ekstra iş pahasına, hatta daha istikrarlı olacaktır.)RTQQQQQ

QR'yi burada kullanmanın en büyük erdemleri, kötü problemlerde sayısal olarak kararlı olmasıdır. Yine, bunun nedeni, Cholesky faktörünü hesaplamak için doğrudan kovaryans matrisini oluşturmak zorunda olmamamızdır. ürününü oluşturduğunuz anda , matrisin koşul numarasını düzenlersiniz. Etkili olarak, başlangıçta çok az bilgiye sahip olduğunuz bu matrisin bölümlerindeki bilgileri kaybediyorsunuz.ATA

Son olarak, bir başka cevabın işaret ettiği gibi, tersini de hesaplayıp saklamanıza gerek yoktur, ancak üçgen sistemlerdeki ters çözücüler şeklinde örtük olarak kullanın.


5
Ve eğer dayanan ikinci dereceden bir formu değerlendirmeniz gerekirse , bunu hesaplayarak bunu kararlı bir şekilde yapabilirsiniz. , yani bir ileriye doğru değiştirme yapıyor ve norm alıyor. C1x,C1x=x,(RTR)1x=RTx2
Christian Clason

3

Bunu ilk defa mathSE'in önerilerini kullanarak yaptım.

SVD sanırım çoğu kişi tarafından önerildi, ancak Cholesky'nin basitliğini seçtim:

Eğer matris , Cholesky kullanarak, üçgen matris . Daha sonra ters için (üst ya da alt üçgen olduğu bir L tercih bağlı olarak) backsubstitution veya forwardsubstitution kullanmak ı sahip olduğu biçimde, . Bundan hızlı bir şekilde hesaplayabilir .M=AAMLM=LLLL1M1=(LL)1=LL1


İle başla:

M=AA , ki burada bilinir ve dolaylı olarak simetriktir ve ayrıca pozitif-kesindir.M

Cholesky faktoringi:

MLL , burada kare ve tekil olmayanL

Back-ikamesi:

LL1 , muhtemelen yi ters çevirmenin en hızlı yolu (bu konuda bana alıntı yapma)L

Çarpma işlemi:

M1=(LL)1=LL1

Kullanılan gösterim: Alt indeksler satırlar, üst indeksler sütunlar ve , in devridir.LL1


Cholesky algoritmam (muhtemelen Nümerik Tarifler veya Wikipedia'dan)

Lij=MijMiMjMiiMiMi

Bu neredeyse yerinde yapılabilir (diyagonal elemanlar, bir akümülatör ve bazı tamsayı yineleyiciler için geçici olarak depolamaya ihtiyacınız vardır).


Geri ikame algoritmam (Numerical Recipes'dan, LaTeX işaretlemesinde bir hata yapmış olabileceğim için sürümlerini kontrol et)

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

Olarak matrisi üzerine Eğer yineleme önemli olduğu düzeni (sonuç matrisinin bazı parçalar önceden hesaplanmalıdır bunun diğer parçalar bağlıdır), ifade görünür. Koddaki eksiksiz bir örnek için Sayısal Tarifler kodunu kontrol edin. [Düzenle]: Aslında, Nümerik Tarifler örneğini kontrol etmen yeterli. Nokta-ürünlerini kullanarak çok fazla sadeleştirdim, yukarıdaki denklemin hangi sırayla yinelemelisiniz olursa olsun döngüsel bir bağımlılığı olduğu noktaya gelince ...LT


2

Matrisin bir tersi olduğunu (yani, gerçekten kesin olarak tanımlanmışsa) biliyorsanız ve çok büyük değilse, Cholesky ayrışımı, bir matrisin tersini karakterize etmek için uygun bir yol sunar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.