基于BP神经网络的CPI预测研究

时间:2022-09-30 11:40:18

基于BP神经网络的CPI预测研究

[摘要]CPI(居民消费价格指数)是反映一定时期内城乡居民所购买的生活消费品价格和服务项目价格变动趋势和程度的相对数。本文将BP神经网络模型引入到CPI预测领域,针对2002年1月至2007年9月国家统计局数据,通过Clementine建立CPI预测的神经网络模型。计算结果表明,BP神经网络模型应用于CPI预测具有较高的精度和良好的泛化能力。

[关键词]数据挖掘 BP神经网络 CPI预测

一、引言

目前,随着居民收入的快速增长,中国居民消费能力不断升级,尤其是近期我国居民消费价格总水平出现了明显上涨,其中粮食、猪肉等食品价格屡创新高。对于相关部门来说,应努力做到关注国际形势的同时,根据市场价格的变化情况进行科学分析,最终制定合理的综合性措施。应用现代技术对CPI进行预测在当前来说是很有意义的,国内很多专家学者在这方面都做了研究。以往学者对CPI的预测更多的是运用计量经济学方法,而通过数据挖掘方法进行CPI预测的研究不多,值得我们进一步探讨。

BP神经网络是一种应用最广泛的人工神经预测网络,它独有的容错性和泛化能力能较好地进行预测。本文选用SPSS公司的Clementine来进行BP网络模型的实现,Clementine中的工具箱使BP网络的建立、训练以及预测都变得非常简单,而且训练过程及效果非常直观,使神经网络应用于实际具有更大的可行性。

二、BP神经网络概述

BP网络是在1974年由Worbos提出,1986年Rumelhart和McCelland等人对具有非线性连续转移函数的多层前馈网络的误差反向传播(Error Back Proragation)算法进行了详尽的分析,实现了Minsky关于多层前馈网络的设想。

BP算法基本思想:学习过程由信号的正向传播与误差的逆向传播两个过程组成,正向传播时,模式作用于输入层,经隐层处理后,传向输出层。若输出层未能得到期望的输出,则转入误差的逆向传播阶段,将输出误差按某种形式通过隐层向输入层逐层返回,并分摊给各层的所有单元,从而获得各层单元的误差信号,以作为修改各单元权值的依据,这种信号正向传播与误差逆向传播的各层权矩阵的修改过程是周而复始地进行的。权值不断修改的过程,也就是网络的学习过程。此过程一直进行到网络输出的误差逐渐减少到可接受的程度或达到设定的学习次数为止。BP神经网络在进行设计时,主要考虑以下因素。

1.网络层数。一般BP网络由一个输入层,一个输出层,及若干隐含层构成。实际应用中,通常利用一个隐含层就基本上能满足大部分应用问题的需求,因为两层的神经网络可以逼近任何非线性函数。而盲目地增加隐含层层数,往往会使学习速度变慢,同时增加了结构的复杂性。

2.输入层节点数。输入层节点数由影响输出变量的变量个数来决定,一般来说有几个变量对输出变量的结果有影响就选择几个输入层节点。输入网络的节点过少,会使得网络不能很好地获得输入与输出数据的非线性关系,如果过多,就会增加过度适应的危险和增大了训练集的大小。

3.输出层节点数。输出层节点数取决于输出数据类型和表示该类型所需的具体数据。

4.隐层节点数。一个具有无限隐层节点的两层BP网络可以逼近任何非线性函数,但对于输入与输出均为有限个的网络,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,使得至今为止,尚未找到一个很好的解析式,隐层节点数往往根据前人设计所得的经验和自己进行试验来确定,也可从1、2、3开始。一般认为,隐层节点数与数据、寻找的模式以及网络的类型都有直接的关系。另外,隐层节点数太多会导致学习时间过长;而隐层节点数太少,容错性差,识别未经学习的样本能力低,所以必须综合多方面的因素进行设计。

隐层节点数的初始值可由(1)式来确定:

式中:m、n分别为输入层结点数与输出层结点数,l为隐层节点数。

5.传递函数。BP神经网络中的传递函数通常采用S(sigmoid)型函数,即

上式中x为前面组合函数的结果,一般取进入单元的输入加权和。

三、BP网络在CPI预测中的应用实例

