一种基于PCA和改进BP神经网络的产品销量预测方法与流程

文档序号:19313869发布日期:2019-12-03 23:47阅读:265来源:国知局
一种基于PCA和改进BP神经网络的产品销量预测方法与流程

本发明涉及大数据分析技术领域,特别涉及一种基于pca和改进bp神经网络的产品销量预测方法。



背景技术:

销量预测在企业的经营运作中扮演着非常重要的角色,如何及时而准确的做好销售预测是目前市场上大部分企业都要面临的一个难题。由于市场的环境比较复杂,一些随机性因素如周期节假日、促销活动等,会对产品的销量产生比较大的影响,导致销量的趋势变化比较大,传统的比较常用的基于经济学和统计学的模型,如时间序列预测模型,都要求销售序列的趋势是稳定且有周期性的。但是在处理实际中复杂且随机性比较高的时间序列销量数据时,容易出现拟合不足导致准确率不高的问题。

bp神经网络全称反向传播前馈神经网络,它是1986年由rumelhart和mcclelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。

pca(principalcomponentanalysis),即主成分分析方法,是一种使用最广泛的数据降维算法。pca的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。可以实现提取主成分的功能。

bp神经网络是一个具有很强的非线性映射能力的模型,在许多实际工程应用中对于随机性比较高的序列都有很好的效果。然而,由于bp神经网络采用的是梯度下降训练算法,网络不可避免的存在收敛速度慢、学习率不稳定、容易受到噪声数据影响等不足。



技术实现要素:

本发明的目的是克服上述背景技术中不足,提供一种基于pca和改进bp神经网络的产品销量预测方法,通过把pca主成分分析法和bp神经网络相结合,并且利用粒子群优化算法对bp神经网络进行改进优化,以提高网络的预测精度和训练速度,让改进后的bp神经网络结构能够针对销量数据有更好的表现,解决了传统bp神经网络对于时间序列数据的局限性问题,从而能以更高的精确度对产品的销量数据进行预测。

为了达到上述的技术效果,本发明采取以下技术方案:

一种基于pca和改进bp神经网络的产品销量预测方法,包括以下步骤:

a.对初始样本数据进行预处理,如包括进行降维和去噪预处理;

b.对样本数据进行主成分分析,将分析出来的主成分作为特征进行输入;

c.用粒子群优化算法对bp神经网络的初始权值进行优化;

d.将优化后的最优解作为神经网络的新的权值;

e.使用训练后的bp神经网络对每月产品的销量进行预测。

本发明的基于pca和改进bp神经网络的产品销量预测方法中,利用主成分分析法结合利用粒子群优化算法优化后的bp神经网络,从而达到提高网络的预测精度和训练速度的目的,解决了普通bp神经网络对于销量预测问题而言存在的收敛速度慢、学习率不稳定、容易受到噪声数据影响等不足。

进一步地,所述步骤a具体包括:

a1.数据清洗;收集销量数据,使用python中pandas包dropna方法去除因格式或采集错误产生的错误数据和销量中的空值,按日期进行排序,完成数据清洗过程,得到目标数据集;

a2.数据归一化预处理;由于初始的样本数据中,不同的输入变量之间数值大小以及量纲不同,因此在网络训练前需要对数据进行归一化预处理,即把目标数据集的所有数据都转化为[0,1]范围内,具体函数形式为:x=x-xmin/xmax-xmin,其中xmax为样本最大值,xmin为样本最小值。

进一步地,所述步骤b包括:

b1.对样本数据进行主成分分析,通过求解样本系数矩阵的特征方程|r-λip|=0,计算特征根λ,再将求解的特征根λ代入方程|r-λip|x=0,计算特征向量x,其中,r表示样本系数矩阵,ip表示单位矩阵,每个特征向量x代表一个主成分;b2.计算每个主成分的方差贡献率与累计方差贡献率,其中,所述方差贡献率为某一特征向量的特征值除以所有特征向量的特征值的和的值,方差贡献率代表了该维度下蕴含的信息量的比例,所述累计方差贡献率为当前所有特征向量的方差贡献率之和,按方差贡献率由大至小的顺序,提取前m个主成分作为网络的输入;

b3.将提取的主成分作为bp神经网络的输入。

进一步地,所述步骤b2中具体是使用sklearn.decomposition包中pca方法对数据进行主成分提取。

进一步地,所述步骤c具体包括:

c1.初始化bp神经网络的输入层、隐含层以及输出层的神经元个数,建立粒子与bp神经网络的权值和偏差的映射关系;其中,对于销量预测问题,假定网络结构为m-n-1,即输入层为m个神经元,隐含层为n个神经元,输出层为1个神经元,若需要输出节点为特定时刻t的销量,则搜索空间的维数n=(m+1)*n+(n+1),即需要在n个维度上进行最有粒子群的搜索;

