正交分解的理解方法有两种,正着理解指的是施密特正交化方法,反着理解则是吉文斯变换(givens)和豪斯霍尔德(householder)变换,即一个正交矩阵乘以一个矩阵会发生什么。
这三种变换这篇博文讲的很好,(矩阵QR分解_honyniu的专栏-CSDN博客 1。
我在这里不再赘述,只对后两种变换做一个直观的阐述。正交变换左乘列向量,可以让列向量的两个元素在满足条件的情况下一起变换,可以用于化阶梯型(given变换);可以让列向量 ξ \boldsymbol{\xi} ξ变化为与给定单位向量 ζ \boldsymbol{\zeta} ζ同方向的向量 η \boldsymbol{\eta} η(householder变换),行向量同理,右乘即可。
从后两种变换来说,正交分解意味着将一个矩阵A左乘多个正交变换矩阵 Q 1 ⋯ Q n Q_1 \cdots Q_n Q1⋯Qn进行列消元,得到一个上三角矩阵 R R R,即
Q 1 × Q 2 × ⋯ Q n × A = R Q_1\times Q_2 \times \cdots Q_n\times A=R Q1×Q2×⋯Qn×A=R
考虑到正交矩阵乘正交矩阵仍是正交矩阵,正交矩阵的逆是其转置且也是正交矩阵,得:
A = Q × R A=Q\times R A=Q×R
正交分解是完全正交分解在A满秩时的特殊形式,完全正交分解表达式如下:
A = Q ( R 0 0 0 ) Z T P T ( 1 ) \mathbf{A}=\mathbf{Q}\left(\begin{array}{ll} \mathbf{R} & 0 \\ 0 & 0 \end{array}\right) \mathbf{Z}^{T} \mathbf{P}^{T}(1) A=Q(R000)ZTPT(1)
其中Q和Z都是正交矩阵,其具体生成过程如下:
令 n × n n\times n n×n矩阵A秩为r,对其进行正交分解:
A × P = Q × R Q ( 2 ) A\times P=Q\times R_Q(2) A×P=Q×RQ(2)
这里的P也是正交矩阵(初等行变换矩阵是正交矩阵,P是多个初等行变换矩阵的乘积),只起到将线线性无关行置换到上部的作用。由于A并不是满秩,这里的 R Q R_Q RQ显然会出现n-r行0行,我们将其非零行提取出来,构成矩阵 R ^ Q \hat{R}_Q R^Q,其规模为 r × n r\times n r×n。
此时的 R ^ Q \hat{R}_Q R^Q矩阵是一个上阶梯型矩阵upper trapezoidal matrix,这样的结果与式(1)的形式(upper triangular form)并不一样,这是我们不想看到的,我们需要进一步的变换。我们需要把 R Q R_Q RQ每行右端的n-r列清零,这显然可以利用given变换实现,右乘一个正交矩阵Z(n×n)即可,即:
A = Q × R Q × Z × Z T × P T A=Q\times R_Q \times Z \times Z^T\times P^T A=Q×RQ×Z×ZT×PT
换个形式就是式(1)所示的结果。
在求解线性方程时我们会面对两个问题,超定问题和欠定问题,超定问题会导致没有解,欠定问题会导致多解。对于超定问题,我们一般采用最小二乘方法。最小二乘方法有两种理解方式,一种是求导方法,一种是线性空间射影方法。我简单用线性空间射影方法说明一下。
对于方程
A x = b Ax=b Ax=b
式中, A x Ax Ax是A各个列向量张成的空间的一个向量。若方程超定,则b不在此空间内。我们要求的向量应满足: ∣ ∣ A x − b ∣ ∣ ||Ax-b|| ∣∣Ax−b∣∣最小,即Ax-b与A正交,则:
A T ( A x − b ) = 0 A^T (Ax-b)=0 AT(Ax−b)=0
即:
A T A x = A T b A^T Ax=A^Tb ATAx=ATb
显然,此时的超定问题转化为了一个定解问题或者欠定问题。而欠定问题一是不方便计算机计算,二是不方便直接将结果带入其他优化问题,完全正交分解正是用来解决这个问题的.完全正交分解后结果如下:
Q ( R 0 0 0 ) Z T P T x = b \mathbf{Q}\left(\begin{array}{ll} \mathbf{R} & 0 \\ 0 & 0 \end{array}\right) \mathbf{Z}^{T} \mathbf{P}^{T}x=b Q(R000)ZTPTx=b
适当变换:
( R 0 0 0 ) Z T P T x = Q T b \left(\begin{array}{ll} \mathbf{R} & 0 \\ 0 & 0 \end{array}\right) \mathbf{Z}^{T} \mathbf{P}^{T}x=\mathbf{Q^T}b (R000)ZTPTx=QTb
这里的R是一个上对角阵,若将 Z T P T x \mathbf{Z}^{T} \mathbf{P}^{T}x ZTPTx视为 x ′ x' x′此时 x ′ x' x′的前r维已经是定值了,后n-r维是任取的。
因为 Z T P T \mathbf{Z}^{T} \mathbf{P}^{T} ZTPT为正交阵,而正交变换f有如下性质:
( f ( x ) , f ( y ) ) = ( x , y ) (f(x),f(y))=(x,y) (f(x),f(y))=(x,y)
因此, ∣ ∣ x ′ ∣ ∣ = ∣ ∣ x ∣ ∣ ||x'||=||x|| ∣∣x′∣∣=∣∣x∣∣
我们如果取 ∣ ∣ x ∣ ∣ ||x|| ∣∣x∣∣最小的解,只需要使 ∣ ∣ x ′ ∣ ∣ ||x'|| ∣∣x′∣∣最小,即将后n-r维设为0,即:
Z T P T x = ( R − 0 0 0 ) Q T b Z^TP^Tx=\left(\begin{array}{ll} {R^-} & 0 \\ 0 & 0 \end{array}\right) {Q^T}b ZTPTx=(R−000)QTb
根据奥卡姆剃刀原则,选择模最小的解是有合理性的,计算方法如下:
x = P Z ( R − 0 0 0 ) Q T b x=PZ\left(\begin{array}{ll} {R^-} & 0 \\ 0 & 0 \end{array}\right) {Q^T}b x=PZ(R−000)QTb
欢迎关注我的个人公众号:非功利者的功利人生
矩阵QR分解_honyniu的专栏-CSDN博客 ↩︎