最小二乘法的多角度理解
1)线性拟合方式理解最小二乘法
已知X=

,Y=

两个向量数据。实际上我们并不知道两者的函数关系

。在这里,我们假设他们存在一定的线性关系,我们假设Y中的元素与X中的元素满足线性关系

,因此实际值

与

之间的误差就是

,需要找到这样子的

,使得误差的平方和

最小(实际上这就是最小二乘法定义):

因为,

,需要求

。求极值的方法就是求导,在这个就是对

求导。


'


因此,有:


用矩阵表示:

两边各乘以1/n,转变如下:

所以:



2)矩阵方式理解最小二乘法
我们根据下面的线性表达式

改写为下面的式子:

如果不考虑误差

,将

看做未知数,那么

与1就被作为系数,可以转为如下矩阵公式:

当n>2时,可知,这是个超定方程,没有精确解。对超定方程来说有一个最小二乘解:

令

,

,上面的公式就可以改写为:

而,这个解刚好可以使得S有最小值。这方面的理论可以查阅”超定方程解”,百度可以查到很多资料。因此,线性拟合与矩阵法的解必然是一致的。
3)最小二乘法的几何理解
假设n=3, x用p字母代替,那么有:

设

,

,
因此,

,Pa是

、

线性组合,因此在三维空间里,向量Pa一定落在向量

、

组成的平面当中。Y就好比是三维空间当中另一个已知向量。所以,这里

、

、Y三个向量已知, 现在要寻找系数

,

,使得向量

的长度(也就是模)是最小的。在矩阵理论里,可以用下面的公式表示:

上面的公式表示向量

的2范数的平方,也就是向量各个元素平方和,刚好就是S值。这个值最小,就是意味着在平面上找到一个向量

,使得向量

到

、

组成的平面距离最短,满足这样的

,

就是满足S最小。

4)Matlab例子
x=[0.5,1.0,1.5,2.0,2.5,3.0];
y=[1.75,2.45,3.81,4.80,7.00,8.6];
p=polyfit(x,y,1);
x1=0.5:0.5:3.0;
y1=polyval(p,x1);
plot(x,y,'*r',x1,y1,'-b')
