矩阵的QR分解:
A=QR,其中Q为正交矩阵,R为上三角矩阵。
具体可以通过HouseHold变换做到,分步进行,如下图:
- 如果矩阵A是可逆矩阵的话,那么分出的矩阵R一定是列线性无关的。此时,R的对角线元素一定是非零:
根据上面的绿色字体,这是因为一旦对角线元素为零,那么这一列就可以被它左边的列共同线性表示出来,也就是线性相关了。
经济型的QR分解:
对上述分解出的Q矩阵进行矩阵分块,如下图绿色标注:
- 进行QR分解,我们能得到什么?
可以得到矩阵A ,对应的一组正交基底Q1,也就是说矩阵A张成的空间和矩阵Q1张成的空间相等。
而,Q1矩阵的各列相互正交。
我们还可以利用Q1中的线性表示出矩阵的A某一列,如下图绿色笔记:
%matlab中 QR()分解函数
[Q,R]=qr(A) %进行满的QR分解,第一种
[Q,R]=qr(A,0) %经济型的QR分解,第二种
- 利用QR分解解最小二乘问题
QR分解可以简化解决列满秩的超定方程组问题Ax=b。
这里矩阵A是m*n型,而A的秩就是列数n,所以称矩阵是列满秩的;
另外,m>n,表示矩阵这个方程组的条件多,所以是超定的。
- 为什么要把左边化成Rx的形式,再说解出线性方程组呢?
因为R矩阵是上三角矩阵,很容易解。具体参见LU分解。
从上面的这张图可以看出,QR分解得到的解是误差范数最小的。
为什么不使用正规方程ATAx=ATb求解最小二乘问题AX=b呢?
因为条件数。使用正规方程对应的系数矩阵的条件数是原矩阵条件数的平方,如果原矩阵A本身条件数就很大,那么这样使用正规方程条件数又会被放大,结果更是偏离一大截。
使用QR分解解决最小二乘问题更加灵活,复用性更强!
以往使用正规方程解最小二乘问题Ax=b存在一个很明显的问题是:如果第一次做好之后又来了一组新的观测值,那么我么就要重新构造出新的正规方程,这样计算量会很大。
但是,QR分解可以很好地复用上次运算的结果,解决新问题。
如下图: