§D3.17QR 分解と最小二乗解

最終更新

「内積とグラム・シュミットの直交化」では、一次独立なベクトルの組から正規直交系を作りました。その手続きを、ベクトルを1本ずつ書く代わりに行列の積の形で書き直すと、直交化そのものが1つの分解として現れます。この記事では、その分解を定め、一意性を示したうえで、最小二乗解を求める手順へつなげます。

最小二乗解を求める式は「内積とグラム・シュミットの直交化」でも扱いました。本記事が示すのは、同じ解を、正規方程式を作らずに、上三角の連立一次方程式を解くだけで得る手順です。

1 直交化を行列の等式として書く

まず、分解の形を定めます。QQは正方行列とは限らないので、直交行列とは呼びません。

定義 1.1 (QR 分解).AAをm×nm \times nの実行列とする。m×nm \times n行列QQとnn次正方行列RRの組で

A=QR,Q⊤Q=In,R は上三角で対角成分がすべて正A = QR, \qquad Q^\top Q = I_n, \qquad R \text{ は上三角で対角成分がすべて正}

を満たすものを、AAのQR 分解という。

Q⊤Q=InQ^\top Q = I_nは、QQのnn本の列が正規直交系をなすことと同値です(§D3.15 命題 1.2の証明と同じ計算です)。m>nm > nのときのQQは正方行列ではありませんので、QQ⊤=ImQQ^\top = I_mは一般には成り立ちません。この点はあとで使います。

定理 1.2 (QR 分解の存在と一意性).AAをm×nm \times nの実行列とし、AAのnn本の列a⃗1,…,a⃗n\vec a_1, \dots, \vec a_nが一次独立であるとする。このときAAの QR 分解が存在し、しかもただ一組に定まる。

証明. 存在を示す。a⃗1,…,a⃗n\vec a_1, \dots, \vec a_nは一次独立であるから、§D3.14 定理 2.1を適用して正規直交系e⃗1,…,e⃗n\vec e_1, \dots, \vec e_nを得る。同定理より、各jjについて

span⁡{e⃗1,…,e⃗j}=span⁡{a⃗1,…,a⃗j}\operatorname{span}\{\vec e_1, \dots, \vec e_j\} = \operatorname{span}\{\vec a_1, \dots, \vec a_j\}

が成り立つ。とくにa⃗j\vec a_jはWj=span⁡{e⃗1,…,e⃗j}W_j = \operatorname{span}\{\vec e_1, \dots, \vec e_j\}に属する。{e⃗1,…,e⃗j}\{\vec e_1, \dots, \vec e_j\}はWjW_jの正規直交基底であるから、§D3.14 命題 3.1をWjW_jに適用して

a⃗j=∑i=1j⟨a⃗j,e⃗i⟩ e⃗i\vec a_j = \sum_{i=1}^{j} \langle \vec a_j, \vec e_i\rangle \, \vec e_i

を得る。そこでQQを列がe⃗1,…,e⃗n\vec e_1, \dots, \vec e_nであるm×nm \times n行列とし、R=(rij)R = (r_{ij})をi≤ji \le jのときrij=⟨a⃗j,e⃗i⟩r_{ij} = \langle \vec a_j, \vec e_i\rangle、i>ji > jのときrij=0r_{ij} = 0と定める。QRQRの第jj列は∑irije⃗i=a⃗j\sum_{i} r_{ij}\vec e_i = \vec a_jであるからA=QRA = QRである。Q⊤Q=InQ^\top Q = I_nはe⃗i\vec e_iが正規直交系であることから従う。対角成分については、§D3.14 定理 2.1の記号でu⃗j=a⃗j−∑i<jciu⃗i\vec u_j = \vec a_j - \sum_{i<j} c_i \vec u_i、e⃗j=u⃗j/∥u⃗j∥\vec e_j = \vec u_j / \|\vec u_j\|と書くと、u⃗1,…,u⃗j\vec u_1, \dots, \vec u_jが互いに直交することから

