改进遗传神经网络算法在销售预测中的应用研究
邰丽君1, 胡如夫1, 赵韩2, 陈曹维1
1.宁波工程学院机械工程学院 宁波 315000
2.合肥工业大学机械与汽车工程学院 合肥 230009
摘要

针对传统BP神经网络销售预测算法存在学习效率低、收敛速度慢、易陷于局部极小值等不足,提出改进措施:采用自适应学习效率提高算法的有效性和收敛性,采用附加动量法提高算法的适应性,采用改进的遗传算法优化神经网络的权值,利用改进遗传算法全局寻优的特性实现快速寻优及精确预测的目的。最后用实例计算验证本算法。

关键词: BP算法; 遗传算法; 销售预测
Application Research of Improved Genetic Neural Network Algorithm in Sales Forecast
Tai Lijun1, Hu Rufu1, Zhao Han2, Chen Caowei1
1.School of Mechanical Engineering, Ningbo University of Technology, Ningbo 315000, China
2.School of Mechanical and Automotive Engineering, Hefei University of Technology, Hefei 230009, China
Abstract

According to the insufficiency existed in traditional BP algorithm for sales forecast such as low learn rate,low convergence and falling into local optimization, etc,the improvement measures are proposed. The effectiveness and the convergence of the algorithm are improved by self-adapted learning rate, the adaptability is improved by the additive momentum, and the weight of neural network is optimized by modified genetic algorithm. The large-scale search optimum ability of modified genetic algorithm is used to implement the purpose of fast search optimum and accurate prediction. Finally, an example verifies this algorithm.

Keyword: BP algorithm; Genetic algorithm; Sales forecast
1 引 言

神经网络被广泛应用于智能控制、系统优化、模式识别、销售预测等各个领域。其中BP神经网络算法是应用最广泛的神经网络算法,BP神经网络的学习算法采用的误差反向传播算法[ 1]是一种有监督的学习过程。 BP神经网络能学习和存贮大量的输入-输出模式映射关系,而无需提前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播不断调整网络的权值和阈值,使网络的误差平方和最小,具有较强的自学习和并行处理能力,以及一定的推广、概括和自适应能力。

BP神经网络虽然具有很多优点,但是由于BP神经网络的实质是求解误差函数的最小值问题,它采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权值,通常存在一些缺陷[ 2]:学习效率低,收敛速度慢;易陷于局部极小值;网络泛化及适应能力较差。

遗传算法(Genetic Algorithm, GA)具有如下特点:在搜索空间拥有广泛的快速搜索能力,作为一种全局优化搜索算法能够避开局部极小点,在进化过程中也无需提供所要解决问题的梯度信息,不依靠任何搜索空间的外部知识而仅用适应度函数来指导和优化搜索。

基于上述两种算法各自具有的特点,把二者结合起来,采用遗传神经网络算法进行预测模型的构建,利用GA算法进行全局搜索,注重搜索未知区域,处理速度快而对精度要求不高,不易陷入局部极小点,而利用BP神经网络算法搜索有最优点的区域,提高搜索速度和精度。

但由于GA算法存在早熟收敛问题,BP神经网络算法存在收敛速度慢、易陷入局部极小点等缺点,因此需要对遗传神经网络算法进行改进,克服以上问题。目前采用改进遗传神经网络算法进行预测的研究很多,文献[3]采用二进制与实数混合编码的方式对使用遗传算法的BP神经网络的隐层节点数目、权值和阈值进行优化。文献[4]提出改进自适应交叉和变异算子的遗传 BP 算法,多元逐步回归简化 BP 神经网络的输入变量。文献[5]针对GA算法早熟的缺陷,提出了改进的交叉、变异策略,采用移民算子等方法改善GA算法的性能。文献[6]采用改进的GA算法调整神经网络结构和参数,隐藏的节点的数目可手动改变,从小数目开始逐渐增加,直到达到足够好的学习性能;对太阳黑子的预测实例表明改进遗传神经网络算法的优点。文献[7]采用基于基因突变的遗传神经网络(MGNN)取代传统的BP神经网络,基因突变策略可以更好地适应进化程序,有效地优化权重。此外,MGNN的EP-based编码方案可以灵活地制定适应度函数,使得适应度的计算快速、高效。

影响GA成功应用的因素主要有两个:染色体编码方式和遗传算子。上述方法只是针对其中一方面进行改进,不能对遗传算法进行彻底的改造,同时没有考虑解决BP神经网络算法存在的问题。

