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 0AAA^{\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