rjj=⟨a⃗j,e⃗j⟩=⟨u⃗j,u⃗j⟩∥u⃗j∥=∥u⃗j∥>0r_{jj} = \langle \vec a_j, \vec e_j\rangle = \frac{\langle \vec u_j, \vec u_j\rangle}{\|\vec u_j\|} = \|\vec u_j\| > 0

となる。よってRRは上三角で対角成分がすべて正である。

一意性を示す。A=QRA = QRを QR 分解とし、QQの列をq⃗1,…,q⃗n\vec q_1, \dots, \vec q_nと書く。jjについての帰納法で、q⃗1,…,q⃗j\vec q_1, \dots, \vec q_jとRRの第11列から第jj列までがAAから一意に定まること、およびspan⁡{q⃗1,…,q⃗j}=span⁡{a⃗1,…,a⃗j}\operatorname{span}\{\vec q_1, \dots, \vec q_j\} = \operatorname{span}\{\vec a_1, \dots, \vec a_j\}が成り立つことを示す。

j=1j = 1のとき、RRが上三角であることからa⃗1=r11q⃗1\vec a_1 = r_{11}\vec q_1であり、∥q⃗1∥=1\|\vec q_1\| = 1、r11>0r_{11} > 0よりr11=∥a⃗1∥r_{11} = \|\vec a_1\|、q⃗1=a⃗1/∥a⃗1∥\vec q_1 = \vec a_1 / \|\vec a_1\|と定まる。張る空間も一致する。

j−1j-1まで成り立つとする。RRが上三角であることから

a⃗j=∑i<jrijq⃗i+rjjq⃗j\vec a_j = \sum_{i<j} r_{ij}\vec q_i + r_{jj}\vec q_j

である。i<ji < jについて両辺とq⃗i\vec q_iの内積を取ると、q⃗1,…,q⃗n\vec q_1, \dots, \vec q_nが正規直交系であることからrij=⟨a⃗j,q⃗i⟩r_{ij} = \langle \vec a_j, \vec q_i\rangleとなり、帰納法の仮定より右辺はAAから定まる。そこでu⃗=a⃗j−∑i<jrijq⃗i\vec u = \vec a_j - \sum_{i<j} r_{ij}\vec q_iとおくとu⃗=rjjq⃗j\vec u = r_{jj}\vec q_jである。もしu⃗=0⃗\vec u = \vec 0ならばa⃗j∈span⁡{q⃗1,…,q⃗j−1}=span⁡{a⃗1,…,a⃗j−1}\vec a_j \in \operatorname{span}\{\vec q_1, \dots, \vec q_{j-1}\} = \operatorname{span}\{\vec a_1, \dots, \vec a_{j-1}\}となり、列の一次独立性に反する。よってu⃗≠0⃗\vec u \ne \vec 0であり、rjj>0r_{jj} > 0と∥q⃗j∥=1\|\vec q_j\| = 1からrjj=∥u⃗∥r_{jj} = \|\vec u\|、q⃗j=u⃗/∥u⃗∥\vec q_j = \vec u / \|\vec u\|と定まる。張る空間が一致することも上の等式から従う。▨

対角成分を正に取るという条件を外すと、一意性は失われます。q⃗j\vec q_jとrjjr_{jj}の符号を同時に変えても等式A=QRA = QRは保たれるからです。

命題 1.3 (Q は正方行列とは限らない).A∈Mm,n(R)A\in M_{m,n}(\mathbb{R})の列が一次独立であり、m>nm>nとする。A=QRA=QRをその QR 分解とし、Q=(q⃗1,…,q⃗n)Q=(\vec q_1,\dots,\vec q_n)と書く。このときQQは正方行列ではないので、QQを直交行列と呼ぶことはできない。ただしQQ⊤=∑i=1nq⃗iq⃗i⊤QQ^\top = \sum_{i=1}^{n} \vec q_i \vec q_i^{\top}は、span⁡{q⃗1,…,q⃗n}=Im⁡A\operatorname{span}\{\vec q_1, \dots, \vec q_n\} = \operatorname{Im} Aへの正射影を表す行列である。