c2.设置惯性权重w和学习因子c1和c2的参数,粒子群优化算法的思想是初始化一个粒子群,每一个粒子代表优化问题的一个可行解,粒子的优劣由适应度值来确定,每个粒子将在解空间中运动,并由一个速度决定其飞行方向和速率大小,然后通过迭代搜索找到最优解,因此需要设置惯性权重和学习因子的参数,其中,惯性权重w是粒子当前速度在多大程度上继承先前的速度的体现,将影响粒子的全局搜索能力和局部搜索能力,学习因子c1和c2代表将每个微粒推向pid和pig位置的统计加速项的权重,pid表示当前粒子达到局部最优解时粒子的位置,pig表示当前粒子达到全局最优解时粒子的位置;

c3.粒子位置和速度初始化;

c4.粒子适应度值的计算;

c5.确定个体极值和全局极值,更新每个粒子的速度和位置;

c6.迭代停止控制,对迭代产生的种群进行评价,判断算法的训练误差是否达到期望误差或最大迭代次数,若满足则进入下一步,否则返回步骤c4,其中,训练误差是将当前迭代轮次的粒子种群对应的最优的加速度学习因子c1,c2作为最优解带入bp神经网络对训练集学习后预测出的结果与真实结果的差。

进一步地,所述步骤c3包括:随机生成多个个体,每个个体由两部分组成,第一部分为粒子的速度矩阵,第二部分为粒子的位置矩阵,其中,粒子个体数量由具体数据规模和神经网络决定,对于百万级别数据规模,粒子数量一般在2500-5000之间。

进一步地,所述粒子的位置矩阵中每个粒子位置参数均取[0,1]之间的随机数,作为粒子群优化算法的初始解集,由于bp神经网络的权值与阈值一般初始化为[0,1]之间的随机数,故将粒子群中每个粒子位置参数均取为[0,1]之间的随机数。

进一步地,所述步骤c4具体为:粒子位置和速度初始化后,随机产生一个种群,计算每一个粒子的适应度值,具体以bp神经网络训练的均方误差函数e作为粒子的适应度评价函数,计算每一个粒子的适应度值其中,n为训练样本的个数,yreal为第i个样本的实际值,yi为第i个样本的预测值,最后算法迭代停止于适应度最低的粒子对应的位置,即为所求问题的最优解。

进一步地,所述步骤c5具体包括:通过对每一次迭代中粒子适应度值进行比较,确定每个粒子的个体极值和全局最优极值,更新每个粒子的速度和位置,其中,在每一次迭代过程中,粒子通过个体极值和全局极值更新自身的速度vid和位置xid,具体更新公式如下:

其中,w为惯性权重,c1,c2为加速度因子,r1,r2为分布于[0,1]之间的随机数,表示当前粒子的个体极值,表示当前粒子的全局极值。

进一步地,所述步骤e具体为:算法停止迭代时,对应的值即为训练问题的最优解,即bp神经网络的权值与阈值,将上述最优解代入bp神经网络模型进行二次训练学习,最终形成产品销量的混合预测模型,并利用建立的混合预测模型进行销量预测。

本发明与现有技术相比,具有以下的有益效果:

本发明的基于pca和改进bp神经网络的产品销量预测方法,通过把pca主成分分析法和bp神经网络相结合,并且利用粒子群优化算法对bp神经网络进行改进优化,以提高网络的预测精度和训练速度,让改进后的bp神经网络结构能够针对销量数据有更好的表现,通过使用优化后的bp神经网络,可以以很高的效率和准确率对未来的产品销量数据进行预测,解决了对于现有的使用普通bp神经网络进行预测而存在的稳定性低和准确率不佳的问题,以及传统bp神经网络对于时间序列数据的局限性问题,从而能以更高的精确度对产品的销量数据进行预测,达到指导业务产量,提高企业效益的目的。

附图说明

图1是本发明的一个实施例中通过本发明的方法进行预测时的总量预测结果对比示意图。

具体实施方式

下面结合本发明的实施例对本发明作进一步的阐述和说明。

实施例:

实施例一:

一种基于pca和改进bp神经网络的产品销量预测方法,主要是通过利用pca主成分分析法对输入的样本降维和去噪预处理,将分析出来的主成分作为特征进行输入,然后用粒子群优化算法对bp神经网络的初始权值进行优化,将优化的最优解作为神经网络的新的权值,最后,使用训练后的网络对每月电视的销量进行预测。具体步骤如下:

步骤1.对初始样本数据进行预处理,如包括进行降维和去噪预处理。

具体的,本实施例中包括数据清洗及数据归一化预处理,其中,数据清洗时需要收集销量数据,使用python中pandas包dropna方法去除因格式或采集错误产生的错误数据和销量中的空值,按日期进行排序,完成数据清洗过程,得到目标数据集。

同时,由于初始的样本数据中,不同的输入变量之间数值大小以及量纲不同,因此在网络训练前需要对数据进行归一化预处理,即把目标数据集的所有数据都转化为[0,1]范围内,具体函数形式为:x=x-xmin/xmax-xmin,其中xmax为样本最大值,xmin为样本最小值。

步骤2.对样本数据进行主成分分析,将分析出来的主成分作为特征进行输入。

本实施例中具体为:首先,对样本数据进行主成分分析,通过求解样本系数矩阵的特征方程|r-λip|=0,计算特征根λ,再将求解的特征根λ代入方程|r-λip|x=0,计算特征向量x,其中,r表示样本系数矩阵,ip表示单位矩阵,每个特征向量x代表一个主成分。

