在线性最小二乘里,最后得到的闭式解为(ATA)x=ATb,对于该等式的求解,其中一种方法是正交变换法求解,而正交变换求解线性最小二乘的实质就是对矩阵A进行QR分解。
QR分解的概念:若实非奇异对称矩阵A能化为正交矩阵Q和实非奇异上三角矩阵R的乘积,即A=QR,则称该式为A的QR分解。
事实上,任何的实非奇异n阶矩阵A都可以分解成正交矩阵Q和上三角矩阵R的乘积,这可以通过施密特正交化来证明。
证明过程如下:
对于实非奇异n阶矩阵A的各个列向量依次为α1,α2,⋯αn,那么,通过施密特正交化得到的n个标准正交向量如下,
⎩⎪⎪⎪⎨⎪⎪⎪⎧β1=b11α1β2=b12α1+b22α2⋮βn=b1nα1+b2nα2+⋯+bnnαn
则,写成矩阵形式为,
(β1,β2,⋯βn)=(α1,α2,⋯αn)B
即,
Q=AB
其中,B=⎣⎢⎢⎢⎡b11b12b22⋯⋯⋱b1nb2n⋮bnn⎦⎥⎥⎥⎤
很显然,矩阵B就是一个上三角矩阵,而且B可逆,QR分解中的R就是R=B−1,Q=[β1,β2,⋯βn]是正交矩阵(施密特正交化的结果),则有,
A=QB−1=QR
这就说明了QR分解的存在性。
从上述的QR分解存在性的证明过程可以看出,QR分解步骤的关键就是找到一个上三角矩阵R和一个正交矩阵Q。那么,怎么才能得到一个Q和R,正交变换就能做到这一点。所以,QR分解的方法就有三种,第一种就是上述证明过程所示的,用施密特正交化求解,其他两种是Givens变换(初等旋转变换)和Housholder(镜像变换)。
施密特正交化
设α1,α2,⋯αn为一组线性无关的向量,施密特正交化后的向量为β1,β2,⋯βn,则施密特正交化的一般式如下,
⎩⎨⎧βm=αm+km1βm−1+km2βm−2+⋯+km,m−1β1kmi=−(βm−i,βm−i)(xm,βm−i)i=1,2,⋯m−1
举个例子,对矩阵A=⎣⎡1101−10012⎦⎤进行QR分解。
令A=[α1,α2,α3],则α1=(1,1,0)T,α2=(1,−1,0)T,α1=(0,1,2)T,则根据上述的施密特方法得,
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧β1′=α1=(1,1,0)Tβ2′=α2−(β1′,β1′)(β1′,α2)β1′=(1,−1,0)Tβ3′=α3−(β1′,β1′)(β1′,α3)β1′−(β2′,β2′)(β2′,α3)β2′=(0,0,2)T
单位化后得,
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧β1=(21,21,0)T=21α1β2=(21,−21,0)T=21α2β3=(0,0,1)T=−41α1+41α2+21α3
上式写成矩阵形式,
Q(β1,β2,β3)=A(α1,α2,α3)⎣⎢⎢⎢⎢⎡21000210−414121⎦⎥⎥⎥⎥⎤
A=(β1,β2,β3)⎣⎢⎢⎢⎢⎡21000210−414121⎦⎥⎥⎥⎥⎤−1=⎣⎢⎢⎢⎢⎡2121021−210001⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡20002021−212⎦⎥⎥⎥⎥⎤=QR
从上例可以看出,矩阵的QR实际上就是施密特正交化的特性,施密特正交化可以得到一个上三角矩阵和一个正交矩阵,所以矩阵可以QR分解。
Givens变换法
Givens变换,即初等旋转变换,正交变换的一种,对应的初等旋转矩阵形式如下,
Rij=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡1⋱1cosθ0⋮0−sinθ01⋮00⋯⋯⋯0⋮10sinθ⋮0cosθ1⋱1⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤←i行←j行
初等变换矩阵在矩阵化简方面有很好的应用,即,若以Rij左乘一个矩阵A,并且其中的s和c按如下方式取值,
s=xi2+xj2xj,c=xi2+xj2xi则就可以把矩阵A的第j个分量化为0。
举个例子,把向量x=(1,2,3)T通过Givens变换化成与(1,0,0)T同方向。
第一步,可以选择把向量x中的第二项化为0,则,
c=x12+x22x1=51s=x12+x22x2=52
得到初等旋转矩阵为,
R12=⎣⎢⎢⎢⎢⎡51−52052510001⎦⎥⎥⎥⎥⎤
从而把x的第二项化为0,即,
y=R12x=(5,0,3)T
第二步,把y中的第3项化为0,同样,取c和s为,
c=x12+x32x1=145s=x12+x32x3=143
得到初等旋转矩阵为,
R13=⎣⎢⎢⎢⎢⎢⎢⎡1450−1430101430145⎦⎥⎥⎥⎥⎥⎥⎤
这里就把第三项化为0,即,
z=R13y=R13R12x=(14,0,0)T
对一个向量可以这样化简,那么对于矩阵而言,矩阵可以看作是由n个列向量组成的,所以把矩阵A左乘一系列的初等旋转矩阵,就可以把A化简为结构较为简单的上三角矩阵R。而前面已经证明了一个实非奇异的矩阵A可以进行QR分解,那么这里的Givens变换就能把一个矩阵A化成上三角矩阵,所以,Givens变换可以用于QR分解。
Rn−1,n⋯R2n⋯R23R1n⋯R12A=RQ=(Rn−1,n⋯R2n⋯R23R1n⋯R12)−1=(Rn−1,n⋯R2n⋯R23R1n⋯R12)H
举个例子,用Givens方法对矩阵A=⎣⎢⎢⎢⎢⎡12920−20−155041−6335⎦⎥⎥⎥⎥⎤进行QR分解。
第一步,用R12左乘A,消去第1列第2行处的元素,
c=122+9212=1512=54,s=122+929=53故,
R12A=⎣⎢⎢⎢⎢⎡54−53053540001⎦⎥⎥⎥⎥⎤A=⎣⎢⎢⎢⎢⎡15020−25050−5−7535⎦⎥⎥⎥⎥⎤
同理,接着消去A中第1列第3个元素,
c=152+20215=2515=53,s=152+20220=54故
A(1)=R13R12A=⎣⎢⎢⎢⎢⎡530−5401054053⎦⎥⎥⎥⎥⎤R12A=⎣⎢⎢⎢⎢⎡25002505025−7525⎦⎥⎥⎥⎥⎤
这里就把矩阵A中的第一列的第二个和第三个元素化为0,即第一列(A(1))化简完成,下面开始第二列的化简。
第二步,进行第二列的化简,即把第二列的第三个元素化为0,
c=02+5020=0,s=02+50250=1故,
R23=⎣⎡10000−1010⎦⎤
A(2)=R23A(1)=⎣⎢⎢⎢⎢⎡250025500252575⎦⎥⎥⎥⎥⎤
这里的A(2)就是上三角矩阵,即QR分解里的R,而Q的求解如下,
Q=(R23R13R12)−1=⎣⎢⎢⎢⎢⎡2512−25162515259−2512−2520252025150⎦⎥⎥⎥⎥⎤−1=⎣⎢⎢⎢⎢⎡2512−25162515259−2512−2520252025150⎦⎥⎥⎥⎥⎤H=⎣⎢⎢⎢⎢⎡25122592520−2516−251225152515−25200⎦⎥⎥⎥⎥⎤
从上例可以看出,Givens方法需要作2n(n−1)个初等旋转矩阵的乘积,当n比较大时,计算量较大。
Housholder变换法
Housholder变换,即镜像变换,正交变换的一种,对应的初等反射矩阵形式如下,H=I−2ωωT其中ω表示某单位向量。
其镜面关系为:若η=Hξ,则向量η和向量ξ关于某单位向量ω的正交轴l镜像对称。
用初等反射矩阵也可以完成对矩阵的简化,其简化原理用的是如下定理:
镜像变换可以使任何非零向量ξ变成与给定单位向量a同方向的向量η。
用这一定理可以构造出H里单位向量ω如下,
ω=∣ξ−∣ξ∣a∣ξ−∣ξ∣a那么,可以通过构造ω的方法来简化矩阵A,使其变为一个上三角阵。
举个例子,用镜像变化把向量ξ=(0,3,0,4)T变为与向量e1=(1,0,0,0)T同方向的向量。
首先就是构造ω,
ω=∣ξ−∣ξ∣e1∣ξ−∣ξ∣e1=∣∣∣(−5,3,0,4)T∣∣∣(−5,3,0,4)T=(−21,523,0,524)T则初等反射矩阵H为,
H=I−2ωωT=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡0530545325160−2512001054−25120259⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
从而有,
η=Hξ=(5,0,0,0)T
上例,是使用镜像变换完成了对向量的化简。那么,对于矩阵而言,同样把矩阵看成是一组列向量的组合,那么每次求解只完成一列列向量的简化。
而与Given变换不同的是,对于每一列列向量的简化,其对应的反射矩阵H只要求解一次,所以,经过n−1次左乘初等反射矩阵H就可以化成一个上三角阵,计算量大约是Givens变换的一半,即,
H(n−1)H(n−2)⋯H(1)A=A(n)=RQ=(H(n−1)H(n−2)⋯H(1))−1
举个例子,用Housholder变换法对矩阵A=⎣⎡212221122⎦⎤进行QR分解。
第一步,完成对第一列的简化。
因为α1(1)=(2,1,2)T=0,作单位向量,
ω(1)=∣∣∣α1(1)−∣∣∣α1(1)∣∣∣e1∣∣∣α1(1)−∣∣∣α1(1)∣∣∣e1=∣∣∣(2,1,2)T−3e1∣∣∣(2,1,2)T−3e1=(−61,61,62)T则反射矩阵H为,
H(1)=I−2ω(1)ω(1)T=⎣⎢⎢⎢⎢⎡3231323132−3232−32−31⎦⎥⎥⎥⎥⎤从而得,
H(1)A=⎣⎢⎢⎢⎢⎡3003834−313831−34⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡3003838A2⎦⎥⎥⎥⎥⎤
第二步,简化第二列。此时关注的不是矩阵H(1)A,而是A2。
则,
ω^(2)=∣∣∣(34,−31)T−∣∣∣(34,−31)T∣∣∣e1∣∣∣(34,−31)T−∣∣∣(34,−31)T∣∣∣e1=(34−8174−17,−34−8171)T
那么有,
H^(2)=I−2ω^(2)ω^(2)T=⎣⎢⎡1−34−8172(4−17)234−8172(4−17)34−8172(4−17)1−34−8172⎦⎥⎤从而对应的反射矩阵为,
H(2)=⎣⎡100H^(2)⎦⎤=⎣⎢⎢⎢⎢⎢⎡10001−34−8172(4−17)234−8172(4−17)034−8172(4−17)1−34−8172⎦⎥⎥⎥⎥⎥⎤则有,
H(2)H(1)A=⎣⎢⎢⎢⎢⎡300383170385181717517⎦⎥⎥⎥⎥⎤=R
Q的求解如下,
Q=(H(2)H(1))−1=⎣⎢⎢⎢⎢⎢⎡32313251217511017−17717−173171721717217⎦⎥⎥⎥⎥⎥⎤
附:
从实用性角度考虑,一般不用施密特正交化进行QR分解,用Givens变换法和Housholder变换法较多,但Givens变换法需要2n(n−1)次左乘初等旋转矩阵,计算量大,而Housholder变换法只需n−1次左乘初等反射矩阵,计算量小是Housholder变换法的优势。但在稀疏矩阵的QR分解上,用Givens方法求解仍有方便之处。