証明. 任意のx⃗\vec xに対してQQ⊤x⃗=∑i⟨x⃗,q⃗i⟩q⃗iQQ^\top \vec x = \sum_i \langle \vec x, \vec q_i\rangle \vec q_iを与えるので、§D3.14 命題 3.2により結論を得る。▨

2 最小二乗解の全体と、一意になる条件

次に、解こうとする問題を定めます。Ax⃗=b⃗A\vec x = \vec bが解をもたない場合に、左辺と右辺の差を最も小さくするx⃗\vec xを求める問題です。

定義 2.1 (最小二乗解).AAをm×nm \times nの実行列、b⃗∈Rm\vec b \in \mathbb{R}^mとする。x⃗∈Rn\vec x \in \mathbb{R}^nがAx⃗=b⃗A\vec x = \vec bの最小二乗解であるとは、すべてのy⃗∈Rn\vec y \in \mathbb{R}^nについて∥Ax⃗−b⃗∥≤∥Ay⃗−b⃗∥\|A\vec x - \vec b\| \le \|A\vec y - \vec b\|が成り立つことをいう。

最小二乗解は、いつでも存在します。一方、ただ一つに定まるかどうかはAAの列に条件を要します。次の定理は、その条件を核の次元として述べます。

定理 2.2 (正規方程式と解の全体).AAをm×nm \times nの実行列、b⃗∈Rm\vec b \in \mathbb{R}^mとする。

  1. x⃗\vec xが最小二乗解であることと、A⊤Ax⃗=A⊤b⃗A^\top A \vec x = A^\top \vec bが成り立つことは同値である。
  2. 最小二乗解は少なくとも1つ存在し、最小二乗解の全体は、1つの最小二乗解x⃗0\vec x_0を用いて{x⃗0+z⃗:z⃗∈Ker⁡A}\{\vec x_0 + \vec z : \vec z \in \operatorname{Ker} A\}と書ける。
  3. 最小二乗解がただ一つであることと、AAの列が一次独立であることは同値である。

証明.W=Im⁡AW = \operatorname{Im} Aとおく。WWはRm\mathbb{R}^mの部分空間であるから正規直交基底f⃗1,…,f⃗k\vec f_1, \dots, \vec f_kをもつ。p⃗=∑i⟨b⃗,f⃗i⟩f⃗i\vec p = \sum_{i} \langle \vec b, \vec f_i\rangle \vec f_iとおくと、§D3.14 命題 3.2よりb⃗−p⃗\vec b - \vec pはWWに直交し、WWのどの要素w⃗\vec wについても∥b⃗−p⃗∥≤∥b⃗−w⃗∥\|\vec b - \vec p\| \le \|\vec b - \vec w\|であり、等号が成り立つのはw⃗=p⃗\vec w = \vec pのときに限る。

1を示す。Ax⃗∈WA\vec x \in Wであるから、上の最良近似の一意性より、x⃗\vec xが最小二乗解であることとAx⃗=p⃗A\vec x = \vec pが成り立つことは同値である。次にAx⃗=p⃗A\vec x = \vec pとb⃗−Ax⃗⊥W\vec b - A\vec x \perp Wが同値であることを示す。Ax⃗=p⃗A\vec x = \vec pならばb⃗−Ax⃗=b⃗−p⃗\vec b - A\vec x = \vec b - \vec pがWWに直交する。逆にb⃗−Ax⃗⊥W\vec b - A\vec x \perp Wとすると、w⃗∈W\vec w \in Wに対しAx⃗−w⃗∈WA\vec x - \vec w \in Wであるから、ピタゴラスの定理により∥b⃗−w⃗∥2=∥b⃗−Ax⃗∥2+∥Ax⃗−w⃗∥2≥∥b⃗−Ax⃗∥2\|\vec b - \vec w\|^2 = \|\vec b - A\vec x\|^2 + \|A\vec x - \vec w\|^2 \ge \|\vec b - A\vec x\|^2となり、Ax⃗A\vec xはWWの中でb⃗\vec bに最も近い。最良近似の一意性からAx⃗=p⃗A\vec x = \vec pである。最後に、WWはAAの列a⃗1,…,a⃗n\vec a_1, \dots, \vec a_nで張られるから、b⃗−Ax⃗⊥W\vec b - A\vec x \perp Wはすべてのjjについて⟨a⃗j,b⃗−Ax⃗⟩=0\langle \vec a_j, \vec b - A\vec x\rangle = 0と同値であり、これはA⊤(b⃗−Ax⃗)=0⃗A^\top(\vec b - A\vec x) = \vec 0、すなわちA⊤Ax⃗=A⊤b⃗A^\top A\vec x = A^\top \vec bと同値である。

