您的位置:首页 > 其它

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

2017-06-03 09:03 169 查看

引言

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



一群离散观测点,及其最小二乘估计直线方程

直线方程最优拟合

直线方程的形式比较多,粗略统计有10种之多,如:一般式、点斜式、截距式、斜截式⋯。本博文采用直线斜截式,最小二乘拟合其方程系数。

斜截式:y=kx+b,适用于不垂直于x轴的直线。

斜率为k

y轴截距为b

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

⎧⎩⎨⎪⎪∂f∂k=∑ni=1[(yi−kxi−b)xi]=0∂f∂b=∑ni=1(yi−kxi−b)=0

{∑ni=1(xiyi)−k∑ni=1(x2i)−b∑ni=1(xi)=0∑ni=1(yi)−k∑ni=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=Cn−BDAn−BBb=AD−CBAn−BB

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

⎛⎝⎜⎜⎜⎜x1x2⋮xn11⋮1⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜p1p2⋮pn⎞⎠⎟⎟⎟⎟=⎛⎝⎜⎜⎜⎜y1y2⋮yn⎞⎠⎟⎟⎟⎟

上面乘积形式,即AX=B,X=(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息