梯度下降法,最小二乘法求线性回归
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)
为何更好的显示拟合的效果,请看下图:
总结:用此函数拟合这些点,效果看起来并不是特别好,如果数据范围比较小,可以尝试别的函数进行拟合。
最小二乘法和梯度下降法有哪些区别?
非线性最小二乘法:
百度百科
非线性最小二乘的求解样例:
转自: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)
为何更好的显示拟合的效果,请看下图:
总结:用此函数拟合这些点,效果看起来并不是特别好,如果数据范围比较小,可以尝试别的函数进行拟合。
相关文章推荐
- 格式化
- 第四周项目1 求两个数的最大公约数
- git add -p用法记录
- 创建数据库、文件组、删除数据库
- 作业四:结对编程2
- 2016年第一季度阅读书目
- Compound Interest Calculator4.0
- 输入一行字符串,输出相应的行数
- leetcode之旅(8)-Contains Duplicate
- iOS多线程开发系列之(二)NSOperation
- POJ
- OpenStack虚机迁移live-migration失败(error: internal error Attempt to migrate guest to the same host) 推荐
- leetcode之旅(8)-Contains Duplicate
- leetcode之旅(8)-Contains Duplicate
- 360面试题
- mybatis(6)
- 根据label字数计算UILable高度
- 【动态规划】求最大连续bit数
- (1)app图标问题
- Self summary: Using Lua in torch (keep updating)