2を示す。p⃗∈W=Im⁡A\vec p \in W = \operatorname{Im} AであるからAx⃗0=p⃗A\vec x_0 = \vec pを満たすx⃗0\vec x_0が存在し、 1よりこれは最小二乗解である。またx⃗\vec xが最小二乗解であることはAx⃗=p⃗=Ax⃗0A\vec x = \vec p = A\vec x_0、すなわちx⃗−x⃗0∈Ker⁡A\vec x - \vec x_0 \in \operatorname{Ker} Aと同値である。

3を示す。2より、最小二乗解がただ一つであることはKer⁡A={0⃗}\operatorname{Ker} A = \{\vec 0\}と同値である。Ax⃗=∑jxja⃗jA\vec x = \sum_j x_j \vec a_jであるから、Ker⁡A={0⃗}\operatorname{Ker} A = \{\vec 0\}はa⃗1,…,a⃗n\vec a_1, \dots, \vec a_nが一次独立であることと同値である。▨

3の条件を落とすことはできません。列が一次従属であれば、最小二乗解はKer⁡A\operatorname{Ker} Aの次元だけ自由度をもち、ただ一つには定まりません。次の例で確かめます。

例 2.3 (列が一次従属である場合).

A=(121212),b⃗=(134)A = \begin{pmatrix} 1 & 2 \\ 1 & 2 \\ 1 & 2 \end{pmatrix}, \qquad \vec b = \begin{pmatrix} 1 \\ 3 \\ 4 \end{pmatrix}

とします。第2列は第1列の22倍ですので、列は一次従属で、Im⁡A\operatorname{Im} Aは(1,1,1)⊤(1,1,1)^\topが張る1次元の部分空間です。b⃗\vec bの正射影はp⃗=1+3+43(1,1,1)⊤=83(1,1,1)⊤\vec p = \frac{1+3+4}{3}(1,1,1)^\top = \frac{8}{3}(1,1,1)^\topです。したがって最小二乗解の全体はx1+2x2=8/3x_1 + 2x_2 = 8/3を満たす(x1,x2)(x_1, x_2)の全体であり、直線をなします。∥Ax⃗−b⃗∥\|A\vec x - \vec b\|の最小値はどの解でも同じですが、解そのものはただ一つには定まりません。このAAには定義 1.1の意味の QR 分解も存在しません。A=QRA = QRと書けたとすると、RRの対角成分が正であることからRRは正則であり、Ax⃗=0⃗A\vec x = \vec 0からQRx⃗=0⃗Q R\vec x = \vec 0、両辺にQ⊤Q^\topを掛けてRx⃗=0⃗R\vec x = \vec 0、したがってx⃗=0⃗\vec x = \vec 0となって、列が一次独立になってしまうからです。

3 QR 分解から最小二乗解を求める

正規方程式A⊤Ax⃗=A⊤b⃗A^\top A\vec x = A^\top \vec bをそのまま解くには、A⊤AA^\top Aを作る必要があります。 QR 分解を用いると、この行列を作らずに、上三角の連立一次方程式を1つ解くだけで済みます。

