线性代数(5):QR分解

线性代数(5):QR分解

前言

前文我们讲解了投影矩阵和最小二乘法,本节我们深化正交基和正交矩阵的概念和性质,讨论QR分解以及将一组向量转化为标准正交向量组的方法:Gram-Schmidt正交化。

矩阵分解 QR分解
分解形式 A=QRA=QR
(QQ代表标准正交矩阵,RR代表非奇异上三角矩阵)
目的 (1)求解A的特征值;
(2)求解A的逆;
(3)求解线性最小二乘问题。

标准正交矩阵

标准正交向量(Orthonormal Vector)

我们用qq表示单位向量,那么有q1,q2,q3,...,qnq_1,q_2,q_3,...,q_n,若所有的向量qq满足

qiTqj={0i=j1i=jq_i^Tq_j = \begin{cases} 0 \quad i\not=j \\1 \quad i=j \end{cases}

此时,我们称qq标准正交向量(Orthonormal Vector)。当i=ji=j时,qiTqj=1q_i^Tq_j = 1表示向量长度为单位长度。当i=ji\not= j时,qiTqj=0q_i^Tq_j=0表示不同的向量之间是正交的。

标准正交矩阵(Orthonormal Matrix)

将标准正交向量qq放入矩阵QQ中,得到Q=[q1q2...qn]Q=\left[\begin{matrix}q_1& q_2& ...& q_n\end{matrix}\right],我们称这样的矩阵QQ标准正交矩阵(Orthonormal Matrices)。标准正交矩阵满足以下性质:

QTQ=[q1Tq2T...qnT][q1q2...qn]=[10001001]=IQ^TQ = \left[\begin{matrix}q_1^T \\ q_2^T \\ ...\\ q_n^T\end{matrix}\right]\left[\begin{matrix}q_1& q_2& ...& q_n\end{matrix}\right] = \left[\begin{matrix}1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & \cdots \\ \vdots & \vdots &\ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{matrix}\right] = I

当矩阵QQ恰好为方阵时,由于其正交性,可知矩阵QQ是可逆的,而QTQ=IQ^TQ = I,所以 Q^T = Q^{-1},那么此时我们称Q$为正交矩阵(Orthogonal Matrix)

示例

(1)Q=[010100001](1) \quad Q = \left[\begin{matrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1\end{matrix}\right]

此时QT=Q1=[010001100]Q^T = Q^{-1} = \left[\begin{matrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0\end{matrix}\right],易得QTQ=IQ^TQ = I

(2)Q=[cosθsinθsinθcosθ](2) \quad Q = \left[\begin{matrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{matrix}\right]

此时列向量长度为11,列向量相互正交

(3)Q=12[1111](3) \quad Q = \frac{1}{\sqrt{2}}\left[\begin{matrix} 1 & -1 \\ 1 & -1 \end{matrix}\right]

此时列向量长度为11,列向量相互正交

(4)Q=12[1111111111111111](4) \quad Q = \frac{1}{2}\left[\begin{matrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1& 1 & -1 & -1 \\ 1 & -1 & -1 & 1\end{matrix}\right]

(5)Q=13[122212221](5) \quad Q = \frac{1}{3}\left[\begin{matrix} 1 & -2 & 2 \\ 2 & -1 & -2 \\ 2 & 2 & 1\end{matrix}\right]

用途

上一篇文章我们知道投影矩阵P=A(ATA)1ATP=A(A^TA)^{-1}A^T,当矩阵AA为标准正交矩阵QQ时,有

P=Q(QTQ)1QT=QQTP = Q(Q^TQ)^{-1}Q^T = QQ^T

QQ是方阵时,QQT=IQQ^T=I,那么其投影矩阵P=IP=I

验证:

PT=P:(QTQ)T=(QT)TQT=QQTP^T = P: \quad (Q^TQ)^T = (Q^T)^TQ^T = QQ^T

P2=P:(QQT)2=QQTQQT=Q(QTQ)QT=QQTP^2 = P: \quad (QQ^T)^2 = QQ^TQQ^T = Q(Q^TQ)Q^T = QQ^T

将Q带入到最小二乘法公式(ATAx^=ATbA^TA\hat{x} = A^Tb)中,得到:

QTQx^=QTb=>x^=QTbQ^TQ\hat{x} = Q^Tb => \hat{x} = Q^Tb

分解开即为

xi^=qiTb\hat{x_i} = q_i^Tb

Gram-Schmidt正交化

两个向量的单位正交化

已知两个线性无关的向量a,ba,b无法满足标准的正交(如图1所示),现在我们想通过Gram-Schmidt方法进行单位化和正交化,将其转化为标准的单位正交基q1,q2q_1,q_2

image.png
图1:无法满足标准正交的两个向量a,b
  1. 设正交向量为A,BA, B,接着我们以向量aa为其中的正交向量AA,则需求出正交向量BB
  2. 若要求出正交向量BB,其实就是将bb投影到aa上,再求bbaa的距离,也就是误差向量ee,也就是用向量bb去减bb在向量aa上的分量,如图2所示
image.png
图2:向量b与向量a的误差向量e
  1. 根据上一节关于向量投影的知识可知:

    B=e=bp=bATbATAAB=e=b-p=b-\frac{A^Tb}{A^TA}A

  2. 检验ABA\perp B

    ATB=ATbATATbATAA=ATbATbATAAb=0A^TB = A^Tb- A^T\frac{A^Tb}{A^TA}A = A^Tb-\frac{A^Tb}{A^TA}Ab=0

  3. 得到两个正交向量q1,q2q_1,q_2

    q1=AA,q2=BBq_1 = \frac{A}{||A||}, \quad q_2 = \frac{B}{||B||}

三个向量的单位正交化

如果有三个向量要做单位正交化,那第三个向量需要垂直于前两个向量,我们设三个向量分别为a,b,ca,b,c,三个相互正交的向量为A,B,CA,B,C,三个相互正交的单位向量为q1,q2,q3q_1,q_2,q_3,并令A=aA=a,那么根据上一小节的内容,可以推出:

B=bATbATAAC=cp=cpapb=cATcATAABTcBTBBB=b-\frac{A^Tb}{A^TA}A \\ C=c-p=c-p_a-p_b = c-\frac{A^Tc}{A^TA}A-\frac{B^Tc}{B^TB}B

示例

设有线性无关的非正交向量a,ba,b,其中a=[111],b=[102]a = \left[\begin{matrix} 1 \\ 1 \\ 1 \end{matrix}\right],b = \left[\begin{matrix} 1 \\ 0 \\ 2 \end{matrix}\right],求两向量的标准正交矩阵QQ

  1. 正交化:我们设两正交向量为A,BA,B,其中

A=a=[111]B=bpa=bATbATAA=[102][111][112][111][111][111]=[102][111]=[011]A = a = \left[\begin{matrix} 1 \\ 1 \\ 1 \end{matrix}\right]\\ B=b-p_a = b-\frac{A^Tb}{A^TA}A = \left[\begin{matrix} 1 \\ 0 \\ 2 \end{matrix}\right] - \frac{\left[\begin{matrix} 1 & 1 & 1 \end{matrix}\right]\left[\begin{matrix} 1 \\ 1 \\ 2 \end{matrix}\right]}{\left[\begin{matrix} 1 & 1 & 1 \end{matrix}\right]\left[\begin{matrix} 1 \\ 1 \\ 1 \end{matrix}\right]}\left[\begin{matrix} 1 \\ 1 \\ 1 \end{matrix}\right]= \left[\begin{matrix} 1 \\ 0 \\ 2 \end{matrix}\right] -\left[\begin{matrix} 1 \\ 1 \\ 1 \end{matrix}\right] = \left[\begin{matrix} 0 \\ -1 \\ 1 \end{matrix}\right]

  1. 单位化:设两单位正交向量为q1,q2q_1,q_2,则

q1=13[111]q2=12[011]q_1 = \frac{1}{\sqrt3}\left[\begin{matrix} 1 \\ 1 \\ 1 \end{matrix}\right] \\ q_2 = \frac{1}{\sqrt2}\left[\begin{matrix} 0 \\ -1 \\ 1 \end{matrix}\right]

  1. 得到矩阵QQ

Q=[13013121312]Q = \left[\begin{matrix} \frac{1}{\sqrt3} & 0 \\ \frac{1}{\sqrt3} & -\frac{1}{\sqrt2} \\ \frac{1}{\sqrt3} & \frac{1}{\sqrt2} \end{matrix}\right]

QR分解

我们继续上文所述的示例,我们设原来的矩阵为A=[111012]A= \left[\begin{matrix} 1 & 1 \\ 1 & 0 \\ 1 & 2 \end{matrix}\right],然后来对比一下矩阵AAQQ

A=[111012]Q=[13013121312]A= \left[\begin{matrix} 1 & 1 \\ 1 & 0 \\ 1 & 2 \end{matrix}\right] \quad Q = \left[\begin{matrix} \frac{1}{\sqrt3} & 0 \\ \frac{1}{\sqrt3} & -\frac{1}{\sqrt2} \\ \frac{1}{\sqrt3} & \frac{1}{\sqrt2} \end{matrix}\right]

会发现,AAQQ的列空间是相同的,当然这是因为我们只是将原来的基标准正交化了。那么和LU分解表达了高斯消元法类似,上述示例中使用Gram-Schmidt正交化方法的过程也可以用矩阵的形式来表达,即A=QRA=QR,其中QQ为标准正交矩阵,RR为非奇异上三角矩阵。具体地,设矩阵AA有列a,ba,b,即A=[ab]A = \left[\begin{matrix} a & b \end{matrix}\right],那么我们可以直接写出矩阵QQ和矩阵RR,即

A=[ab]=QR=[q1q2][aTq1bTq1aTq2bTq2]A = \left[\begin{matrix} a & b \end{matrix}\right] = QR = \left[\begin{matrix} q_1 & q_2 \end{matrix}\right]\left[\begin{matrix} a^T q_1 & b^T q_1 \\a^Tq_2 & b^T q_2\end{matrix}\right]

由于我们令aa为两正交向量中的一个,因此aba\perp b,所以aTq2=0a^Tq_2 =0,因此矩阵RR是一个上三角矩阵,就有

A=[ab]=QR=[q1q2][aTq1bTq10bTq2]A = \left[\begin{matrix} a & b \end{matrix}\right] = QR = \left[\begin{matrix} q_1 & q_2 \end{matrix}\right]\left[\begin{matrix} a^T q_1 & b^T q_1 \\0 & b^T q_2\end{matrix}\right]