




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于BP网络的股票数据预测模型姓名: 江政 班级: 控制2015级 学号: 2015028081100015 2016 年6月 26日需求分析和网络结构设计根据我们对自然神经系统的构造和机理的认识,神经系统是由大量的神经细胞(神经元)构成的复杂的网络,人们对这一网络建立一定的数学模型和算法,设法使它能够实现诸如基于数据的模式识别,函数映射等带有“智能”的功能,这种网络就是神经网络。其中,BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差反向传播算法训练的多层前馈网络。BP网络能学习和存贮大量的输入输出模式映射关系,而无需事先揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。是目前应用最广泛的神经网络模型之一。因此理解BP网络结构和权值调整算法对学习其他神经网络具有重要作用。针对150组股票数据进行拟合(详细数据请见附件1),选取其中的开盘、最高、最低、收盘和成交次数五组数据,用当日的这五组数据来预测次日的收盘数据,从而等效建立一个股票数据预测模型。采用包括输入层、隐含层和输出层的三层BP网络结构,如图1所示,输入层包含五个神经元,隐含层包含三个神经元,输出层为一个神经元。其中,隐含层神经元的激活函数采用非对称型Sigmoid函数,函数表达式为:,输出层神经元的激活函数采用线性函数,表达式为:。将150组数据分为三等份,其中两份作为训练样本,用来对网络进行训练学习;另外一份作为测试样本,用来检验所训练出的网络的泛化能力。采用BP算法对隐含层和输出层权值进行修正,以达到计算输出和实际样本输出相差最小,最终实现较精确预测的目的。图1 预测模型的网络结构MATLAB源程序(版本不限)clear allclcclf%采用三层BP网络结构%输入层神经元数为5,隐含层神经元数为3,输出层神经元数为1%最大迭代次数maxcishu=5000;%e为计算输出和样本实际输出差%在内存中开辟maxcishu个存储空间e=zeros(maxcishu,1);% 输入数据维度5,输入节点数5% maxp当日最高价序列% minp当日最低价序列% sp当日开盘价% ep当日收盘价% tnum当日成交量% 调用数据%shuju=xlsread(dm.xlsx, B1:K151);shuju=importdata(dm.xlsx);sp=shuju.data(:,1);maxp=shuju.data(:,2);minp=shuju.data(:,3);tnum=shuju.data(:,10);ep=shuju.data(:,4);%将数据集按照2:1分为训练样本集,和测试样本集jishu=length(ep);jishu=ceil(jishu/3*2) ;%测试样本集是2/3处到最后一个spt=sp(jishu+1:end);maxpt=maxp(jishu+1:end);minpt=minp(jishu+1:end);tnumt=tnum(jishu+1:end);ept=ep(jishu+1:end);%训练样本集sp=sp(1:jishu);maxp=maxp(1:jishu);minp=minp(1:jishu);tnum=tnum(1:jishu);ep=ep(1:jishu);%记录下每组的最大值最小值,为训练样本集的归一化准备maxp_max=max(maxp);maxp_min=min(maxp);minp_max=max(minp);minp_min=min(minp);ep_max=max(ep);ep_min=min(ep);sp_max=max(sp);sp_min=min(sp);tnum_max=max(tnum);tnum_min=min(tnum);% 目标数据为次日的收盘价,相当于把当日收盘价时间序列向前挪动一个单位goalp=ep(2:jishu);%数据归一化,将所有数据归一化到(0 1)guiyi=(A)(A-min(A)/(max(A)-min(A);maxp=guiyi(maxp);minp=guiyi(minp);sp=guiyi(sp);ep=guiyi(ep);tnum=guiyi(tnum);% 后面的目标数据goalp个数是ep向前移动一位得到,所以最后一组的目标数据缺失% 所以,要把除了目标数据goalp以外的所有数据序列删除最后一个maxp=maxp(1:jishu-1);minp=minp(1:jishu-1);sp=sp(1:jishu-1);ep=ep(1:jishu-1);tnum=tnum(1:jishu-1);%需要循环学习次数loopn,即训练样本的个数loopn=length(maxp);%为了方便表示将5个行向量放到一个5*loopn的矩阵中simp中,每一列是一个样本向量simp=maxp;minp;sp;ep;tnum;%隐含层节点n%根据相关资料,隐含层节点数比输入节点数少,一般取1/2输入节点数bn=3;%隐含层激活函数为S型函数jihuo=(x)(1/(1+exp(-x);%bx用来存放隐含层每个节点的输出%bxe用来保存bx经过S函数处理的值,即输出层的输入bx=zeros(bn,1);bxe=zeros(bn,1);%权值学习率uu=0.02;%W1(m,n)表示隐含层第m个神经元节点的第n个输入数值的权重,%即,每一行对应一个节点%所以输入层到隐含层的权值W1构成一个bn*5的矩阵,初值随机生成W1=rand(bn,5);%W2(m)表示输出节点第m个输入的初始权值,采用随机生成W2=rand(1,bn);%loopn个训练样本,对应loopn个输出out=zeros(loopn,1);for k=1:1:maxcishu %训练开始,i表示为本次输入的是第i个样本向量 for i=1:1:loopn %求中层每个节点bx(n)的输出,系数对应的是W1的第n行 for j=1:1:bn bx(j)=W1(j,:)*simp(:,i); bxe(j)=jihuo(bx(j); end %求输出 out(i)=W2*bxe; %误差反向传播过程 %计算输出节点的输入权值修正量,结果放在行向量AW2中 %输出神经元激活函数 f(x)=x %为了书写方便,将deta用A代替 AW2=zeros(1,bn); AW2=u*(out(i)-goalp(i)*bxe; %计算隐含层节点的输入权值修正量,结果放在行向量AW1中,需要对隐含层节点逐个处理 AW1=zeros(bn,5); for j=1:1:bn AW1(j,:)=u* (out(i)-goalp(i)*W2(j)*bxe(j)*(1-bxe(j)*simp(:,i); end W1=W1-AW1; W2=W2-AW2; end %计算样本偏差 e(k)=sum(out-goalp).2)/2/loopn; %误差设定 if e(k)=0.01 disp(迭代次数) disp(k) disp(训练样本集误差) disp(e(k) break endend%显示训练好的权值W1W2%绘制误差收敛曲线,直观展示收敛过程figure(1)hold one=e(1:k);plot(e)title(训练样本集误差曲线)% 计算输出和实际输出对比图figure(2)plot(out,rp)hold onplot(goalp,bo)title(训练样本集计算输出和实际输出对比)%学习训练过程结束%进行测试样本阶段,变量用末尾的t区分训练样本maxpt=(maxpt-maxp_min)/(maxp_max-maxp_min);minpt=(minpt-minp_min)/(minp_max-minp_min);spt=(spt-sp_min)/(sp_max-sp_min);eptduibi=ept(2:end);ept=(ept-ep_min)/(ep_max-ep_min);tnumt=(tnumt-tnum_min)/(tnum_max-tnum_min);% 同样,将多维数据放入一个矩阵中,便于处理simpt=maxpt;minpt;spt;ept;tnumt;%因为是用当前的数据预测下一天的,所以检验样本第一天的收盘价和预测的最后一天的收盘价因为没有比对值而舍弃for i=1:1:length(maxpt)-1 for j=1:1:bn bx(j)=W1(j,:)*simpt(:,i); bxe(j)=jihuo(bx(j); end %输出预测序列 outt(i)=W2*bxe;end%预测输出和实际对比散点图figure(3)hold onplot(outt,rp)plot(eptduibi,bo)title(测试样本集预测输出和实际对比)%计算全局误差disp(测试样本集误差)disp(1/length(eptduibi)*0.5*sum(eptduibi-outt).2)结果及分析 图2为MATLAB命令窗口显示内容,图3为训练样本集误差曲线图,图4为训练样本集计算输出和实际输出对比图,图5为测试样本集预测数据与实际数据对比图。图2 MATLAB命令窗口显示内容图3 训练样本集误差曲线图4 训练样本集计算输出和实际输出对比图图5 测试样本集预测数据与实际数据对比 由图2和图3可看出,刚开始的时候计算输出和实际输出误差比较大,经迭代259次后误差收敛到设定值0.01,且最后一组数据误差最小。训练好的网络隐含层和输出层权值矩阵分别为 W1和W2,向网络输入测试样本集后误差为0.0104,比训练样本集误差稍大。由图4可看出,对于100组训练样本来说,计算输出和实际样本输出整体拟合的比较好,虽然中间有几组数据发生了大的波动,但算法及时调整权值,可以看到最后几组样本数据拟合的相对要好,说明误差最终收敛。由图5可看出,输入50组测试样本得到的计算输出和实际样本输出误差比训练样本集要大,说明所设计的网络泛化能力不是很好。经分析,一是由于训练样本太少,二是预测模型过于简单,收盘价格还和其他数据有关。结论本次作业采用BP网络建立对股票数据的预测模型,即利用前一天的相关数据来预测后一天的收盘价格。由于收盘价格跟很多数据有关,为了简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年西宁市城北区教育局面向社会公开招聘编外聘用人员考试参考题库附答案解析
- 2025年武汉市光谷第三十二小学教师招聘若干人笔试参考题库附答案解析
- 2025四川乐山高新区管委会招聘劳务派遣人员17人笔试模拟试题及答案解析
- 2025舟山岱山县岱东镇人民政府公开招聘编外人员1人考试模拟试题及答案解析
- 电子商务平台运营规则优化策略方案
- 四川省县域经济研究中心2025年公开考核招聘工作人员笔试备考试题及答案解析
- 工科专业毕业论文架构
- 2025福建漳州市国有资本运营集团有限公司权属企业福建金信商业保理有限公司选聘1人笔试参考题库附答案解析
- 毕业论文在里查重
- 电子系毕业论文结论
- 儿科川崎病课件
- 2025年书记员考试题库(附答案)
- 中成药合理使用培训课件
- 建筑材料绿色采购实施方案
- 学堂在线 劳动教育 章节测试答案
- 2025-2031年中国AI成人娃娃行业市场发展规模及投资机会研判报告
- 护士轮岗管理办法
- 记者证考试题库及答案
- 2025年林木种苗工考试林木种苗工(高级)试卷与答案
- 2025年振兴中学分班考试题及答案
- 肿瘤防治宣传科课件
评论
0/150
提交评论