版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
经济预测与决策技术及MATLAB实现第12章神经网络预测法
12.1神经网络基本理论12.2BP神经网络的MATLAB函数12.3案例分析12.3.1多指标的股票开盘价预测练习与提高(十二)
12.3.2单指标的股票收盘价预测
12.1神经网络基本理论12.1.1人工神经网络人工神经网络(ArtificialNeuralNetwork,ANN),是由大量处理单元(神经元Neurons)广泛互连而成的网络,由分布于若干层的节点组成。每个单节点都有自己的输入值、权重、求和与激活函数以及输出值,在处理之前,数据被分为训练数据集(TrainingDataset)和测试数据集(TestingDataset),然后将权重或输入,指派到第一层的每一个节点。每次重复时,系统处理输入,并与实际值相比较,得到度量后的误差,并反馈给系统,调整权重。大多数情形下,调整后的权重都能更好地预测实际值。当达到预定义的最小误差水平时,处理结束。12.1.2BP神经网络的基本原理BP(Back-PropagationNetwork)是一种多层网络的“逆推”学习算法。其基本思想是:
学习过程由信号的正向传播与误差的反向传播组成。
正向传播时,输入样本从输入层传入,经隐层逐层处理后传向输出层。若输出层的实际输出与期望输出不符,则转向误差的反向传播阶段。
误差的反向传播是将输出误差以某种形势通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
这种信号正向传播与误差反向传播的各层权值调整过程是周而复始地进行。权值不断调整的过程,也就是网络的学习训练过程。此过程一直进行到网络输出的误差减少到可以接受的程度,或进行到预订的设定的学习次数为止。12.1.3BP神经网络过程1.BP网络的结构BP网络是一种单向传播的多层前向网络,具有三层或三层以上的神经网络,包括输入层、中间层(隐层)和输入层。上下层之间实现全连接,每一层神经元之间无连接。输入层
隐层
输出层2.传递函数或激活函数一般输入层和隐层的传递函数是S形函数(logsig):正切S形函数(tansig)输出层的是线性函数,用purelin表示3.模拟过程首页网络通过对已知信息的反复学习训练,运用根据误差来逐步调整与改变神经元连接权重和神经元阈值的方法,使得相似的输入有相似的输出,从而达到处理信息、模拟输入输出关系的目的。(1)读入样本、设定初始权值和阈值;(2)设定参数;(3)计算隐含层输出;(4)计算输出层输出;(5)计算输出值与期望值的误差;(6)判断误差是否小于设定值,是则结束;(7)调整隐层到输出层的权值和阈值;(8)调整输入层到隐层的权值和阈值;(9)返回计算隐含层输出。4.学习过程首页(1)读入样本;(2)数据处理;(3)创建网络;(4)设定参数;(5)训练网络;(6)模拟输出;(7)调整参数:学习速率、动量系数、训练次数、误差精度等;(8)仿真预测:网络固定,输入新的样本集,模拟输出。12.1.4BP神经网络预测首页BP神经网络通过对以往历史数据的学习,找出数据的变化趋势之间的非线性关系,并将其存储在网络具体的权值和阀值中,从而预测未来数据的走势。用神经网络进行预测,即用神经网络通过一组数据点
来拟合函数f,得出未来
(k>1)时刻数据的预测值。1.单步预测首页当k=1时,且网络的所有输入数据都是时间序列的实际观测值时所做的预测就是单步预测。在进行预测时,把实际的时序观测值
,这m个数据输入网络,输出是下一时刻的预测值
若要继续对的值进行预测,则用实际观测值
作为输入数据,得到预测值
2.多步预测首页当k>l时,网络输入m个历史数据,输出
的预测值。多步预测用于股票价格预测误差较大。这是因为在网络运行调整权值和阀值时,每次迭代都要累加前一次k个预测值的误差,从而造成网络难以收敛的情况,甚至导致网络发生振荡。首页3.滚动预测滚动预测,又可称为迭代一步预测,是先进行单步预测,再将网络输出的预测值反馈给网络输入端作为输入的一部分,用于下一步的预测。若开始预测时输入数据是实际的时序观测值
输出是下一时刻的预测值
,将与
一起作为输入数据对
项进行估计,得到输出的预测值
如此反复迭代,就得到对未来一段时期的预测值。12.2BP神经网络的MATLAB函数1.数据的预处理和后处理数据的预处理和后处理是有效训练神经网络的关键步骤,直接影响到训练后神经网络的性能。常见的方法是将原始数据进行归一化处理,即通过一定的线性变换将输入和输出数据统一限制在[0,1]或[-1,1]区间内。利用premnmx或prestd函数可以对输入和目标数据集进行归一化处理,使其落入[-1,1]区间。首页格式:
[Pn,minp,maxp]=premnmx(P)[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)说明:premnmx函数用于对网络的输入数据或目标数据进行归一化,归一化后的数据将分布在[-1,1]区间内。归一化公式为:Pn=2*(P-minp)/(maxp-minp)-lTn=2*(T-mint)/(maxt-mint)-l其中,P为原始输入数据,maxp和minp分别是P中的最大值和最小值,Pn为归一化后的输入数据。T是原始目标数据,maxt和mint分别是T的最大值和最小值,Tn是归一化后的目标数据。格式:[P,T]=postmnmx(Pn,minp,maxp,Tn,mint,maxt)说明:Postmnmx函数可将premnmx函数所归一化数据进行反归一化处理P=0.5*(Pn+1)*(maxp-minp)+minpT=0.5*(Tn+1)*(maxt-mint)+mint
将输入数据或目标数据转化为区间[0,1]的归一化处理公式为:Pn=(P-minp)/(maxp-minp)Tn=(T-mint)/(maxt-mint)其对应的反归一化处理公式P=Pn*(maxp-minp)+minp
T=Tn*(maxt-mint)+mint2.创建网络(1)newff函数:用来建立一个前馈BP网络格式:net=newff(PR,SN,TF,BTF,BLF,PF);说明:PR:表示由每组输入(共P组)元素的最大值和最小值
组成的P×2维矩阵;或用函数minmax(P)表示;SN:表示网络隐含层和输出层神经元的个数;TF:表示网络隐含层和输出层的传递函数,tansig(默认),logsig,purelin;BTF:表示网络的训练函数。普通训练traingdm:需设定
学习速率、动量系数,快速训练trainlm(默认):BLF:表示网络权值学习函数,learngdf(默认);PF:表示网络性能函数,mse(默认),网络输出和目标输出的均方误差。3.设定参数net=init(net);初始化网络权值和阈值(可不设定)net.trainparam.show=训练状态的显示幅度;(默认25)net.trainparam.lr=学习速率;(权值阈值的调整幅度)net.trainparam.mc=动量系数;(权阈值改变的重复度)net.trainparam.epochs=训练次数;(默认100)net.trainparam.goal=误差精度;(默认0)net.trainparam.time=训练秒数;(可不选)(4.训练网络:格式:[net,tr]=train(net,P,T)说明:P为输入样本矢量集;T为对应的目标样本矢量集:等号左右两侧的net分别用于表示训练得到和训练以前的神经网络对象;tr存储训练过程中的步数信息和误差信息,并给出网络误差实时变化曲线。5.BP神经网络的仿真格式:[Y,Pf,Af,E,perf]=sim(net,P,Pi,Ai,T)说明:输入net为神经网络对象,P为网络输入,Pi为输入延迟的初始状态,Ai为层延迟的初始状态,T为目标矢量,Y为网络输出,Pf为训练终止时的输入延迟状态,Af为训练终止时的层延迟状态,E为输出和目标矢量之间的误差,perf为网络性能值。首页6.模拟输出图形输出:plot(横坐标,纵坐标,‘参数’)查看参数:权值:net.IW(层序号)阈值:net.b(层序号)12.3案例分析12.3.1多指标的股票开盘价预测【例12-1】2021年12月1日至2022年1月26日中国建设银行股票的开盘价、最高价、最低价和收盘价数据如表所示,试用BP神经网络对股票开盘价进行仿真预测。日期开盘价最高价最低价收盘价日期开盘价最高价最低价收盘价2021-12-015.755.795.745.792021-12-295.895.915.865.872021-12-025.775.815.765.82021-12-305.875.885.855.872021-12-035.85.825.765.812021-12-315.865.875.845.862021-12-065.815.875.85.852022-01-045.855.925.855.912021-12-075.895.915.855.892022-01-055.916.045.96.032021-12-085.895.95.855.872022-01-0666.0966.052021-12-095.885.945.855.912022-01-076.066.156.016.142021-12-105.885.95.845.882022-01-106.136.186.086.122021-12-135.885.925.875.882022-01-116.116.176.096.142021-12-145.875.885.825.832022-01-126.146.146.036.082021-12-155.815.845.815.832022-01-136.086.166.066.112021-12-165.825.845.815.842022-01-146.096.125.986.022021-12-175.825.855.825.832022-01-1766.055.965.982021-12-205.825.835.815.832022-01-185.986.075.966.072021-12-215.815.915.85.872022-01-196.046.086.036.052021-12-225.885.95.865.882022-01-206.056.156.046.132021-12-235.895.95.855.892022-01-216.116.126.056.072021-12-245.885.915.865.912022-01-246.086.116.026.082021-12-275.895.95.875.872022-01-256.066.07662021-12-285.885.925.875.912022-01-265.996.065.986.04选用三层结构BP网络:输入层、隐层和输出层。隐层节点和输出节点的个数分别取5和1。以2021年12月1日的开盘价、最高价、最低价和收盘价作为网络的第一个输入数据,第二日开盘价作为目标变量第一个输出数据;X=[5.75 5.79 5.74 5.795.77 5.81 5.76 5.85.8 5.82 5.76 5.815.815.87 5.8 5.85……%数据太多,在此省略6.116.12 6.05 6.076.08 6.11 6.02 6.086.06 6.07 6 65.99 6.06 5.98 6.04];[m,n]=size(X);%40行、4列ts=X(2:m,1);%第一列开盘价数据作为输出目标,从第二行开始取,直到最后一行tsx=X(1:m-1,:);%全部四列数据都做为输入变量,从第一行开始,最后一行不取%数据预处理TS=ts';%将列转成行,神经网络要求按行输入数据TSX=tsx';[Pn1,minp1,maxp1]=premnmx(TS)%对TS归一化[Pn2,minp2,maxp2]=premnmx(TSX)%对TSX归一化rand('state',0);%保证每次仿真结果都相同PR=[-1,1;-1,1;-1,1;-1,1];%与四个输入指标个数对应%创建网络,设定参数net=newff(PR,[5,1],{'tansig','purelin'},'traingdx','learngdm','mse')net.trainparam.show=50;net.trainparam.lr=0.1;net.trainparam.mc=0.9;net.trainparam.epochs=15000;net.trainparam.goal=0.0001;net=init(net);%训练网络net=train(net,Pn2(:,1:35),Pn1(1:35));%选取训练样本1-35个
%仿真预测test=Pn2(:,31:end);%测试样本9个(包含训练用过的5个)Y=sim(net,test)%Pn1的预测值%反归一化处理P=postmnmx(Y,minp1,maxp1)%原始数据X的第一列开盘价的预测值%误差大小e=(X(32:m,1)-P)./X(32:m,1)%相对误差res=norm(e)%显示相对误差的整个网络误差%画出每日开盘价预测图figure(1)t=32:m;plot(t',X(32:m,1),'-+',t,P,'o')xlabel('交易日/天数')ylabel('开盘价')【例12-2】(续【12-1】)试用BP神经网络对平安银行股票数据中的收盘价进行仿真预测。
12.3.2单指标的股票收盘价预测由于神经网络系统需要多个输入变量,而现在只有单一指标,即输入层只有一个神经元节点,这就需要构造多个节点的神经元。股票预测的分析周期我们选取5日,即用5天的历史交易收盘价数据作为预测依据。依次将顺序五天的数据作为网络的一个输入数据,其后一天的数据作为网络输出即目标数据,按此方式进行滚动式的排列,形成神经网络的训练样本。在具体操作时,神经网络的输入向量的5个分量,可以通过将整个收盘价数据延迟1到5步得到。%收盘价数据xx=[5.795.85.815.855.895.875.915.885.885.83...5.835.845.835.835.875.885.895.915.875.91...5.875.875.865.916.036.056.146.126.146.08...6.116.025.986.076.056.136.076.0866.04];%归一化处理[T,minp,maxp]=premnmx(x)%产生5个分量的输入向量k=length(T);P=zeros(5,k);P(1,2:k)=T(1:k-1);P(2,3:k)=T(1:k-2);P(3,4:k)=T(1:k-3);P(4,5:k)=T(1:k-4);P(5,6:k)=T(1:k-5);%查找最优的神经元个数:选取x的前32个样本,因滞后5天,实际使用T(6:32)样本[m,n]=size(P);%m视作输入指标的个数,n与原始数据x的个数相同s=m:3*m;%取神经元个数范围在m到3m之间fori=1:length(s)rand('state',0);%保证每次结果都相同net=newff(minmax(P),[s(i),1],{'tansig','purelin'})net.trainparam.show=50;net.trainparam.lr=0.1;net.trainparam.mc=0.9;net.trainparam.epochs=1000;net.trainparam.goal=0.0001;net=init(net);net=train(net,P(:,6:32),T(6:32));%因滞后5天,从第6个数据开始Y=sim(net,P(:,6:32));e=T(6:32)-Y;E(i)=norm(e);endE%整个网络误差b=find(E==min(E));%误差最小的位置c=b+m-1%找到的神经元个数运行结果:E=0.05150.05100.04270.04090.00600.02970.04980.00160.03790.03900.0480c=12从整个网络训练误差来看0.0016最小,选取的最佳神经元个数为12%利用求得的神经元个数进行仿真预测%使用神经网络单步预测法预测,并从T(33)开始,到样本T(n)结束X1=[];forr=8:-1:1rand('state',0);%保证每次结果都相同net=newff(m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 许昌单招过往年份试题及答案分享
- 混合二甲苯知识测试题及答案
- 游戏科举试题及对应答案整合
- 2026年公卫执业医师职业卫生与职业医学模拟题及答案
- 2026年防止返贫监测帮扶业务考试试卷试题及答案
- 2026年项目进度计划管控专员理论知识题库含答案
- 2026年污水处理自动化系统维护知识竞赛试题及答案
- 2026年统计师考试题库(初级、中级、高级)
- 2026年事业单位B类社会科学专技岗题库
- 2026年老子哲学思想与人生智慧测试
- 领养送养合同协议书
- 保安员考试题库500道(含答案)
- 男式短袜市场需求与消费特点分析
- JGJ/T235-2011建筑外墙防水工程技术规程
- 环境法全套课件
- 高一新生摸排表
- 安康学院辅导员考试题库
- 语言发育迟缓的诊治学习培训课件
- 福建幼儿园保育教育活动常规
- 高中化学人教版(2019)必修第一册全套教案
- GB/T 13908-2002固体矿产地质勘查规范总则
评论
0/150
提交评论