[摘要]12.1.4 BP神经网络预测 首页 BP神经网络通过对以往历史数据的学习,找出数据的变化趋势之间的非线性关系,并将其存储在网络具体的权值和阀值中,从而预测未来数据的走势。
用神经网络进行预测,即用神经网络通过一组数据点 来拟合函数f,得出未来 (k>1)时刻数据的预测值。
1.单步预测 首页 当k=1时,且网络的所有输入数据都是时间序列的实际观测值时所做的预测就是单步预测。
在进行预测时,把实际的时序观测值 ,这m个数据输入网络,输出是下一时刻的预测值 若要继续对 的值进行预测,则用实际观测值 作为输入数据,得到预测值 2.多步预测 首页 当k>l时,网络输入m个历史数据,输出 的预测值。
多步预测用于股票价格预测误差较大。
这是因为在网络运行调整权值和阀值时,每次迭代都要累加前一次k个预测值的误差,从而造成网络难以收敛的情况,甚至导致网络发生振荡。
首页 3.滚动预测 滚动预测,又可称为迭代一步预测,是先进行单步预测,再将网络输出的预测值反馈给网络输入端作为输入的一部分,用于下一步的预测。
若开始预测时输入数据是实际的时序观测值 输出是下一时刻的预测值 , 将 与 一起作为输入数据对 项进行估计,得到输出的预测值 如此反复迭代,就得到对未来一段时期的预测值。
12.2 BP神经网络的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)-l Tn=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)+minp T=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)+ mint 2.创建网络 (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.trai