定理 3.1 (QR 分解による最小二乗解).AAをm×nm \times nの実行列で列が一次独立であるものとし、A=QRA = QRをその QR 分解とする。b⃗∈Rm\vec b \in \mathbb{R}^mに対し、Ax⃗=b⃗A\vec x = \vec bの最小二乗解はただ一つであり、それは連立一次方程式

Rx⃗=Q⊤b⃗R\vec x = Q^\top \vec b

のただ一つの解である。またAAの像へのb⃗\vec bの正射影はQQ⊤b⃗QQ^\top \vec bである。

証明. 列が一次独立であるから、定理 2.2の3より最小二乗解はただ一つである。

Q⊤Q=InQ^\top Q = I_nよりA⊤A=R⊤Q⊤QR=R⊤RA^\top A = R^\top Q^\top Q R = R^\top Rであり、A⊤b⃗=R⊤Q⊤b⃗A^\top \vec b = R^\top Q^\top \vec bである。よって正規方程式は

R⊤Rx⃗=R⊤Q⊤b⃗R^\top R \vec x = R^\top Q^\top \vec b

と書ける。RRは上三角で対角成分が正であるから、第1列に沿った余因子展開を繰り返すとdet⁡R=r11r22⋯rnn>0\det R = r_{11}r_{22}\cdots r_{nn} > 0となり、RRとR⊤R^\topはいずれも正則である。両辺に(R⊤)−1(R^\top)^{-1}を左から掛けてRx⃗=Q⊤b⃗R\vec x = Q^\top \vec bを得る。逆にこの等式から正規方程式が従う。RRが正則であるから、この連立一次方程式の解はただ一つである。

正射影については、命題 1.3のとおりQQ⊤QQ^\topがIm⁡A\operatorname{Im} Aへの正射影を表す。▨

RRが上三角ですので、Rx⃗=Q⊤b⃗R\vec x = Q^\top\vec bは最後の成分から順に代入して解くことができます。

例 3.2 (直線のあてはめ). 3点(t,y)=(0,1),(1,3),(2,4)(t, y) = (0, 1), (1, 3), (2, 4)に対し、y=x1+x2ty = x_1 + x_2 tの形の直線をあてはめます。

A=(101112),b⃗=(134)A = \begin{pmatrix} 1 & 0 \\ 1 & 1 \\ 1 & 2 \end{pmatrix}, \qquad \vec b = \begin{pmatrix} 1 \\ 3 \\ 4 \end{pmatrix}

とおくと、求めるものはAx⃗=b⃗A\vec x = \vec bの最小二乗解です。列は一次独立ですので定理 1.2が使えます。

直交化します。a⃗1=(1,1,1)⊤\vec a_1 = (1,1,1)^\topより∥a⃗1∥=3\|\vec a_1\| = \sqrt3、e⃗1=13(1,1,1)⊤\vec e_1 = \frac{1}{\sqrt3}(1,1,1)^\topです。a⃗2=(0,1,2)⊤\vec a_2 = (0,1,2)^\topについて⟨a⃗2,e⃗1⟩=3/3=3\langle \vec a_2, \vec e_1\rangle = 3/\sqrt3 = \sqrt3ですのでu⃗2=a⃗2−3 e⃗1=(−1,0,1)⊤\vec u_2 = \vec a_2 - \sqrt3\,\vec e_1 = (-1, 0, 1)^\top、∥u⃗2∥=2\|\vec u_2\| = \sqrt2、e⃗2=12(−1,0,1)⊤\vec e_2 = \frac{1}{\sqrt2}(-1,0,1)^\topです。したがって

Q=(1/3−1/21/301/31/2),R=(3302)Q = \begin{pmatrix} 1/\sqrt3 & -1/\sqrt2 \\ 1/\sqrt3 & 0 \\ 1/\sqrt3 & 1/\sqrt2 \end{pmatrix}, \qquad R = \begin{pmatrix} \sqrt3 & \sqrt3 \\ 0 & \sqrt2 \end{pmatrix}

