上一讲我们学习了最小二乘法,主要就是求解ATAx=ATb这个方程,我们能不能想办法使得这个方程越简单越好呢?。
引言
如果矩阵的列向量互相正交,若长度都为一,则称为标准正交阵,若满秩,即Q为方阵,那么我们称这个矩阵为正交矩阵(orthogonal matrix)。标准正交阵有很多很好的性质:
QTQ=I,不要求Q为方阵
如果Q为方阵,则QT=Q−1。
Qx是保持长度的变换
∣∣Qx∣∣2=(Qx)T(Qx)=xTQTQx=xTx=∣∣x∣∣2
Q不改变向量点积。
Qx×Qy=(Qx)TQy=xTQTQy=xTy
反射矩阵
设u是一列向量,uTu=1。
令Q=In−2uuT,u∈Rn。Q为一个反射矩阵(refection matrix)。
QT=I−2uuT=Q, QTQ=I−4uuT+4uuT=I
Qu=u−2uuTu=−u
可以感性地认为u在Q上“没有动”,类似于镜面。
投影与正交
在上一讲中,我们推导了向量投影的公式,里面有ATA的形式,如果用Q来代替A,那么可以重新推导结论:
- 投影矩阵P=Q(QTQ)−1QT=QQT
- 投影向量p=Pb=QQTb
我们可以进一步仔细观察投影向量:
p=QQTb=[q1...qn]⎣⎢⎢⎢⎢⎡q1T...qnT⎦⎥⎥⎥⎥⎤b=[q1...qn]⎣⎢⎢⎢⎢⎡q1Tb...qnTb⎦⎥⎥⎥⎥⎤=i=1∑n(qiqiT)b
可以发现,其实向量b到矩阵C(A)的投影,本质上可以分为b到每个正交向量qi的投影之和。
这是一个十分优美和谐的关系,投影之后彼此之间依然是正交,没有任何冗余。
Gram Schmidt正交化
由此我们想到,标准正交阵有这么好的形式,而每个子空间都有无数个基,那么是不是可以将每个基都表示称标准正交基的形式呢?理论上当然可以,但如何进行变换呢?Gram Schmidt正交化是一种很好的迭代方法。
直接先给出定理:
设α1,α2,...,αk相互正交,v∈L{α1,α2,...,αk},则:
v=α1Tα1α1Tvα1+...+αkTαkαkTvαk
特别的,若α1,α2,...,αk标准正交,则:
v=(α1Tv)α1+...+(αkTv)αk
就相当于把v投影到L{α1,α2,...,αk}这个子空间中,等于分解到每个正交向量的投影之和。
可以利用这个定理,很容易的求出正交向量,这里给出另一种方法,可以边正交化边标准化。
设ei为误差向量,vi为原始向量,qi即为所求
e1=v1=w1,q1=∣∣v1∣∣v1
e2=v2−(q1Tv2)q1=w2,q2=∣∣w2∣∣w2
ek=vk−(q1Tvk)q1−...−(qk1Tvk)qk−1=wk,qk=∣∣vk∣∣vk
QR分解
通过Gram Schmidt正交化,我们知道任何子空间的基A都可以转化为标准正交基Q,那会很自然的想到,A和Q之间到底有什么样的关系呢?其实关系已经蕴含在Gram Schmidt的定理中了:
a1=(q1Ta1)q1
a2=(q1Ta2)q1+(q2Ta2)q2
a3=(q1Ta3)q1+(q2Ta3)q2+(q2Ta3)q3
an=(q1Tan)q1+(q2Tan)q2+...+(qnTan)qn
总结为矩阵形式:
A=[a1a2...an]=[q1q2...qn]⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡q1Ta10...0q1Ta2q2Ta2...0............q1Tanq2Tan...qnTan⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
Q=[q1q2...qn], R=⎣⎢⎢⎢⎢⎢⎢⎡q1Ta10 ...0q1Ta2q2Ta2...0............q1Tanq2Tan...qnTan⎦⎥⎥⎥⎥⎥⎥⎤
应用
若A,B都是正交矩阵,则AB也是正交矩阵
ATA=E BTB=E
(AB)TAB=BTATAB=BTEB=E
若A是可逆方阵,则QR分解是唯一的。
若Am×n列满秩,有QR分解A=QR,b∉C(A),设b在C(A)上的投影为p,e=b−p,则(A,b)也是列满秩,其QR分解为:
(A,b)=(Q,∣∣e∣∣e)⎝⎛R0α∣∣e∣∣⎠⎞,α=QTb