这是从高等数学方面理解最小二乘法,个人觉得这种最方便理解。
本文是 Least squares approximation 的学习笔记。这个文章从线性代数的角度,对最小二乘法的原理讲解的通俗易懂。(转载自知乎:/p/76644659)
1 提出问题
如上图所示:
A: 是一个n行k列的矩阵,每行可以看作是一个观测数据(或者一个训练样本)的输入(features);
b: 是一个n维的列向量,每项表示一个观测数据的目标值(ground truth target value);
x: 是一个k维的列向量,是需要构建的线性模型的参数。
我们希望通过已知的A和b,求解出一个x,使得Ax = b。 但是,一般情况下,不存在满足这个等式的x。 怎么办?
2 分析问题
Ax = b这个等式的左边,可以看作是一个矩阵A的列空间(Column space of A)。 这个等式没有解,可以理解为向量b不在矩阵A的列空间上。 如下图所示:
A的列空间可以抽象成一个超平面,b可以抽象成一个向量。b不在超平面上。
解决办法是:在超平面上,找一个最接近b的向量。假设这个最接近b的向量是Ax*(其中x* 就是最优的参数解),那么,向量b和向量Ax之间的距离应该是最小的。所以,可以通过最小化b和Ax之间的距离,来求出x*,如下图所示:
这个就是最小二乘(least square estimate、least square solution、least square approximation)的含义。结合上图中的公式,最小二乘计算的是:求一个近似的x*,使b和Ax*各项的差的平方的和最小。
3 解决问题
从上图可以看出,在超平面上,距离b最近的向量是b向量在超平面上的投影向量v。所以,Ax*其实就是这个投影向量v。所以:
1)Ax* - b 得到的向量, 与矩阵A的列空间正交;
2)矩阵A的列空间正交的向量,正好是矩阵A的转置的零空间中的向量;
3)Ax* - b 是矩阵A的转置的零空间的一个向量,所以Ax - b 乘 A的转置 得到一个0向量
如下图所示:
根据上面的等式,可以得出:
总结整个最小二乘的逻辑:
1)已知A,b,根据等式Ax = b求解x;
2)但是,以上等式没有解,只能求一个最优的近似的解;
3)根据最小二乘算法,可以求出一个x*,就是 Ax = b的最优解。