logo

콜레스키 분해를 통한 최소제곱법 📂행렬대수

콜레스키 분해를 통한 최소제곱법

알고리즘

ACm×nA \in \mathbb{C}^{m \times n} 과 벡터 bCm\mathbf{b} \in \mathbb{C}^{m} 에 대해 rankA=n\text{rank} A = n 이고 Ax=bA \mathbf{x} = \mathbf{b} 의 최소제곱해를 x\mathbf{x}_{\ast} 이라고 하자.

Step 1.

주어진 방정식의 양변에 AA^{\ast} 을 곱해 표준방정식 AAx=AbA^{\ast} A \mathbf{x} = A^{\ast} \mathbf{b} 을 세운다.

표준방정식의 해는 원래 방정식의 최소제곱해가 되므로, 표준방정식의 해 x\mathbf{x} 를 구하면 된다.


Step 2.

y:=Ab\mathbf{y} := A^{\ast} \mathbf{b} 을 계산해 AAx=yA^{\ast} A \mathbf{x} = \mathbf{y} 을 얻는다.


Step 3. 콜레스키 분해

AA=LLA^{\ast} A = L L^{\ast} 을 만족하는 하삼각행렬 LL 을 구해 LLx=yL L^{\ast} \mathbf{x} = \mathbf{y} 을 얻는다.


Step 4. 전진대입법

LLx=yL L^{\ast} \mathbf{x} = \mathbf{y} 에서 Lx:=wL^{\ast} \mathbf{x} : = \mathbf{w} 이라고 하면 Lw=yL \mathbf{w} = \mathbf{y}

LL 은 하삼각행렬이므로 전진대입법을 통해 w\mathbf{w} 에 대한 방정식의 해를 구한다


Step 5. 후진대입법

w\mathbf{w} 을 구했고 LL^{\ast} 는 상삼각행렬이므로 후진대입법을 통해 x\mathbf{x} 에 대한 방정식 Lx=wL^{\ast} \mathbf{x} = \mathbf{w} 의 해를 구한다.

설명

콜레스키 분해는 본래 분해할 행렬이 양의 정부호 행렬이어야 한다는 강력한 조건이 있었다. 이 방법에서 핵심은 표준방정식을 세우는 트릭을 통해 그 까다로운 조건을 강제로 만족시켜버리는 것에 있다. 물론 그 트릭에는 AAA^{\ast} A 가 양의 정부호라는 보장이 있어야하고, 그 증명은 그리 어렵지 않게 할 수 있다.

정리

행렬 ACm×n(mn)A \in \mathbb{C}^{m \times n} (m \ge n) 에 대해 AA>0    rankA=nA^{\ast} A > 0 \iff \text{rank} A = n

증명

임의의 벡터 v0\mathbf{v} \ne \mathbb{0} 에 대해

vAAv=(Av)Av=Av20 \mathbf{v}^{\ast} A^{\ast} A \mathbf{v} = (A \mathbf{v})^{\ast} A \mathbf{v} = | A \mathbf{v} |^{2} \ge 0

이므로 AA0A^{\ast} A \ge 0 이다. AAA^{\ast} A 의 역행렬이 존재하지 않는다고 가정하면 AAv=0A^{\ast} A \mathbf{v} = \mathbb{0} 를 만족하는 v0\mathbf{v} \ne \mathbb{0} 이 존재한다. 위 식에서 양변의 왼쪽에 v\mathbf{v}^{\ast} 을 곱하면 Av2=0| A \mathbf{v} |^2 = 0 이고 놈의 정의에서 Av=0A \mathbf{v} = 0 이다. 이는 AA 의 열벡터들이 일차종속이라는 뜻이므로 rankA<n\text{rank} A < n 이 된다.

역으로 rankA<n\text{rank} A < n 이라고 가정하면 Av=0A \mathbf{v} = \mathbb{0} 을 만족하는 v0\mathbf{v} \ne \mathbb{0} 가 존재한다.

위 식에서 양변의 왼쪽에 AA^{\ast} 을 곱하면 AAv=0A^{\ast} A \mathbf{v} = \mathbb{0} 이고, AAA^{\ast} A 은 역행렬이 존재하지 않는다. AA0A^{\ast}A \ge 0 이고

AA0    rankA=n A^{\ast} A \ne 0 \iff \text{rank} A = n

이므로,

AA>0    rankA=n A^{\ast} A > 0 \iff \text{rank} A = n