Loading [MathJax]/jax/output/CommonHTML/jax.js

Table of Contents

개요

QR 분해를 이용한 고유값 분석 알고리듬.

QR 분해

그람-슈미트 방법을 행렬로 표현한 것이다. 예컨대 크기 n×n인 실수 대칭행렬 A를 생각해보자: A=(a0a1a2) A가 가지고 있는 열 벡터 a0,a1,a2,로부터 서로 직교하는 정규화된 벡터 q0,q1,q2,를 만들어내고자 한다. 즉 qiqj=δij이며 이 때에 δij크로네커 델타이다.

그람-슈미트 방법에 따르면 아래의 방식으로 그러한 {qi}를 찾을 수 있다: u0=a0q0=u0/|u0|u1=a1(q0a1)q0q1=u1/|u1|u2=a2(q0a2)q0(q1a2)q1q2=u2/|u2|

식을 다시 정리하면 a0=|u0|q0a1=|u1|q1+(q0a1)q0a2=|u0|q0+(q0a2)q0+(q1a2)q1 이다. 이를 행렬로 정리해보면 A=(a0a1a2)=(q0q1q2)(|u0|q0a1q0a20|u1|q1a200|u2|)=Q R. 이 때 qiqj=δij이므로 Q는 직교행렬이고 (QTQ=I), R은 대각선 아래 원소가 모두 0인 상삼각행렬임에 유의.

작동법

주어진 행렬 A를 QR 분해한다: A=Q1R1. 즉, R1=QT1A.

이제 순서를 뒤집어서 새로운 행렬 A1=R1Q1을 만든다. 위에서 구한 R1을 대입하면, A1=QT1AQ1이다.

이를 다시 QR 분해한다: A1=Q2R2. 즉, R2=QT2A1.

다시 순서를 뒤집어서 새로운 행렬 A2=R2Q2를 만든다. 풀어서 적으면 A2=R2Q2=QT2A1Q2=QT2QT1AQ1Q2.

이를 k번 반복하면, Ak=(QTkQT1)A(Q1Qk).

ˆQ=(Q1Qk)가 직교행렬임은 쉽게 확인할 수 있다: ˆQTˆQ=(QTkQT1)(Q1Qk)=I.

직교 행렬에 의한 변환은 고유치를 바꾸지 않아서 Ak=ˆQTAˆQ의 고유치는 원래 행렬과 동일하고, 이 고유치들은 k가 무한대로 가는 극한에서 Ak의 대각선상에 위치한다. 수식으로 적어보면: A=ˆQAˆQT=(v0v1)(λ0λ1)(v0v1). 위에서의 표기법처럼 λii 번째 고유값, vi는 그에 해당하는 고유 벡터이다. 곱해진 세 개의 행렬 중 첫 번째는 vi들을 열 벡터로, 마지막 행렬은 행 벡터로 가지고 있다.

설명

Ai 번째 고유치가 λi, 그에 해당하는 고유 벡터가 vi라고 하자: Avi=λivi. 편의상 |λ0|>|λ1|>로 정렬되어 있다고 하자.

A=Q1R1일 때에 이로부터 유도되는 또다른 행렬이 A1=R1Q1=Q2R2라고 했으므로 A2=Q1R1Q1R1=Q1Q2R2R1 임을 알 수 있다. 일반적으로 An=(Q1Qn)(RnR1)=ˆQˆR 이 성립한다.

멱 방법에 의하면, 임의의 벡터 u가 있을 때 AnuA의 가장 큰 고유치 λ0에 해당하는 고유 벡터 v0 방향으로 수렴한다. u=a0v0+a1v1+Anu=a0λn0v0+a1λn1v1+

임의의 u에 대해 이 성질이 성립한다는 것은 An의 열들이 이미 v0와 유사한 방향임을 의미한다.

An=ˆQˆR로 분해했을 때, 그람-슈미트 방법에 따라 ˆQ의 첫 번째 벡터 q0An의 첫 번째 열 벡터와 같은 방향이다. 즉 q0v0에 해당한다.

그람-슈미트 방법을 따라 An의 열들로부터 이미 찾은 벡터들과 직교하는 공간을 생각하면 q1,q2,를 얻는다. 이는 Anu=a0λn0v0+a1λn1v1+a2λn2v2+ 에서 0=a0=a1=에 해당하고 따라서 그 때마다 v1,v2,들을 근사적으로 얻게 된다.

함께 보기

멱 방법

참고문헌