本文充分考虑GA算法和BP神经网络算法存在的问题,提出改进措施,构建适合客户销售数据变化规律的销售预测模型,并通过实例验证该算法的有效性。

2 改进遗传神经网络销售预测算法

选用BP神经网络进行销售预测,针对BP神经网络算法存在的缺陷,通过改进措施来提高它的收敛速度、克服局部极值现象,提出的改进措施如下:

2.1 采用自适应学习效率

BP神经网络算法的有效性和收敛性,在很大程度上取决于η值。η的最优值与具体问题有关,没有对任何问题都适合的η值。即使对某一特定问题,也很难找到一个自始至终都合适的η值。训练开始时较合适的η值,后来却不一定合适。现在已有不少改进学习率的措施,其中效果较明显的Delta-Bar-Delta学习规则。修正公式[ 8]为:

Δwji(n)=-ηji(n)fj(n)gi(n) (1)

ηji(n+1)=ηji(n)+Δηji(n+1) (2)

自适应学习效率ηji的修正公式[ 8]为:

Δηji(n+1)= (3)

其中,Dji(n)= ;

Sji(n)=(1-ζ)Dji(n-1)+ζSji(n-1) (4)

n、β、ζ为正的常数。

Delta-Bar-Delta学习规则只取偏导数的符号,而不考虑偏导数的幅值。在连续两次迭代中,若Dji(n)与Sji(n-1)的符号相同,则对应的学习速率增加一个常数n;若Dji(n)与Sji(n-1)的符号相反,则对应的学习速率按现行值的β倍减少;其他情况学习速率不变。这种算法称为弹性BP算法,是基于梯度下降法的改进BP算法中效果相当明显的一种方法[ 8]

2.2 附加动量法

用BP神经网络算法训练网络时,η越大,权重改变越大,但是,如果权重改变过大,学习过程中会出现振荡。为了避免这一现象,可采用附加动量项的方法,其具体做法是:将上一次权值调整量的一部分迭加到按本次误差计算所得的权值调整量上,以作为本次的实际权值调整量[ 8],即:

Δwji(n)=θΔwji(n-1)+ηfj(n)gi(n), 0<α<1 (5)

其中,θΔwji(n-1)为动量项,ηfj(n)gi(n)是仅用BP神经网络算法的修正量。附加动量项的引入可使网络权值的变化不仅反映局部的梯度信息,而且反映误差曲面附近的变化趋势。

2.3 利用GA算法优化BP神经网络权值

GA算法是一种全局优化算法,BP神经网络的训练问题实际上也是一种优化问题,即寻找最优的连接权值,使神经网络的输出与目标输出之差极小。故可采用遗传算法来训练BP神经网络的连接权值。

(1)BP神经网络权值的优化

采用GA算法进行神经网络权值的优化,其基本原理是固定网络结构,利用GA算法训练网络权重[ 9, 10]。步骤如下:

①选定网络结构和学习规则。随机产生一组权重值,利用某种编码方案对每个权重进行编码。一个基因串代表网络的一种权重分布状态,一组串则代表一组不同权重值的神经网络。

②计算每个对应基因串下神经网络的误差函数,从而给出遗传算法所需的适应度函数,误差愈小适应度值愈高。

③选择若干适应度函数值最大的个体作为父体。

④利用交叉、变异等遗传操作算子对当前一代群体进行处理,产生出新一代群体。

⑤重复步骤②-④,使权重分布不断变化,直到达到训练目标为止。

(2)GA算法的改进

由于GA算法是一种随机性很强的全局搜索优化算法,能否收敛到全局最优解(或满意解)与编码结构、适应度函数以及遗传策略(包括种群规模,选择、交叉、变异方法,交叉概率、变异概率等控制参数)等有很大关系。GA算法的基本参数选择不当将会带来遗传算法的欺骗问题,即早熟问题和进化缓慢问题[ 11]。因此,在上述定义的标准GA算法的基础上,通过深入的研究和试验,对算法进行了改进,使算法在性能与应用上都取得了进展。

①编码方案

本文采用实数编码方案,与传统的二进制编码方案相比,最优解是由神经网络的全部权重直接罗列而成,从而省略了二进制与实数之间的编码解码过程,提高了求解的精度和神经网络学习的速度。

