Маючи справу з інверсією позитивної певної симетричної (коваріантної) матриці?


27

У статистиці та різних її застосуваннях ми часто обчислюємо матрицю коваріації , яка є позитивно визначеною (у розглянутих випадках) та симетричною для різних цілей. Іноді нам потрібна інверсія цієї матриці для різних обчислень (квадратичні форми з цією оберненою, наприклад, (єдиною) центральною матрицею). Враховуючи якості цієї матриці та цільове використання, мені цікаво:

Який найкращий з точки зору чисельної стійкості спосіб обчислити або використовувати (скажімо, для квадратичних форм або множення матричного вектора взагалі) цей обернений? Якась факторизація, яка може стати у нагоді?

Відповіді:


14

Факторизація Холеського призводить до Чолескоподібної факторизації оберненої C - 1 = S S T з верхньою трикутною матрицею S = R - 1 .C=RTRC1=SSTS=R1

На практиці найкраще тримати зворотний фактор. Якщо є рідким, то, як правило, ще краще зберегти S неявним, оскільки матричні векторні продукти y = C - 1 x можна обчислити, розв’язавши дві трикутні системи R T z = x і R y = z .RSy=C1xRTz=xRy=z


25

Факторизація Чолеського має найбільше значення для найкращої стабільності та швидкості, коли ви працюєте з коваріаційною матрицею, оскільки матриця коваріації буде позитивною напіввизначеною симетричною матрицею. Чолеський тут природний. АЛЕ ...

Якщо ви маєте намір обчислити факторинг Чолеського, перш ніж коли-небудь обчислити матрицю коваріації, зробіть собі послугу. Зробіть проблему максимально стійкою, обчисливши QR-факторизацію вашої матриці. (QR-код теж швидкий.) Тобто, якби ви обчислили матрицю коваріації як

C=ATA

де було видалено засоби стовпця, то подивіться, що коли ви формуєте C , він накреслює номер умови. Таким чином , краще , щоб сформувати QR - фактори A , а не в явному вигляді обчислення Холецкого розкладання A T A .ACAATA

A=QR

Оскільки Q є ортогональним,

С=(QR)ТQR=RТQТQR=RТЯR=RТR

Таким чином , ми отримуємо коефіцієнт Холецкого безпосередньо з QR - розкладу, в формі . Якщо A Q -Менше QR факторизации доступна, це навіть краще , так як вам не потрібно Q . A Q -Менше QR швидка річ , щоб обчислити, так як Q не генерується. Це стає лише послідовністю перетворень домочадців. (Колонка повертається, Q -Менше QR логічно бути ще більш стабільним, за рахунок деякої додаткової роботи , щоб вибрати опорні точки.)RTQQQQQ

Великою чеснотою використання QR тут є те, що він є чисельно стійким при неприємних проблемах. Знову ж таки, це тому, що нам ніколи не довелося формувати коваріаційну матрицю безпосередньо для обчислення коефіцієнта Чолеського. Як тільки ви формуєте добуток , ви квадратуєте номер умови матриці. Ефективно ви втрачаєте інформацію в тих частинах тієї матриці, де спочатку було дуже мало інформації для початку.ATA

Нарешті, як вказує ще одна відповідь, вам навіть не потрібно обчислювати та зберігати обернену, а використовувати її неявно у вигляді зворотних боків на трикутних системах.


5
І якщо вам необхідно оцінити квадратичную форму на основі , ви можете зробити це стабільно шляхом обчислення х , С - 1 х = х , ( R T R ) - 1 х = | | R - T х 2 , тобто роблячи одну заміну вперед і приймаючи норму. C1x,C1x=x,(RTR)1x=RTx2
Крістіан Класон

3

Я зробив це вперше недавно, використовуючи пропозиції математики.

SVD рекомендував більшість, на мій погляд, але я вибрав простоту Чолеського:

Якщо матриця , то я розкладаю M на трикутну матрицю L, використовуючи Чолеського, такий, що M = L L . Тоді я використовую заміну або зворотну заміну (залежно від того, вибрав я верхній або нижній трикутний), щоб перевернути L , таким чином, щоб у мене був L - 1 . З цього я можу швидко обчислити M - 1 = ( L L ) - 1 = L - L - 1 .M=AAMLM=LLLL1M1=(LL)1=LL1


Починати з:

, де M відомий і неявно симетричний, а також є позитивно визначеним.M=AAM

Холеський факторизація:

, де L - квадратний і несингулярнийMLLL

Зворотна заміна:

, мабуть, найшвидший спосіб інвертувати L (не цитуйте мене на цьому)LL1L

Множення:

M1=(LL)1=LL1

LL1


Мій алгоритм Чолеського (можливо, з числових рецептів чи Вікіпедії)

Lij=MijMiMjMiiMiMi

Це майже можна зробити на місці (потрібно лише тимчасове зберігання для діагональних елементів, акумулятора та деяких цілих ітераторів).


Мій алгоритм зворотної заміни (з Numerical Recipes, перевірте їх версію, оскільки я, можливо, помилився з розміткою LaTeX)

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

LT


2

Якщо ви знаєте, що матриця має обернену (тобто, якщо вона дійсно є позитивно визначеною), і якщо вона не надто велика, то розкладання Чолеського дає відповідні засоби для характеристики інверсії матриці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.