论文部分内容阅读
摘要: BP神经网络已成为研究相关预测的有效工具之一。该文利用近20年全国旅行收入数据,通过BP神经网络相关理论建立了全国旅行收入预测模型。并针对2006—2015年数据进行预测,误差分析表明相对误差很小。模型能很好地反映全国旅行收入的变化趋势。
关键词: BP神经网络;预测模型;全国旅行收入
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2017)03-0184-03
1 BP 神经网络模型
BP神经网络为误差反向传播神经网络,它是一种含有隐含层的前馈网络,若网络的输入节点数为M、输出节点数为L,那么可将这个神经网络视为一个M 维欧式空间到L 维欧式空间的映射[1-4]。 其采用误差逆传算法,BP 神经网络通常由输入层、输出层和隐含层构成,层与层之间的神经元采用全互联的连接方式,通过相应的网络权系数w 相互联系,每层内的神经元之间不连接,见图1 所示。
BP算法建模步骤[2]:
设有m 个训练样本,每一个训练样本有n个指标,则初始數据矩阵为
[][Z=zijm×n]
其中: [ziji=1,2,…,m,j=1,2,…n]表示第i 个训练样本的第j 个指标的数值。
步骤1 预处理:对输入数据进行归一化处理,消除各个指标之间的不同量纲,利用
[xij=-1 2zij-mjzij-Mji=1,2,…,m,j=1,2,…n]
进行归一化处理。其中[xij∈-1,1]为处理后方的数据,且
[mj=mini=1mzij,Mj=mini=1mzij,j=1,2,…n]
分别表示第[jj=1,2,…n]个指标值的最小值和最大值。
步骤2 计算输出层及隐含层
隐含层计算为:
[uj=fi=1nw1(i,j)xij=1,2,…k]
[w1i,j]为输入层第i (i=1,…,n)个神经元到隐含层第j (j=1,…,m) 个神经元连接权重。通常取激活函数[f(x)=11 e-x]。
输出层计算为:
[y=fj=1kw2(j)uj]
[w2j]为隐含层第j (j=1,…,k)个神经元到输出层的连接权重。
步骤3 网络训练
记wij为从输入向量的第j (j=1,…,m) 个分量到输出向量的第i (i=1,…,n)个分量的连接权重。通常理论值与实际值有一误差,网络学习则是指不断地把与比较,并根据极小原则修改参数wij,使误差平方和达最小。
1) 计算网络误差
若网络输出与期望输出不等,则存在输出误差
[Ep=12k(dpk-ypk)2]。
2)从输出层开始修正每个权值,直到第一隐层。
[wt 12(j)=wt2(j) ηδjuj αwt 12(j)-wt2(j).],
[wt 11(i,j)=wt1(i,j) ηδjxi αwt 11(i,j)-wt1(i,j).]。
若j是输出层神经元,[δj=uj(1-uj)(dj-uj)]。若j是隐层神经元,则:[δj=xj(1-xj)kδkwjk]。其中 [η,α∈0,1]分别为学习率和平滑因子。
步骤4 转到第二步,循环至权值稳定为止。
步骤5 用网络进行预测,求出误差并进行误差分析。
2 BP神经网络运用案例:国内旅游收入预测模型
1)输入神经元选取及数据来源
影响国内旅游收入因素比较多,本文选取以下重要指标作为模型的输入神经元:城镇居民家庭人均可支配收入([z1])、 农村居民家庭人均纯收入([z2]) 、国民总收入([z3])、 国内游客([z4]) 、铁路营业里程([z5]) 、公路里程([z6])、定期航班航线里程([z7]),输出神经元为国内旅游总收入([y])。本文选取1995—2015年相关数据,数据见表1。 数据来源于《中国统计年
2)将表1样本数据进行归一化处理
由步骤1的方法,利用matlab中的函数[X,minX,maxX,Y,minY,maxY]=premnmx(X,Y),将表1的数据进行归一化处理。
3)输出层、输出层、隐含层的选取
以城镇居民家庭人均可支配收入([z1])、 农村居民家庭人均纯收入([z2])等七个元作为输入层,以国内旅游总收入([y])作为输出层。BP神经网络建立需提供输入值与期望输出值以及各层节点数、传递函数、训练方法等网络结构参数。现有理论已证明对于任意闭区间上的任何连续函数都可以用一个隐含层的BP 神经网络来逼近【5】,因此本文隐含层数选为1个,即网络层数共3 层,分别为1 个输入层、1 个隐含层、1 个输出层,网络初始结构为7 - 11 - 1,并根据训练结果确定隐含层节点数量,测试最终隐含层节点数量为7。即最终网络结构为7 - 7 - 1。
4)网络训练
该BP神经网络模型输入层至隐含层采用tansig函数传递,隐含层至输出层采用purelin 函数传递,训练BP 神经网络用traingd,其收敛速度快于trainbp 及trainpx,网络目标误差net.trainparam.goal 为0.00001; 其中学习速度net.trainparam.lr 最终为0. 6。 训练步数net.trainparam.epochs为20000,性能函数为mse。
5)BP神经网络模型预测及误差分析 利用matlab函数an=sim(net,pnn) 对训练好的模型进行仿真,调用函数
a=postmnmx(an,minY,maxY)
對网络的输出an=sim(net,pn)作变换。并作相对误差
[er=yi-yiyi.]
2006—2015年数据如表2。
表2 BP神经网络模型预测及误差分析
[年份\
关键词: BP神经网络;预测模型;全国旅行收入
中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2017)03-0184-03
1 BP 神经网络模型
BP神经网络为误差反向传播神经网络,它是一种含有隐含层的前馈网络,若网络的输入节点数为M、输出节点数为L,那么可将这个神经网络视为一个M 维欧式空间到L 维欧式空间的映射[1-4]。 其采用误差逆传算法,BP 神经网络通常由输入层、输出层和隐含层构成,层与层之间的神经元采用全互联的连接方式,通过相应的网络权系数w 相互联系,每层内的神经元之间不连接,见图1 所示。
BP算法建模步骤[2]:
设有m 个训练样本,每一个训练样本有n个指标,则初始數据矩阵为
[][Z=zijm×n]
其中: [ziji=1,2,…,m,j=1,2,…n]表示第i 个训练样本的第j 个指标的数值。
步骤1 预处理:对输入数据进行归一化处理,消除各个指标之间的不同量纲,利用
[xij=-1 2zij-mjzij-Mji=1,2,…,m,j=1,2,…n]
进行归一化处理。其中[xij∈-1,1]为处理后方的数据,且
[mj=mini=1mzij,Mj=mini=1mzij,j=1,2,…n]
分别表示第[jj=1,2,…n]个指标值的最小值和最大值。
步骤2 计算输出层及隐含层
隐含层计算为:
[uj=fi=1nw1(i,j)xij=1,2,…k]
[w1i,j]为输入层第i (i=1,…,n)个神经元到隐含层第j (j=1,…,m) 个神经元连接权重。通常取激活函数[f(x)=11 e-x]。
输出层计算为:
[y=fj=1kw2(j)uj]
[w2j]为隐含层第j (j=1,…,k)个神经元到输出层的连接权重。
步骤3 网络训练
记wij为从输入向量的第j (j=1,…,m) 个分量到输出向量的第i (i=1,…,n)个分量的连接权重。通常理论值与实际值有一误差,网络学习则是指不断地把与比较,并根据极小原则修改参数wij,使误差平方和达最小。
1) 计算网络误差
若网络输出与期望输出不等,则存在输出误差
[Ep=12k(dpk-ypk)2]。
2)从输出层开始修正每个权值,直到第一隐层。
[wt 12(j)=wt2(j) ηδjuj αwt 12(j)-wt2(j).],
[wt 11(i,j)=wt1(i,j) ηδjxi αwt 11(i,j)-wt1(i,j).]。
若j是输出层神经元,[δj=uj(1-uj)(dj-uj)]。若j是隐层神经元,则:[δj=xj(1-xj)kδkwjk]。其中 [η,α∈0,1]分别为学习率和平滑因子。
步骤4 转到第二步,循环至权值稳定为止。
步骤5 用网络进行预测,求出误差并进行误差分析。
2 BP神经网络运用案例:国内旅游收入预测模型
1)输入神经元选取及数据来源
影响国内旅游收入因素比较多,本文选取以下重要指标作为模型的输入神经元:城镇居民家庭人均可支配收入([z1])、 农村居民家庭人均纯收入([z2]) 、国民总收入([z3])、 国内游客([z4]) 、铁路营业里程([z5]) 、公路里程([z6])、定期航班航线里程([z7]),输出神经元为国内旅游总收入([y])。本文选取1995—2015年相关数据,数据见表1。 数据来源于《中国统计年
2)将表1样本数据进行归一化处理
由步骤1的方法,利用matlab中的函数[X,minX,maxX,Y,minY,maxY]=premnmx(X,Y),将表1的数据进行归一化处理。
3)输出层、输出层、隐含层的选取
以城镇居民家庭人均可支配收入([z1])、 农村居民家庭人均纯收入([z2])等七个元作为输入层,以国内旅游总收入([y])作为输出层。BP神经网络建立需提供输入值与期望输出值以及各层节点数、传递函数、训练方法等网络结构参数。现有理论已证明对于任意闭区间上的任何连续函数都可以用一个隐含层的BP 神经网络来逼近【5】,因此本文隐含层数选为1个,即网络层数共3 层,分别为1 个输入层、1 个隐含层、1 个输出层,网络初始结构为7 - 11 - 1,并根据训练结果确定隐含层节点数量,测试最终隐含层节点数量为7。即最终网络结构为7 - 7 - 1。
4)网络训练
该BP神经网络模型输入层至隐含层采用tansig函数传递,隐含层至输出层采用purelin 函数传递,训练BP 神经网络用traingd,其收敛速度快于trainbp 及trainpx,网络目标误差net.trainparam.goal 为0.00001; 其中学习速度net.trainparam.lr 最终为0. 6。 训练步数net.trainparam.epochs为20000,性能函数为mse。
5)BP神经网络模型预测及误差分析 利用matlab函数an=sim(net,pnn) 对训练好的模型进行仿真,调用函数
a=postmnmx(an,minY,maxY)
對网络的输出an=sim(net,pn)作变换。并作相对误差
[er=yi-yiyi.]
2006—2015年数据如表2。
表2 BP神经网络模型预测及误差分析
[年份\