网络各层单元之间的连接权值、隐层单元阈值以及输出层单元阈值构成编码的码链。对应于神经网络中某一确定连线上的权值或阈值,将其依次排列构成码链,每个码链代表网络的一种权重或阈值分布状态,一组码链则代表一组不同权重值的神经网络。

②适应度函数

BP神经网络的一个重要性能指标是网络的实际输出与期望输出之间的误差平方和E, E越小表示网络的性能越好。

E= (ukn-vkn)2 (6)

其中,ukn表示k个学习样本第n个输出节点的期望输出;vkn表示k个学习样本第n个输出节点的实际输出。

遗传算法通过适应度函数的大小来体现个体的优劣性,因此,定义评价神经网络优劣的适应度函数为:

Q= T-E (7)

其中,T是一常数。

由于神经网络的权值W和阈值θ决定了神经网络的实际输出,因此,误差平方和E是网络的权值W和阈值θ的函数,适应度函数Q也是网络的权值W和阈值θ的函数,即Q= q(W, θ)。由此,遗传算法优化的目标是找到某一权值矩阵W0和阈值矩阵θ0,使得:

Q= q(W00) →maxQ(=T) (8)

③基于自适应遗传算法的遗传策略

交叉概率Pc和变异概率Pm这两个遗传参数是决定GA性能的关键,无论过大还是过小,都会直接影响算法的收敛性和收敛速度。在基本GA算法中,交叉概率和变异概率采用恒定值,不能很好地适应不同个体的质量。本文根据实际需要,设计其随适应度和迭代次数自适应变化的交叉和变异公式。通过自适应交叉和变异,适应值高于群体平均值的个体有更大的概率进入下—代,而适应值低于群体平均值的个体则将被淘汰,这样可以大大加快遗传算法收敛,有效地提高GA算法的优化能力。

交叉概率、变异概率随适应度值的自适应变化公式如下:

pc=+ (9)

pm=+ (10)

其中,fmax为群体中最大的适应度值;favg为每代群体的平均适应度值;f'为要交叉的两个个体中较大的适应度值;f为要变异个体的适应度值。 为初始交叉、变异概率;k1, k2, nc,nm为系数因子。

2.4 改进遗传神经网络算法流程

根据原始算法流程和上述改进思路,建立新的改进遗传神经网络算法流程,如图1所示:

图1 改进遗传神经网络算法流程

3 销售量预测仿真实例

基于上述算法,针对某企业农用小型拖拉机销售情况进行预测分析。采用该公司农用小型拖拉机在2007年1月至2009年3月的国内市场销售额为研究数据样本,如表1 所示:

表1 某企业农用小型拖拉机市场销售数额(/百台)
3.1 传统方法1-线性回归建模

采用线性回归进行预测,其方程[ 12]为:y=a+bt,其中:

计算所得回归模型为:y(t)=-1.10556+5.11t,其预测值见表3“线性回归模型预测”一栏,预测误差为107.73%。

3.2 传统方法2-指数回归建模

采用指数回归进行预测,其方程[ 12]为:y(t)=abt,两边取对数,则得lg(y(t))=lga+tlgb,令y'(t)=lg(y(t)),A=lga,B=lgb,故有y'(t)= A+ Bt。利用最小二乘法,即解联立方程组,求得参数A和B。

然后,对A和B取反对数就可求得a和b。经计算指数回归模型为:y(t)=6.85×1.25t,其预测值见表3“指数回归模型预测”一栏,预测误差为39.69%。

3.3 GA-BP设计建模

定义时间序列{Xt}是某个商品在t时刻的市场占有率。在时间序列预测中,对一个变量预测仅根据其历史数据,即在被认为与其时间序列中的t值有某种函数关系,则t+l时刻占有率的某一值时刻的预测值可表示为:

xt+1=Fw(x1,x2,…,xt) (11)

其中,Fw表示网络的变换函数,用神经网络模型表示这种变换;x1,x2,…,xt为神经网络的输入,xt+1为网络的预测输出。

