曲线拟合:

   设函数 y = f(x)在 m 个互异的观测点数据为  

 

 x x(1) x(2) x(3) x(4) x(5) x(....)
 y y(1) y(2) y(3) y(4) y(5) y(....)

        求一个简答的近似函数ψ(x) ,使之最好逼近f(x) ,而不必满足插值原理,没有必要说ψ(x)=y, 是要 δ=ψ(x) - y 尽可能的小。这种办法叫 曲线拟合,y= ψ(x)为最终的拟合函数。


   如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

   最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。

    

应用:

 曲线拟合分为线性拟合与非线性拟合其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。


技术上的:(主要讲的是 非线性拟合)

matlab:

 [a,Jm]=lsqcurvefit(fun,a0,x,y) 

非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x, xdata),但不知道系数向量x。今进行曲线拟合,求x使得输出的如下最小二乘表达式成立:
min Σ(F(x,xdatai)-ydatai)^2。 

一般函数的格式(其实都是一样的)写法不同:

x = lsqcurvefit(fun,x0,xdata,ydata)

x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
[x,resnorm] = lsqcurvefit(…)
[x,resnorm,residual] = lsqcurvefit(…)

[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(…)

还有一写 没有写出来(懒)


参数的说明:

x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;
lb、ub为解向量的下界和上界lb≤x≤ub,若没有指定界,则lb=[ ],ub=[ ];
options为指定的优化参数;
fun为待拟合函数,计算x处拟合函数值,其定义为     function F = myfun(x,xdata)
resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;
residual=fun(x,xdata)-ydata,即在x处的残差;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。


经过本人查阅资料,有一部分人很疑惑,说这个x0怎么整。我也是 查阅资料,说是因为 预测,或者用其他算法,先得到一些初值。然后有人就又问了,难道瞎猜?恭喜你,还思考, 我可以给你说,一般情况下, 根据实际情况,或者经验,或者 其他一些简单算法最好与处理下,然后求值。看结果怎么样,不行的话,在修改x0, 这样反复。我是这么认为的!错误之处,还请高手指点。