QR分解
QR 分解(QR factorization)把矩阵的列改写为一组互相垂直的单位方向,再记录原列由这些方向组成的系数。设实矩阵 有 行、 列, 且各列线性无关。它的薄 QR 分解是 其中 是 矩阵, 是对角元非零的 上三角矩阵。 的列给出方向, 说明原来的每一列沿这些方向走了多远。若约定 的对角元为正,满列秩情形下这组薄分解唯一。
两列向量的分解
取 、。第一列长度为 ,沿它的单位方向为 。第二列在这个方向上的系数是 减去这一部分,得到与 垂直的余量: 所以 。 核对 。余量的长度为 ,所以 。
图中第二列 被拆成沿第一列的投影 与垂直余量 。两段相接到 的端点;直角对应上面的点积为零。
把两条单位方向放入 ,把长度和投影系数放入 ,便得 直接相乘有 ;而 。这里并未改变矩阵表示的变换,只是把输入列的组合换成便于计算的正交坐标。
从逐列投影得到一般公式
设 。按列执行Gram-Schmidt正交化:对第 列,先计算它沿此前单位方向的系数 (),再令 再令 、。 对任意 ,因为已得的 两两正交, 每个新 因而与旧方向正交。原列又满足 ;把所有列并排,就是 。第 列只用到前 个方向,因此 的主对角线以下全为零。
满列秩保证每个 :若它为零,第 列已经由前几列张成,与列线性无关矛盾。这同时解释了 和 可逆的来源。若列相关,某一步会遇到零余量;这时仍可做带秩信息的 QR 计算,但不能沿用此处“ 可逆”的求解步骤。
用 QR 求一条最小二乘直线
设三个自变量为 ,观测为 。用 拟合时,设计矩阵为 每一行都对应一个时刻的预测,故 。 第一列是常数方向,第二列是时间方向。把时间列在常数方向上的部分减掉,相当于把 中心化成 。由此得到 两列 的点积为零、长度为一。用观测分别与它们做内积,有 。求解 ,先从第二行得 ,再从第一行得 。 得 、。拟合值是 ,残差为 ,残差平方和为 。残差与常数列及时间列的点积均为零,和最小二乘法的正交条件一致。
这里的三角方程不只是凑出同一个答案。记 为观测在列空间上的正交投影,则 与该空间垂直。对任意参数 ,先把残差拆开: 两项正交,且 保持向量长度,因此 第二项非负,且 可逆,故令 恰好给出唯一的最小二乘参数。这个等式也解释了残差为何仍可能不为零: 不在模型允许的预测方向内。
精确计算与浮点计算的边界
在精确算术中,满列秩矩阵的正规方程 与 QR 方程给出同一个解。浮点计算时,直接形成 会把二范数条件数平方;两列几乎相关时可能失去有效数字。上面的逐列投影适合手算和解释结构,实际程序常用 Householder 反射求 QR,以更好地保持正交性。数值实现方法与推导中选用的手算法需要区分。
练习可把观测改为 而保持三个时间不变。此时 ,三角方程给出 ;三点恰落在 上,残差为零。原例的非零残差来自数据不共线,而不是 QR 分解不精确。
参考资料与知识联系
- Boyd 与 Vandenberghe,《Introduction to Applied Linear Algebra》:正交化、薄 QR 与最小二乘。
- Driscoll 与 Braun,《Fundamentals of Numerical Computation》:QR 分解及Householder 计算:分解、求解与浮点稳定性。
- 先修:正交投影、Gram-Schmidt正交化;后续:最小二乘法、条件数、伪逆。