您的位置:首页 > 其它

梯度下降法,最小二乘法求线性回归

2016-03-29 21:06 225 查看
来自知乎内容:

最小二乘法和梯度下降法有哪些区别?

非线性最小二乘法:

百度百科

非线性最小二乘的求解样例:

转自:LongShaoAn

问题:已知数据X、Y,

      X=[ -0.46,-0.0755,-0.0227,-0.63,-0.435,-0.4]

      Y=[0.595,0.556,0.44,0.53,0.634,0.551];

依照Y=b/(a+X)
,用最小二乘拟合方法拟合出ab的值,并绘制出函数的曲线。

      工具方法:matlab的lsqcurvefit函数。

具体实施:

 (1)先大致看一下,此数据的效果,通过命令plot完成。

x=[ -0.46,-0.0755,-0.0227,-0.63,-0.435,-0.4]

y=[0.595,0.556,0.44,0.53,0.634,0.551];

plot(x,y, 'b:o', 'LineWidth',3) %蓝色o线绘出



 (2)通过函数lsqcurvefit进行曲线拟合。

1>构建函数:

function F = myfun(x,xdata)

F= x(1)./(x(2)+xdata);

保持在当前目录下面以myfun.m命名。

2>求取参数ab,这里以x(1)和x(2)表示。

xdata=[-0.46,-0.0755,-0.0227,-0.63,-0.435,-0.4];

ydata=[0.595,0.556,0.44,0.53,0.634,0.551];

x0 = [1;1]  %初值

[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)

鉴于不同的初值可能得到不同的结果,进行了如下尝试:

初值x0=(1,1)

x(1)=2.2788

x(2)=4.4836

初值x0=(2,2)

x(1)=2.2797

x(2)=4.4851

初值x0=(1,10)

x(1)= 2.2792

x(2)= 4.4842

初值x0=(-1,100)

x(1)=2.2802

x(2)=4.4861

因此我们有理由相信x(1)=2.28,x(2)=4.48

因此次多项式可以表示为

y=2.28/(4.48+x)

接下来我们给出此多项式的图形:

x=-5:0.1:5;

y=2.28./(4.48+x)

plot(x,y, 'r', 'LineWidth',3)



 为何更好的显示拟合的效果,请看下图:



 总结:用此函数拟合这些点,效果看起来并不是特别好,如果数据范围比较小,可以尝试别的函数进行拟合。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: