精确方程 Ax=b 可能没有解。最小二乘不修改“哪些输出可以由 A 产生”,而是在列空间中寻找离 b 最近的输出。
投影到一个方向
把 b 投影到非零向量 a 张成的直线上,得到
projab=⟨a,a⟩⟨b,a⟩a.
系数来自正交条件:残差 r=b−ca 必须满足 ⟨r,a⟩=0。若 a 已经归一化,系数就是 ⟨b,a⟩。
投影到子空间就是寻找最近点
设 W 是有限维子空间。若 b∈W 且 r=b−b∈W⊥,那么任意 w∈W 都满足
∥b−w∥2=∥r∥2+∥b−w∥2.
所以 b 是唯一最近点。这里的关键并非对距离公式求导,而是把误差拆成两个正交方向。
若 Q 的列是一组正交归一基,则
b=QQTb,PW=QQT.
投影矩阵满足 PW2=PW 与 PWT=PW。第一次投影已经落在 W 中,再投影不会改变结果。
最小二乘与正规方程
要最小化 ∥Ax−b∥2,预测值 Ax 必须是 b 在 col(A) 上的投影。残差与每一列正交,因此
AT(b−Ax)=0,
也就是正规方程
ATAx=ATb.
若 A 的列线性无关,ATA 可逆,最小二乘系数唯一。若列相关,最佳预测仍然唯一,但产生它的系数可能不唯一。
证明必要性与系数的唯一性
设 x 使平方误差最小,记残差为 r=b−Ax。沿任意系数方向 h 改动,误差之差为
∥r−tAh∥2−∥r∥2=−2trTAh+t2∥Ah∥2.若一次项系数不为零,选择符号合适、绝对值足够小的 t 就能降低误差,与最小性矛盾。因此对任意 h 都有 rTAh=0,即正规方程。解的存在性来自上一章的正交分解:列空间中的投影必有至少一个系数原像。
又因为 xTATAx=∥Ax∥2,有 ker(ATA)=kerA。满列秩使这个核为零,所以方阵 ATA 可逆;列相关时则有非零核方向,沿它移动得到无穷多个最优系数。
为什么正规方程一定足够
设 x 满足正规方程,残差记为 r=b−Ax。任意系数扰动 h 都满足
∥b−A(x+h)∥2=∥r∥2+∥Ah∥2.
交叉项为零,因为 ATr=0。所以这不是只找到了某个驻点,而是证明了全局最小。等号成立当且仅当 h∈kerA,全部最小二乘系数为 x+kerA。这解释了为什么最佳输出唯一,却可能有多个系数表示。
从插值走向拟合
多项式插值要求曲线穿过全部数据点。现在用直线 y=αx+β 拟合 (1,6),(2,7),(3,5):
A=123111,b=675.
正规方程为
(14663)(αβ)=(3518),
得到 α=−1/2,β=7。预测值为 (6.5,6,5.5)T,残差为 (−1/2,1,−1/2)T。直接相乘可验证 ATr=0。
QR 避免显式形成正规方程
对满列秩矩阵做 Gram–Schmidt,可写成
A=QR,
其中 Q 的列正交归一,R 是对角元素非零的上三角矩阵。最小二乘问题等价于
Rx=QTb.
这只需一次正交化与一次三角求解。LU 章节通过消元分解方阵,QR 则通过正交基处理矩形矩阵和最小二乘。
对满列秩矩阵,二范数条件数定义为 κ2(A)=σ1/σn。SVD 的构造说明 ATA 的正特征值为 σi2,所以准确关系是 κ2(ATA)=κ2(A)2。具体 QR 实现的数值稳定性是另一问题;Householder QR 与改进 Gram–Schmidt 留待数值线性代数部分讨论。
证明QR 为什么归结为这个三角系统
Gram–Schmidt 保持每一段前缀的张成空间,因此第 j 列可写成 ∑i≤jrijqi,其中 rij=qiTaj,rjj 是非零余向量的正范数。逐列合并就得到 A=QR,且 R 是可逆上三角矩阵。把 b 正交分解成 QQTb+(I−QQT)b,便有
∥Ax−b∥2=∥Rx−QTb∥2+∥(I−QQT)b∥2.这里用到 ∥Qz∥2=zTQTQz=∥z∥2。第二项固定不变,解上面的三角系统使第一项取零,故达到最小值。
把前面的拟合完整地算成 QR
仍使用三点拟合的设计矩阵。第一列归一化后为 q1=(1,2,3)T/14。第二列减去第一方向上的投影,得到
111−146123=7141−2.
所以 q2=(4,1,−2)T/21,并且
R=(1406/143/21),QTb=(35/1421/21).
第二行给出 3β=21,第一行给出 14α+6β=35,因此仍为 β=7,α=−1/2。这也直接验证了 QR 与正规方程求的是同一个最佳预测。
练习
练习投影到一条直线
把 (3,1) 投影到 (1,1) 张成的直线上,并求残差。
解答
系数为 4/2=2,投影为 (2,2),残差为 (1,−1)。残差与 (1,1) 的内积为零。
练习辨认投影矩阵
证明对正交归一列矩阵 Q,矩阵 P=QQT 满足 P2=P。
解答
P2=Q(QTQ)QT=QIQT=P。
练习最佳常数
用一个常数 c 拟合数据 y1,…,yn,证明最小二乘解是样本均值。
解答
设计矩阵是全一列。正规方程给出 nc=∑iyi,所以 c=n1∑iyi。残差之和为零。
评论