最小二乘法求解直线方程系数
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
相关文章推荐
- 在图像变换中用最小二乘法求解仿射变换参数
- 最小二乘法求解的两种表示方法
- 最小二乘法求解步骤
- 在图像变换中用最小二乘法求解仿射变换参数
- 利用矩阵求解最小二乘法
- c语言实现,用最小二乘法求解方程数多于未知变量的线性方程组的最适解(即矛盾方程组)
- 线性回归模型中的最小二乘法线性求解(Least Square Method)
- [机器学习笔记] 如何通过最小二乘法求解?
- 向量求导规则--最小二乘法求解最优解
- 机器学习之线性回归的最小二乘法求解
- c语言实现,用最小二乘法求解方程数多于未知变量的线性方程组的最适解(即矛盾方程组)
- 机器学习之线性回归的最小二乘法求解
- HDU 1431 素数回文【暴力求解】
- SVM学习(三):线性分类器的求解
- Bestcoder7(1004)hdu4988(经典问题:树状数组套treap求解动态逆序对)
- 求解最大子串
- 算法之逆序对问题求解
- BFS求解最短路经典算法
- 72 [面试题]如果不使用if-else和比较运算符,你知道如何求解2个数字中的较大一个吗?
- 穷举算法求解鸡兔同笼问题(三)