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')
|
|