分别采用BP神经网络算法和改进的遗传神经网络模型进行预测。取2007年1月至2008年12月的数据作为神经网络模型的训练数据,并作归一化处理;2009年1月至3月的数据作为测试数据。训练数据时采用时序窗口方法组织。即按顺序每4个数据作为一个输入样本,第5个数据作为输出样本。从2007年1月开始到2008年12月,训练样本依次为(0.66,0.69,0.56,0.71,0.83)、(0.69,0.56,0.71.0.83,0.80)、(0.56,0.71,0.83,0.80,0.92)、…,(0.95,0.90,1.0,0.86,0.78)。第一个测试样本为:(0.9,1.0,0.86,0.78,X1),(1.0,0.86,0.78,X1,X2),(0.86,0.78,X1,X2,X3)。其中X1、X2、X3为等待网络模型预测的2009年1至3月的销售量。先将X1预测出来后,将X1作为已知数据,由它及前面的数据预测X2,最后由X2预测X3。

BP神经网络的拓扑结构采用4-12-1形式,即输入层有4个输入量,对应4个神经元;隐层有12个神经元;输出层有1个神经元。网络学习速率η=3.0,动量α=0.2,T=180。代入样本数据进行迭代,进行至512次时算法收敛。改进算法获得的输入层和隐层权值如表2所示:

表2 网络权值

经过上述算法所获得的各模型预测结果如表3所示:

表3 各模型预测结果比较
3.4 实验结果分析和应用

表3可以看出,BP神经网络算法虽然较传统算法有了较大的进步,预测精度提高了1-5倍,但预测精度还不够理想,预测误差接近20%,而改进的遗传神经网络算法的预测精度有了极大的提高,绝对误差比其他模型均小很多,减小到6.42%,预测结果非常理想。这说明用遗传神经网络算法建立数学模型能够正确地反映客户销售的未来趋势与变化规律。

4 结 语

本文针对BP神经网络算法存在的不足,提出了改进措施,即用遗传算法优化神经网络,利用GA算法全局寻优的特性来弥补BP 神经网络算法收敛速度慢、易陷入局部极小点的缺点,从而达到快速寻优及精确预测的目的。对传统的GA算法进行了改进, 改进后的GA算法较改进前的GA算法具有更好的收敛性,较好地解决了早熟收敛问题。最后通过实例证明,改进的遗传神经网络预测算法预测准确性得到较大的提高,为企业的销售预测提供了一种科学、有效的技术手段,具有较好的实用性。

参考文献
[1] 沈清, 胡德文, 时春. 神经网络应用技术[M]. 长沙: 国防科技大学出版社, 1993. [本文引用:1]
[2] 谭永红. 基于BP神经网络的自适应控制[J]. 控制理论与应用, 1994, 11(1): 84-88. [本文引用:1]
[3] 王鑫, 于洪亮, 张琳, . 采用改进遗传神经网络的多载荷振动信号故障诊断[J]. 噪声与振动控制, 2011, 8: 137-141. [本文引用:1]
[4] 徐永春, 张森文. 改进遗传神经网络在甘蔗产量预测中的应用[J]. 华南农业大学学报, 2011, 7(31): 102-104. [本文引用:1]
[5] 高海龙, 张国立. 改进遗传神经网络及其在负荷预测中的应用[J]. 华北电力大学学报, 2009, 9(36): 37-40. [本文引用:1]
[6] Leung F H F, Lam H K, Ling S H, et al. Tuning of the Structure and Parameters of a Neural Network Using an Improved Genetic Algorithm[J]. IEEE Transactions on Neural Networks, 2003, 14(1): 79-88. [本文引用:1] [JCR: 2.952]
[7] Palmes P P, Hayasaka T, Usui S. Mutation-based Genetic Neural Network[J]. IEEE Transactions on Neural Networks, 2005, 16(3): 587-600. [本文引用:1] [JCR: 2.952]
[8] 张济民. 基于神经网络的预测控制在摆式客车倾摆系统的应用研究[D]. 成都: 西南交通大学, 2004. [本文引用:4]
[9] Haykin S. Neural Network-A Comprehensive Foundation[M]. 2nd Edition. Beijing: Tsinghua University Press, 2001. [本文引用:1]
[10] Widrow B, Rumelhart D E, Lehr M A. Neural Network-Application in Industry, Business and Science[J]. Communication of the ACM, 1994, 37(3): 93-105. [本文引用:1] [JCR: 2.511]
[11] Zhao F, Hong Y, Yu D, et al. A Novel Genetic Algorithm for Partner Selection Problem in Virtual Enterprise [C]. In: Proceedings of the International Conference on Intelligent Mechatromics and Automation. 2004: 477-482. [本文引用:1]
[12] 董晓慧. 制造型企业群价值网及其协同管理机制研究[D]. 合肥: 合肥工业大学, 2008. [本文引用:2]