最小二乘法的多角度理解
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')