양의 명확한 대칭 (공분산) 행렬의 역을 다루는가?


27

통계 및 다양한 응용에서 공분산 행렬을 계산합니다. 공분산 행렬 은 다양한 용도에 대해 양의 명확한 (고려 된 경우) 대칭입니다. 때때로, 우리는 다양한 계산을 위해이 행렬의 역수가 필요합니다 (예를 들어,이 역을 (단독) 중심 행렬로하는 2 차 형태). 이 매트릭스의 품질과 의도 된 용도를 고려할 때 다음과 같이 궁금합니다.

수치 안정성 측면에서이 역을 계산하거나 사용하는 방법은 무엇입니까 (일반적으로 2 차 형태 또는 행렬-벡터 곱셈을 가정 해 봅시다)? 유용한 몇 가지 인수 분해?

답변:


14

hole 레 스키 인수 분해 은 상위 삼각 행렬 을 사용하여 역 의 hole 레 스키와 같은 인수 분해를 유도합니다 .C 1 = S S T S = R 1C=RTRC1=SSTS=R1

실제로는 역 인수를 유지하는 것이 가장 좋습니다. 이 드문 경우 , 두 개의 삼각 시스템 및 를 해결하여 행렬-벡터 곱 를 계산할 수 있으므로 일반적으로 암시 적 으로 유지하는 것이 훨씬 좋습니다 .S y = C - 1 x R T z = x R y = zRSy=C1xRTz=xRy=z


25

공분산 행렬은 양의 반정의 대칭 행렬이므로 공분산 행렬로 작업 할 때 Cholesky 인수 분해는 최상의 안정성과 속도에 가장 적합합니다. hole 레 스키는 자연 스럽습니다. 그러나...

Cholesky 인수 분해를 계산하려는 경우 공분산 행렬을 계산하기 전에 선호하십시오. 행렬의 QR 분해를 계산하여 문제를 최대한 안정적으로 만듭니다. (QR도 빠릅니다.) 즉, 공분산 행렬을 다음과 같이 계산하면

C=ATA

여기서 제거 컬럼 수단을 갖고, 그 형성하면 볼 , 그 사각형 조건 번호. hole 레 스키 분해를 명시 적으로 계산하는 것보다 의 QR 요인을 형성 것이 좋습니다 .C A A T AACAATA

A=QR

Q는 직교이기 때문에

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

따라서 의 형식으로 QR 분해에서 Cholesky 계수를 직접 얻습니다 . 경우 - 덜 QR 인수 분해가 가능하며,이 더 필요하지 않기 때문에 짝수 . 이후 - 덜 QR은 컴퓨팅 빠르고 일 생성되지 않습니다. 그것은 단지 가계 변환의 순서가됩니다. (피벗 을 선택하기위한 추가 작업이 필요하지만 열이 피봇 팅 된 less QR은 논리적으로 훨씬 안정적입니다.)RTQQQQQ

QR을 사용하는 것의 큰 장점은 불쾌한 문제에 대해 수치 적으로 안정적이라는 것입니다. 다시, 이것은 Cholesky factor를 계산하기 위해 공분산 행렬을 직접 형성 할 필요가 없었기 때문입니다. 곱 를 형성하자마자 행렬의 조건 번호를 제곱합니다. 실제로 처음에는 정보가 거의없는 매트릭스 부분에서 정보가 손실됩니다.ATA

마지막으로, 다른 응답에서 알 수 있듯이 역을 계산하고 저장할 필요는 없지만 삼각 시스템의 역 솔버 형태로 암시 적으로 사용하십시오.


5
당신이에 따라 차 형태로 평가해야하는 경우 , 당신은 그 계산하여 안정적으로 수행 할 수 있습니다 즉, 하나의 정방향 대체를 수행하고 규범을 따릅니다. C1x,C1x=x,(RTR)1x=RTx2
Christian Clason

3

최근에 mathSE의 제안을 사용하여 처음 으로이 작업을 수행했습니다.

SVD는 내가 생각하는 대부분의 사람들에게 권장되었지만 Cholesky의 단순성을 선택했습니다.

행렬 이면 Cholesky를 사용하여 과 같이 을 삼각 행렬 분해 합니다. I는 반전으로 (상부 또는 하부 삼각형이되도록 I L을 선택하는지에 따라) 또는 backsubstitution forwardsubstitution를 사용 I를 갖도록, . 이를 통해 빠르게 계산할 수 있습니다 .M=AAMLM=LLLL1M1=(LL)1=LL1


로 시작 :

M=AA . 여기서 은 알려져 있고 내재적으로 대칭이며 양의 한정입니다.M

hole 레 스키 인수 분해 :

MLL , 여기서 은 정사각형이며 비단 수L

역 치환 :

LL1 , 아마도 을 뒤집는 가장 빠른 방법 일 것 입니다 (그렇지만 인용하지 마십시오)L

곱셈:

M1=(LL)1=LL1

사용 된 표기법 : 하위 인덱스는 행이고 상위 인덱스는 열이며 은 의 전치입니다.LL1


내 hole 레 스키 알고리즘 (아마도 수치 레시피 또는 위키 백과)

Lij=MijMiMjMiiMiMi

이것은 거의 제자리에서 수행 할 수 있습니다 (대각선 요소, 누산기 및 일부 정수 반복자에 대한 임시 저장소 만 필요합니다).


내 대체 알고리즘 (Numerical Recipes에서 LaTeX 마크 업으로 실수했을 수 있으므로 버전을 확인하십시오)

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

식에 가 표시되므로 행렬을 반복하는 순서가 중요합니다 (결과 행렬의 일부 부분은 미리 계산해야하는 다른 부분에 따라 다름). 코드의 전체 예제는 Numerical Recipes 코드를 확인하십시오. [편집] : 사실, Numerical Recipes 예제를 확인하십시오. 도트 제품을 사용하여 너무 단순화했습니다. 위의 방정식은 반복 순서에 관계없이 순환 종속성을 갖습니다 ...LT


2

행렬에 역수가 있음을 알고 있고 (정말 양수이면) Cholesky 분해는 행렬의 역을 특징 짓는 적절한 수단을 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.