Berulang “solver” untuk


9

Saya tidak bisa membayangkan saya orang pertama yang memikirkan masalah berikut, jadi saya akan puas dengan referensi (tapi jawaban yang lengkap dan terperinci selalu dihargai):

Katakanlah Anda memiliki kepastian positif simetris . n dianggap sangat besar, jadi menahan Σ dalam memori tidak mungkin. Anda dapat, bagaimanapun, mengevaluasi Σ x , untuk setiap x R n . Dengan beberapa x R n , Anda ingin mencari x t Σ - 1 x .ΣRn×nnΣΣxxRnxRnxtΣ1x

Solusi pertama yang muncul di pikiran adalah menemukan menggunakan (katakanlah) gradien konjugat. Namun, ini tampaknya agak sia-sia - Anda mencari skalar dan dalam prosesnya Anda menemukan vektor raksasa di R n . Tampaknya lebih masuk akal untuk menemukan metode untuk menghitung skalar secara langsung (yaitu tanpa melewati Σ - 1 x ). Saya mencari metode semacam ini.Σ1xRnΣ1x


2
Apakah matriks Anda timbul dari untuk beberapa "singkat & lebar" persegi panjang A ? Σ=ATAA
GeoMatt22

@ GeoMatt22 sayangnya tidak. Tetapi katakanlah itu terjadi - apa yang akan Anda sarankan dalam kasus itu?
Yair Daon

1
Yair, saya hanya berpikir jika ada beberapa matriks yang lebih kecil untuk bekerja dengan ... tidak yakin itu akan membantu. Sudahkah Anda mencoba googling "matrix mahalanobis distance" atau yang serupa? Maaf tidak bisa membantu lagi!
GeoMatt22

Terima kasih @ GeoMatt22, saya tidak dapat menemukan apa pun secara online.
Yair Daon

Jawaban:


2

Saya rasa saya belum pernah mendengar metode apa pun yang melakukan apa yang Anda inginkan tanpa benar-benar menyelesaikan .y=Σ1x

Satu-satunya alternatif yang bisa saya tawarkan adalah jika Anda tahu sesuatu tentang vektor eigen dan -nilai . Katakanlah Anda tahu bahwa mereka adalah λ i , v i , maka Anda dapat mewakili Σ = V T L V di mana kolom V adalah v i , dan L adalah matriks diagonal dengan nilai eigen pada diagonal. Akibatnya, Anda memiliki Σ - 1 = V T L - 1 V dan Anda mendapatkan bahwa x T Σ - 1 x =Σλi,viΣ=VTLVVviLΣ1=VTL1V Ini tentu saja mengharuskan Anda untuk menyimpansemuanilai eigen, yaitu, matriks V penuh. Tetapi, jika Anda mengetahui bahwa hanya beberapa nilai eigen dari Σ yang kecil, ucapkan m pertama, dan sisanya sangat besar sehingga Anda dapat mengabaikan semua istilah dengan λ - 1 i untuk i > m , maka Anda dapat memperkirakan

xTΣ1x=xTVTL1Vx=iλi1(viTx)2.
VΣmλi1i>m Hal ini kemudian hanya mengharuskan Anda untuk menyimpan m vektor, bukan semua n vektor eigen.
xTΣ1x=i=1nλi1(viTx)2i=1mλi1(viTx)2.
mn

y=Σ1x


m

xTΣ1x

Bisakah Anda menyarankan metode itu?
Yair Daon

Ada banyak atau sedikit pemecah nilai eigen di sekitar. ARPACK dan SLEPc berbasis PETSc mungkin adalah yang paling banyak digunakan.
Wolfgang Bangerth

mn×n
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.