高斯牛顿迭代求解非线性回归问题
2016-01-07 23:16
204 查看
解决的问题:已知函数:
![](http://latex.numberempire.com/render?y%3D3%7Bx%7D%5E%7Bb%7D%2Bcx%2Bd&sig=f832a10cb2a25c7789c5f39d7a887bfd)
, 数据X=[1.0,2.0,3.0,4.0,5.0]'; Y=[15.0,21.656,27.928,34,39.944]'; 求参数 b c d。该问题属于非线性回归,不能直接使用最小二乘或梯度下降法求解。但可以使用高斯牛顿法迭代求解。
首先将b c d 作为变量泰勒展开得
![](http://latex.numberempire.com/render?dy%3D%7By%7D_%7B0%7D%2B3%7Bx%7D%5E%7Bb%7Dlnbdb%2Bxdc%2Bdd&sig=7a7373fd03958f0e1d8d08a26badf4fd)
。。。。。。。懒得写了。。。。。代码copy:
clc
clear
%训练数据
x=[1.0,2.0,3.0,4.0,5.0]';
y=[15.0,21.656,27.928,34,39.944]';
%终止条件,最大迭代次数,收敛精度
loop_max =100;
%初始值
beta=[0.5 1 1]';
%停止迭代误差
error=4;
for i=1:loop_max
xx=x.^beta(1);
y_mao=[x.^beta(1),x,ones(size(x,1),1)]*[3,beta(2),beta(3)]';
y_dif=y-y_mao;
norm(y_dif)
if norm(y_dif)<error
break;
end
%构造系数矩阵
A1=3*log(beta(1))*x.^beta(1);
A2=x;
A3=ones(size(x,1),1);
A=[A1,A2,A3];
%根据最小二乘求改正系数 并更新
beta=beta+inv(A'*A)*A'*y_dif;
end
i
real(beta)
, 数据X=[1.0,2.0,3.0,4.0,5.0]'; Y=[15.0,21.656,27.928,34,39.944]'; 求参数 b c d。该问题属于非线性回归,不能直接使用最小二乘或梯度下降法求解。但可以使用高斯牛顿法迭代求解。
首先将b c d 作为变量泰勒展开得
。。。。。。。懒得写了。。。。。代码copy:
clc
clear
%训练数据
x=[1.0,2.0,3.0,4.0,5.0]';
y=[15.0,21.656,27.928,34,39.944]';
%终止条件,最大迭代次数,收敛精度
loop_max =100;
%初始值
beta=[0.5 1 1]';
%停止迭代误差
error=4;
for i=1:loop_max
xx=x.^beta(1);
y_mao=[x.^beta(1),x,ones(size(x,1),1)]*[3,beta(2),beta(3)]';
y_dif=y-y_mao;
norm(y_dif)
if norm(y_dif)<error
break;
end
%构造系数矩阵
A1=3*log(beta(1))*x.^beta(1);
A2=x;
A3=ones(size(x,1),1);
A=[A1,A2,A3];
%根据最小二乘求改正系数 并更新
beta=beta+inv(A'*A)*A'*y_dif;
end
i
real(beta)
相关文章推荐
- MySQL用户管理命令
- 我的nlp之路(1)
- Ubuntu 14.04 配置VNC服务 配置Xfce4桌面
- portaudio回调方式实现录制任意长度的音频
- 闪存浪潮下不得不知的知识(4)-接口篇
- 常用css
- 闪存浪潮下不得不知的知识(4)-接口篇
- 如何在Ubuntu 14.04 中使用Samba共享文件
- zookeeper技术浅析
- App 常用的支付方式。
- 欢迎使用CSDN-markdown编辑器
- 数据库第五章
- 详解ps -aux
- 针对不同屏幕设计图的尺寸
- 第十九周 1.4---1.10
- 凸优化
- 苹果电脑下开启PHP功能
- 十大算法,让你轻松进阶高手
- cocopods,pch,网络适配,JSON解析器
- UVA-1336 Fixing the Great Wall(区间DP)