分享

最小二乘法的多角度理解

 HUSTKP 2020-11-24

1)线性拟合方式理解最小二乘法

已知X=Y=两个向量数据。实际上我们并不知道两者的函数关系Y=f(X)。在这里,我们假设他们存在一定的线性关系,我们假设Y中的元素与X中的元素满足线性关系,因此实际值之间的误差就是,需要找到这样子的,使得误差的平方和S最小(实际上这就是最小二乘法定义):

                                                              

因为,,需要求。求极值的方法就是求导,在这个就是对求导。

                                                               

                                                                      

                                                               '

                                                                    

因此有:

                                                         

                                                         

用矩阵表示:

                                                        

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

                                                       

所以:

                                                       a_{0}=\frac{E(XY)-E(X)E(Y)}{E(X^2)-E^{2}(X)}=\frac{Cov(X,Y)}{D(X)}

                                                       a_{1}=\frac{E(X^2)E(Y)-E(X)E(XY)}{E(X^2)-E^{2}(X)}

                                                            =\frac{E(X^2)E(Y)-E(X)E(XY)}{D(X)}=E(Y)-a_{0}E(X)

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

                                      

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多