我国的CPI由食品、烟酒及用品、衣着、家庭设备用品及服务、医疗保健及个人用品、交通和通信、娱乐教育文化用品及服务、居住等类构成。CPI具有较强的非线性特性,要对其进行较为准确的预测,就应该采用能捕捉非线性变化规律的方法。笔者将BP神经网络引入到CPI预测中来,用历史数据预测未来CPI相对增长率,弥补传统预测方法的不足。显然,CPI相对增长率与类别各自的增长率有关,在本文中正是从这类别对CPI的影响来进行模型的构建。

1.数据读取

本实例选取国家统计局的统计数据进行研究,同时采用Access作为数据库平台,前八个字段为当月CPI构成的类别指数,第九个字段为下月CPI,取部分记录显示,见表1:

表1 居民消费价格指数表

2.数据预处理

数据预处理对于数据挖掘是一个重要的问题,因为现实中的数据多半是不完整的、有噪声的和不一致的。数据预处理包括数据清理、数据集成、数据变换和数据归约。数据清理可以去掉数据中的脏数据,纠正不一致,包括空值处理、规范化数据格式、拆分数据等。数据集成将数据由多个源合并成一致的数据存储。数据归约可以通过聚集、删除冗余特性或聚类等方法来压缩数据。本文中数据预处理主要是对各输入指标进行归一化处理,以便进行BP神经网络模型构建。即将数值限定在[0,1]区间内,归一化公式为:

该步骤在Clementine中通过Field Ops部分的Derive组件实现。

3.模型构建及应用分析

本研究采用只含一隐层的BP网络,选取输入层节点数为8(分别为某个月的8个类别各自的相对增长率);输出层节点数为1(为下个月的居民消费价格指数的相对增长率),同时根据前述经验公式,选取隐层节点数为3,而传递函数则选取默认的S型函数。在本模型中,还需设置以下参数,动量因子0.8,初始学习速率0.4,最大训练步数300。以上参数的选取以及模型的构建均在Clementine中实现,流程如图1所示。

在本模型中,随机抽取数据的70%作为训练样本,30%作为验证样本,来进行神经网络模型的训练,训练过程见图2。

图1 模型流程图

图2 模型训练过程

从图2中可以看到该模型的准确度较高,误差在允许的范围内波动,故将该模型应用于CPI预测是切实可行的。紧接着,将上文构建出的神经网络模型应用于2007年10月CPI预测中,因前半部分流程同图1,故从居民消费指数节点开始截取,流程如图3所示。

图3 预测过程

表2 2007年10月CPI预测结果

通过模型应用,预测结果如表2所示。从表2的$N-下月居民消费价格指数归一值字段中可以看到,2007年10月,居民消费价格指数归一值为0.968,通过公式(3)逆推算出当月CPI原值为106.25。该值在一定程度上反应了近期宏观政策制定的效果,从近期政策面及各方面反应来看,该预测结果基本符合该月的真实情况。总的来说,该模型的性能比较良好,可以达到对CPI进行预测的目的。

四、结论

通过上文我们能够看到,BP神经网络在CPI预测中具有较高的精度,在已知上月类别指数的情况下,通过该模型能够很快地计算出较准确的当月CPI指数,这能够给相关部门进行综合性措施的制定提供较大的帮助,同时能够提供较为科学的依据。本文初步尝试采用CPI近几年数据建立BP神经网络模型,旨在提出一种进行CPI预测的新思路。但由于CPI指数近几年来才按现行的标准进行统计,数据量有限,加上政策的制定对CPI的直接影响,所以在应用该模型进行预测时可能会出现一些大的误差,但总体来说,该模型已基本能够对CPI进行预测。当然,在应用该模型时,应随着新数据的进一步加入调整模型的各项参数,以使模型训练及预测能够达到最理想的效果。

参考文献:

[1]黄章树,王前辉.基于数据挖掘的电信增值业务营销策略研究[J].福州大学学报(社科版),2005,(4).

[2]黄章树,王凤英.基于决策树技术的福州市居民出行特征分析[J].重庆工商大学学报(自然科学版),2007,(3).

[3]张代远.神经网络新理论与方法[M].北京:清华大学出版社,2006.

(作者单位:福建福州大学管理学院)

上一篇:浅议我国主题公园发展现状 下一篇:关于样板戏“热”的几点思考