0. 为什么要用QR分解
- 情况1:A是方阵,m=n
- 情况2:A是over-determined的,m>n
- 情况3:A是under-determined的,m<n
在[数值计算] 条件数的例子2里,遇到的情况1(A是方阵),通过构造拉格朗日插值来使得对A求逆足够稳定。对于一般的情况下,解决思路是使用LU(LUP)分解来解决稳定性问题,在前一篇文中已经简介过了[数值计算] LU分解、LUP分解、Cholesky分解。
对于后两种情况, [数值计算] 数据拟合——线性最小二乘法 分析了用正规方程组求解over-determined以及under-determined的问题。但在文中也提到了,对于over-determined的线性最小二乘问题,正规方程组是不稳定的,通常需要用QR分解来处理:
理论很美好,在小数据量的时候没问题,然而直接使用正规方程组求解会在数据量大(e.g. data size > 100)的时候不稳定numerically unstable。原因是 需要对求逆,而A我们都知道是Vandermonde矩阵的一部分,本身就是poorly conditioned,而
QR分解,这也是Python MATLAB求解 线性最小二乘 问题的方法。只会更糟糕。解决的方法是使用
1. QR分解
1.1 定义
一个矩阵
-
是正交矩阵
-
-
是上三角矩阵
1.2 正交矩阵的性质
-
- 左乘一个正交矩阵对欧式范数的结果不影响(在下面证明eq.2的时候会用到)
1.3 从QR分解角度看线性最小二乘
对于一个over-determined线性最小二乘问题
这里
如果把