然后,计算每个主成分的方差贡献率与累计方差贡献率,其中,所述方差贡献率为某一特征向量的特征值除以所有特征向量的特征值的和的值,方差贡献率代表了该维度下蕴含的信息量的比例,所述累计方差贡献率为当前所有特征向量的方差贡献率之和,按方差贡献率由大至小的顺序,提取前m个主成分作为bp神经网络的输入;具体的,本实施例中是使用sklearn.decomposition包中pca方法对数据进行主成分提取。

步骤3.初始化bp神经网络的输入层、隐含层以及输出层的神经元个数,建立粒子与bp神经网络的权值和偏差的映射关系;其中,对于销量预测问题,假定网络结构为m-n-1,即输入层为m个神经元,隐含层为n个神经元,输出层为1个神经元,若需要输出节点为特定时刻t的销量,则搜索空间的维数n=(m+1)*n+(n+1),即需要在n个维度上进行最有粒子群的搜索。

步骤4.设置惯性权重w和学习因子c1和c2的参数。粒子群优化算法的思想是初始化一个粒子群,每一个粒子代表优化问题的一个可行解,粒子的优劣由适应度值来确定,每个粒子将在解空间中运动,并由一个速度决定其飞行方向和速率大小,然后通过迭代搜索找到最优解,因此需要设置惯性权重和学习因子的参数,其中,惯性权重w是粒子当前速度在多大程度上继承先前的速度的体现,将影响粒子的全局搜索能力和局部搜索能力,学习因子c1和c2代表将每个微粒推向pid和pig位置的统计加速项的权重,pid表示当前粒子达到局部最优解时粒子的位置,pig表示当前粒子达到全局最优解时粒子的位置;

步骤5.粒子位置和速度初始化。随机生成多个个体,每个个体由两部分组成,第一部分为粒子的速度矩阵,第二部分为粒子的位置矩阵,其中,粒子个体数量由具体数据规模和神经网络决定,对于百万级别数据规模,粒子数量一般在2500-5000之间。具体的,由于bp神经网络的权值与阈值一般初始化为[0,1]之间的随机数,故将粒子群中每个粒子位置参数均取为[0,1]之间的随机数,作为粒子群优化算法的初始解集。

步骤6.粒子适应度值的计算;粒子位置和速度初始化后,随机产生一个种群,计算每一个粒子的适应度值,具体以bp神经网络训练的均方误差函数e作为粒子的适应度评价函数,计算每一个粒子的适应度值其中,n为训练样本的个数,yreal为第i个样本的实际值,yi为第i个样本的预测值,最后算法迭代停止于适应度最低的粒子对应的位置,即为所求问题的最优解。

步骤7.确定个体极值和全局极值,更新每个粒子的速度和位置。通过对每一次迭代中粒子适应度值进行比较,确定每个粒子的个体极值和全局最优极值,更新每个粒子的速度和位置,其中,在每一次迭代过程中,粒子通过个体极值和全局极值更新自身的速度vid和位置xid,具体更新公式如下:

其中,w为惯性权重,c1,c2为加速度因子,r1,r2为分布于[0,1]之间的随机数,表示当前粒子的个体极值,表示当前粒子的全局极值。

步骤8.迭代停止控制,对迭代产生的种群进行评价,判断算法的训练误差是否达到期望误差或最大迭代次数,若满足则进入下一步,否则返回步骤6,其中,训练误差是将当前迭代轮次的粒子种群对应的最优的加速度学习因子c1,c2作为最优解带入bp神经网络对训练集学习后预测出的结果与真实结果的差。

步骤9.算法停止迭代时,对应的加速度学习因子c1,c2的最优值即为训练问题的最优解,即bp神经网络的权值与阈值,将上述最优解代入bp神经网络模型进行二次训练学习,最终形成产品销量的混合预测模型,并利用建立的混合预测模型进行销量预测。

上述模型训练优化步骤在本实施例中具体是通过使用tensorflow库的initializer方法初始化一个15层的bp神经网络,将提取出的m个主成分后输入初始化的bp神经网络,初始化之后,按照上述的粒子群算法流程,整个流程封装在方法pso_optimize中,调用方法pso_optimize得到优化后的最优解s,将s作为神经网络的新权值,完成对神经网络进行改进优化,得到最优的混合预测模型。

然后,本实施例中进行模型拟合与输出时具体是使用训练完成的最优混合预测模型对历史销量数据进行训练,使用训练好的模型对总部主销型号(本实施例中具体为电视产品)销量从1月开始进行预测,将销售序列绘制成曲线对比图,绘制的对比图如图1所示,可见采用基于pca和改进bp神经网络的混合预测模型的预测值与实际值的拟合精度很高。

可知,本发明的基于pca和改进bp神经网络的产品销量预测方法中,利用主成分分析法结合利用粒子群优化算法优化后的bp神经网络,从而达到提高网络的预测精度和训练速度的目的,解决了普通bp神经网络对于销量预测问题而言存在的收敛速度慢、学习率不稳定、容易受到噪声数据影响等不足。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1