です。Q⊤b⃗=(1+3+43,−1+0+42)⊤=(83,32)⊤Q^\top \vec b = \left(\frac{1+3+4}{\sqrt3}, \frac{-1+0+4}{\sqrt2}\right)^\top = \left(\frac{8}{\sqrt3}, \frac{3}{\sqrt2}\right)^\topですので、Rx⃗=Q⊤b⃗R\vec x = Q^\top\vec bを下から解くと

2 x2=32 ⇒ x2=32,3 x1+3⋅32=83 ⇒ x1=83−32=76\sqrt2\,x_2 = \frac{3}{\sqrt2} \ \Rightarrow\ x_2 = \frac32, \qquad \sqrt3\,x_1 + \sqrt3\cdot\frac32 = \frac{8}{\sqrt3} \ \Rightarrow\ x_1 = \frac83 - \frac32 = \frac76

となります。

検算します。A⊤A=(3335)A^\top A = \begin{pmatrix} 3 & 3 \\ 3 & 5\end{pmatrix}、A⊤b⃗=(8,11)⊤A^\top \vec b = (8, 11)^\topですので、正規方程式は3x1+3x2=83x_1 + 3x_2 = 8と3x1+5x2=113x_1 + 5x_2 = 11です。x1=7/6x_1 = 7/6、x2=3/2x_2 = 3/2を代入すると3⋅76+3⋅32=72+92=83\cdot\frac76 + 3\cdot\frac32 = \frac72 + \frac92 = 8、3⋅76+5⋅32=72+152=113\cdot\frac76 + 5\cdot\frac32 = \frac72 + \frac{15}{2} = 11となり、いずれも成り立ちます。残差はb⃗−Ax⃗=(−16,13,−16)⊤\vec b - A\vec x = \left(-\frac16, \frac13, -\frac16\right)^\topで、a⃗1\vec a_1との内積は−16+13−16=0-\frac16 + \frac13 - \frac16 = 0、a⃗2\vec a_2との内積は0+13−13=00 + \frac13 - \frac13 = 0ですので、残差はIm⁡A\operatorname{Im}Aに直交しています。

注意 3.3 (有限の桁数で計算する場合). 本記事の等式は、実数の範囲で厳密に成り立つ。計算機のように有限の桁数で計算する場合には、どの手順を選ぶかによって誤差の伝わり方が変わる。正規方程式を作る方法と QR 分解を用いる方法の比較、および QR 分解を求める手続きの選び方は「数値解析 I」が扱う。

5 自分で確かめる

次の三つを、資料を見ずに行ってください。

  1. a⃗1=(1,1,0)⊤\vec a_1 = (1,1,0)^\top、a⃗2=(1,0,1)⊤\vec a_2 = (1,0,1)^\topを列とする3×23\times2行列の QR 分解を求め、Q⊤Q=I2Q^\top Q = I_2とA=QRA = QRの双方を成分の計算で確かめてください。
  2. 例 3.2のAAとb⃗\vec bについて、QQ⊤b⃗QQ^\top\vec bを計算し、Ax⃗A\vec xと一致することを確かめてください。一致する理由を定理 3.1の言葉で述べてください。
  3. 対角成分を正に取るという条件を外すと、QR 分解が何組できるかを述べてください。q⃗j\vec q_jとrjjr_{jj}の符号を同時に変えたときに、等式A=QRA = QRが保たれることを確かめると分かります。

3では、各jjについて符号の選び方が2通りありますので、2n2^n組になります。

参考文献

  1. Gilbert Strang, Introduction to Linear Algebra, 6th ed., Wellesley-Cambridge Press, 2023.QR 分解と最小二乗法、およびその応用と幾何的な解釈を参考にしました。
  2. Lloyd N. Trefethen and David, III Bau, Numerical Linear Algebra, 25th anniversary ed., Society for Industrial and Applied Mathematics, Philadelphia, 2022.QR 分解を求める手続きと、その数値的な性質を参考にしました。
  3. Gene H. Golub and Charles F. Van Loan, Matrix Computations, 4th ed., Johns Hopkins University Press, 2013.最小二乗問題の解法とその計算量と誤差の評価を参考にしました。

前提記事