最小二乘法求解直线方程系数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wokaowokaowokao12345/article/details/72850143

引言

最小二乘法是经典的参数稳健估计方法。核心思想是使得估计出的模型与实际数据之间误差的平方和最小(趋于0)。直线参数的估计又是最常用的曲线参数估计,稳健估计方法有很多:RANSAC、BaySAC、极大似然法等,这篇博文主要讲解如何使用最小二乘法估计直线参数。


这里写图片描述
一群离散观测点,及其最小二乘估计直线方程

直线方程最优拟合

直线方程的形式比较多,粗略统计有10种之多,如:一般式、点斜式、截距式、斜截式。本博文采用直线斜截式,最小二乘拟合其方程系数。
斜截式:y=kx+b,适用于不垂直于x轴的直线。

  1. 斜率为k
  2. y轴截距为b

根据最小二乘原理,误差平方和最小,得误差函数:f=ni=1(yikxib))2=0。高数中极值定理可知,误差方程一阶导数等于0处取得极值,因此分别对其关于kb求导,解k,b值使得误差函数取最小值。但是直线斜截式无法表示垂直x轴的直线,如:x=3

fk=ni=1[(yikxib)xi]=0fb=ni=1(yikxib)=0

{ni=1(xiyi)kni=1(x2i)bni=1(xi)=0ni=1(yi)kni=1(xi)nb=0

令,A=ni=1(x2i)B=ni=1(xi)C=ni=1(xiyi)A=ni=1(yi),得

{Ak+bB=CBk+nb=D

{k=CnBDAnBBb=ADCBAnBB

上面过程繁琐,只适用于直线的最小二乘解。下面将直线斜截式拓展导任意曲线,任意曲线方程p(x)=p1xn+p2xn1++pnx+pn+1。可以看到直线斜截式即,n=1时的曲线方程。将曲线方程,写成矩阵乘积的形式:

x1x2xn111p1p2pn=y1y2yn

上面乘积形式,即AX=BX=(ATA)1ATB,解出的X就是最小二乘解。

总结

斜截式虽然并不能表示竖直直线,但是实际应用中也基本不太可能遇到完全竖直直线,竖直的直线也可以用尽量大的系数a表示。上面列出了两种直线系数低最小二乘计算方法,具体使用哪一种可以根据使用环境确定。若模型单一,只有二维直线时候,建议使用第一种具有计算速度快的优点。

参考

[1]http://cn.mathworks.com/help/matlab/ref/polyfit.html?searchHighlight=polyfit&s_tid=doc_srchtitle
[2]https://www.varsitytutors.com/hotmath/hotmath_help/topics/line-of-best-fit

展开阅读全文

没有更多推荐了,返回首页