投影、最小二乘拟合与QR分解笔记
投影
高中的时候就学过,向量在上的投影为
当时推导主要利用了点积的几何意义$a b = |a||b|$。在代数意义上上式是怎么推导的呢?其实也不难:注意到和其投影的差一定是垂直于基向量的。因为与平行,设
我们就得到了一开始的结论。如果把写到左边(因为是向量的实数积所以可以交换) 我们这下看清楚了:将转变为其在上的投影的是一个矩阵!这个矩阵被称为投影矩阵。代数推导和投影矩阵有啥用?它们可以让我们把投影从投影到一个向量推广到投影到向量空间。
考虑如何把一个向量投影到矩阵的列空间上(假设的列向量线性无关)。我们一样考虑与的差,其一定垂直于,自然也垂直于,于是就有:
或者写在一起: 因为,所以是列向量的线性组合,可以写作。于是我们就得到了方程 因为的列是线性无关的,所以是可逆的(这个我们待会证明),于是我们可以解得 即 此时我们很清楚地看到,投影矩阵是。我们接下来证明之前我们用到的一个结论:可逆的充分必要条件是的列向量线性无关。
我们发现这个结论等价于:和有相同的零空间。
怎么证明?一个方向是简单的:
反方向的证明需要一些技巧: 倒数第二步写得有点花里胡哨其实就是向量自己和自己的点积,如果是零的话显然原向量就是零。证毕。
最小二乘拟合
投影和最小二乘拟合是怎么联系起来的呢?
线性拟合的本质是用给定的若干列向量的线性组合表示另一个向量。
比如我有一组数据,我的模型是,拟合的过程就是用向量和的线性组合表示的过程:
“线性拟合”的线性指的是这种组合的线性,和模型本身的线性是没有关系的。模型里面有二次项不要紧,只要二次项和其他项是线性组合的,那也不过是在左边的矩阵里多了一个列向量而已: 那么我们发现线性拟合的本质其实就是解一个形如的方程组(这里的表示模型中各项的系数,和上面表示自变量的没有关系),这个我们老熟悉了。但是事情不太妙的就是又高又瘦,方程组比未知数多,所以几乎肯定不存在准确解。
什么时候存在准确解?要在的列空间里。
所以如果只能求近似解,我们可以考虑把“近似到”中的一个最近的向量,然后就能求解了。
这个“近似”的过程其实就是投影。在中的投影肯定最接近,因为只有二者的差是和垂直的,这很符合我们的代数直觉。
所以联系之前的投影的推导,假设这个投影向量是,我们直接写出方程和解:
这就叫“最小二乘拟合”。如果非要较真,从微积分的角度理解一波也是可以的:定义拟合的误差函数为
如果要最小化,那么关于的所有分量的导数都为: 令第列的列向量为,那么上面也可以写成 并在一起得 这就是上面我们通过投影推出的方程。中的平方项也是最小二乘中“二”的由来。
矩阵的Gram-Schmidt正交化
我们发现无论是投影还是最小二乘拟合,计算和它的逆都是绕不过去的一步。本身就有一些特殊的性质,比如说其一定是正方阵,一定是对称的(通过转置等于自身易证)。但是这些性质在计算的时候帮助不大。如果我们能够优化的形态从而简化和它的逆的计算,那么各种算法的效率都会高上不少。
注意到中的每一个位置都是两个列向量的点积。如果当中的列向量是两两正交的,那么就变成了一个对角阵。对角阵的逆不要太好算!更进一步,如果的每一个列向量都是单位向量,那么就是单位阵,连逆都不用求了!
所以说啊,正交是个好东西。那对于一个矩阵,通过什么样的方式将其列向量完成正交化呢?
比较简单的一个算法称为Gram-Schmidt正交化。设的列向量为,则向量正交化之后的结果可以这么计算:
即对于第个列向量通过减去其在所有之前的(完成正交化的)向量上的投影来确保其和前面的向量都正交。最后,把所有的除以其模完成归一化,我们就可以得到一个标准正交列向量组成的矩阵,满足。(线性代数中常使用表示列向量标准正交的矩阵)
从变到的过程没有改变列空间,所以不会改变投影矩阵,但计算投影矩阵的开销大大降低了:
QR分解
Gram-Schmidt正交化的过程可以看作是在原矩阵上进行列变换,而列变换是可以用矩阵表示的。类比从高斯消元导出LU分解的思路,我们可以从Gram-Schimidt正交化导出一个矩阵的QR分解:
我们有,可以通过Gram-Schmidt正交化算出,但怎么计算呢?因为,所以只要在等式两边同时乘以,就得到。或者用和的列向量表示: 注意到,因为正交于所有,而又是由表示的,所以时,。所以其实是一个上三角阵: 再观察的各个非零位置的值以及Gram-Schimidt的公式,其实是可以在计算Gram-Schmidt正交化的时候顺便算出来的。QR分解有什么用呢?之前我们说正交化不改变投影矩阵,原因是“正交化不改变列空间”,QR分解能让我们在代数上证明这一点:
注:因为是一个方阵,所以我们这里能够把改写成。是不能这么转换的,因为长方阵不存在常规意义上的逆。类似地,QR分解还简化了最小二乘拟合的计算: