QR分解
在解最小二乘问题min∣∣Ax−b∣∣min||Ax-b||min∣∣Ax−b∣∣时,将其转化成ATAx=ATbA^{T}Ax=A^{T}bATAx=ATb之后该问题就是一个求解线性方程组的问题。最简单的求解线性方程组方法是高斯消去,但是有时高斯消去会增大方程的条件数,这时我们可以用正交分解来解决这个问题,即Ax=b→QRx=bAx=b \rightarrow QRx=bAx=b→QRx=b,其中QQQ是正交矩阵(QTQ=IQ^{T}Q=IQTQ=I),RRR是上三角矩阵。
1.Gram Schmidt正交化
希望将一般向量组(a1,a2,...,am)(a_{1},a_{2},...,a_{m})(a1,a2,...,am)转化成一组正交向量(b1,b2,...,bm)(b_{1},b_{2},...,b_{m})(b1,b2,...,bm)。
- step1 令b1=a1b_{1}=a_{1}b1=a1,b2=a2−kb1b_{2}=a_{2}-kb_{1}b2=a2−kb1,希望b1,b2b_{1},b_{2}b1,b2正交,即<b1,b2>=0<b_{1},b_{2}>=0<b1,b2>=0
→<b1,a2−kb1>=0\rightarrow <b_{1},a_{2}-kb_{1}>=0→<b1,a2−kb1>=0
→<b1,a2>−k<b1,b1>=0\rightarrow<b_{1},a_{2}>-k<b_{1},b_{1}>=0→<b1,a2>−k<b1,b1>=0
→k=<b1,a2><b1,b1>\rightarrow k=\frac{<b_{1},a_{2}>}{<b_{1},b_{1}>}→k=<b1,b1><b1,a2>。 - step2 令b3=a3−k1b1−k2b2b_{3}=a_{3}-k_{1}b_{1}-k_{2}b_{2}b3=a3−k1b1−k2b2,则希望<b1,b3>=0,<b2,b3><b_{1},b_{3}>=0,<b_{2},b_{3}><b1,b3>=0,<b2,b3>同时成立,即
<b1,a3−k1b1−k2b2>=0<b_{1},a_{3}-k_{1}b_{1}-k_{2}b_{2}>=0<b1,a3−k1b1−k2b2>=0
→<b1,a3−k1b1>=0\rightarrow <b_{1},a_{3}-k_{1}b_{1}>=0→<b1,a3−k1b1>=0
→k1=<b1,a3><b1,b1>\rightarrow k_{1}=\frac{<b_{1},a_{3}>}{<b_{1},b_{1}>}→k1=<b1,b1><b1,a3>,同理可以推出k2=<b2,a3><b2,b2>k_{2}=\frac{<b_{2},a_{3}>}{<b_{2},b_{2}>}k2=<b2,b2><b2,a3>。
施密特正交化的最终形式为bm=am−k1b1−k2b2−...−km−1bm−1b_{m}=a_{m}-k_{1}b_{1}-k_{2}b_{2}-...-k_{m-1}b_{m-1}bm=am−k1b1−k2b2−...−km−1bm−1,其中,ki=<bi,am><bi,bi>k_{i}=\frac{<b_{i},a_{m}>}{<b_{i},b_{i}>}ki=<bi,bi><bi,am>。令A=[a1,a2,...,an],B=[b1,b2,...,bn]A=[a_{1},a_{2},...,a_{n}],B=[b_{1},b_{2},...,b_{n}]A=[a1,a2,...,an],B=[b1,b2,...,bn],则有A=BTRA=B^{T}RA=BTR,其中BBB是正交矩阵,RRR是上三角矩阵,且
R=1kk1k101k2k2001k30001R=\begin{array}{cccc}
1 & k & k_{1} & k_{1}\\
0 & 1 & k_{2} & k_{2}\\
0 & 0 & 1 & k_{3}\\
0 & 0 & 0 & 1
\end{array} R=1000k100k1k210k1k2k31
综上,格拉姆-施密特正交化结束。
2.Householder变换
Householder变换是一种镜面反射,即,将一个向量a⃗\vec{a}a沿w⃗\vec{w}w的法向量对称到b⃗\vec{b}b的位置,如下图所示,这个图临时找的,有时间要替换一下。
令H=I−2uuTH=I-2uu^{T}H=I−2uuT,其中uTu=1u^{T}u=1uTu=1,则Hx=x−2uuTx=x−2(uTx)uHx=x-2uu^{T}x=x-2(u^{T}x)uHx=x−2uuTx=x−2(uTx)u,其中uTxu^{T}xuTx是标量,显然2(uTx)u2(u^{T}x)u2(uTx)u与u⃗\vec{u}u平行且相等,平行在图像中可以看出来,图中虚线和www平行,但其实这个相等我没推出来,但是代入一些特殊向量如www和v,vTw=0v,v^{T}w=0v,vTw=0两个向量都成立。
在正交分解中,Householder变换主要用来将一般向量x⃗\vec{x}x变换成向量y⃗=(c,0,0,...,0)\vec{y}=(c,0,0,...,0)y=(c,0,0,...,0),因为该向量是镜面反射,所以只能由x⃗\vec{x}x变成目标向量y⃗=(∣x⃗∣,0,0,...,0)\vec{y}=(|\vec{x}|,0,0,...,0)y=(∣x∣,0,0,...,0)。而u⃗\vec{u}u一定和x⃗−y⃗\vec{x}-\vec{y}x−y平行,同时u⃗\vec{u}u是单位向量,因此u⃗=x⃗−y⃗∣x⃗−y⃗∣\vec{u}=\frac{\vec{x}-\vec{y}}{|\vec{x}-\vec{y}|}u=∣x−y∣x−y,再代入H=I−2uuTH=I-2uu^{T}H=I−2uuT就找到了Householder矩阵HHH。
下面讲怎么用Householder变换做QR分解。
对于矩阵
A=xxxxxxxxxxxxxxxxA=\begin{array}{cccc}
x & x & x & x\\
x & x & x & x\\
x & x & x & x\\
x & x & x & x
\end{array} A=xxxxxxxxxxxxxxxx使用Householder变换可以找到HHH,使得
HA=xxxx0xxx0xxx0xxxHA=\begin{array}{cccc}
x & x & x & x\\
0 & x & x & x\\
0 & x & x & x\\
0 & x & x & x
\end{array} HA=x000xxxxxxxxxxxx
再用H1′=100H1H_{1}'=\begin{array}{cccc} 1 & 0 \\ 0 & H_{1}\\ \end{array} H1′=100H1依次对下一列进行Householder变换,就可以得到最终的上三角矩阵。
3.Givens变换(初等旋转变换)
使用初等旋转矩阵G=cosθ−sinθsinθcosθG=\begin{array}{cccc}
cos\theta & -sin\theta \\
sin\theta & cos\theta \\
\end{array} G=cosθsinθ−sinθcosθ
作用到x=[xi,xj]Tx=[x_{i},x_{j}]^{T}x=[xi,xj]T上,有Gx=[xi2+xj2,0]TGx=[\sqrt{x_{i}^{2}+x_{j}^{2}},0]^{T}Gx=[xi2+xj2,0]T,从而可以将一个二维向量的某一项变为0,将其用到QR分解中,对于矩阵
A=xxxxxxxxxxxxxxxxA=\begin{array}{cccc}
x & x & x & x\\
x & x & x & x\\
x & x & x & x\\
x & x & x & x
\end{array} A=xxxxxxxxxxxxxxxx
使用Givens变换可以找到矩阵A=1000010000c−s00scA=\begin{array}{cccc}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & c & -s\\
0 & 0 & s & c
\end{array} A=1000010000cs00−sc使得GA=xxxxxxxxxxxx0xxxGA=\begin{array}{cccc}
x & x & x & x\\
x & x & x & x\\
x & x & x & x\\
0 & x & x & x
\end{array} GA=xxx0xxxxxxxxxxxx
一次生成一个0,因此依次进行Givens变换也可以得到最终的上三角矩阵RRR,实现QR分解。