小波变换—BP神经网络的农产品价格预测研究
2019-02-09刘合兵韩晶晶
刘合兵,韩晶晶,席 磊
(河南农业大学信息与管理科学学院,郑州450002)
0 引言
物价可以直观反映我国国民经济和发展状况,根据我国居民目前的收入水平及消费结构现状,食品价格涨跌将直接影响我国物价总水平的变化,其中农产品价格的变化影响更为显著。农产品价格下降会降低生产者及经营者的收益,而价格上涨会增加居民的生活成本。农产品价格的剧烈波动对人们日常生活造成直接影响,不利于社会的稳定。农产品价格的稳定受到社会广泛关注,对农产品价格进行准确预测成为当前研究重点。通过开展农产品价格的分析与预测,为农户及生产经营者提供前瞻性信息,及时调整生产及销售思路,防范农产品价格异常波动带来的损失,提高农业市场风险规避能力,为当地政府出台稳定农产品市场供需和价格相关政策提供决策参考,同时,也为消费者进行日常饮食消费选择提供参考。
农产品种植受气候限制和影响,农产品生产大多具有明显的周期特征。农产品价格主要受市场供需影响,表现出季节性,趋势性及随机性等特点,其时间序列呈现典型的非线性特征。国内外对于价格的短期预测方法主要分为3种:传统时间序列预测方法、智能预测方法和组合预测模型。传统时间序列预测方法主要基于计量经济学方法进行分析,包括季节指数法、移动平均法、指数平滑法等。刘峰等[1]利用ARIMA(p,d,q)模型对白菜的月度价格走势进行预测,结果证实ARIMA(0,1,1)模型对白菜价格进行短期预测是可行的。苗开超[2]选用指数平滑方法对番茄年度价格进行预测,结果表明该模型在分析预测线性度较好的情况下拟合度较高。李干琼等[3]以番茄价格为研究对象,分别运用ARIMA、ARCH和GARCH3种方法进行预测,结果证实GARCH模型在预测中具有更高的精度。张标等[4]从蔬菜价格和上市量的波动角度出发,利用季节指数对蔬菜整体、果菜、叶菜和根茎菜分别构建预测模型,预测得知未来2年价格均继续呈现出季节性变动的缓慢上升趋势。传统时间序列预测方法在对具有线性特征的时间序列数据进行预测时精度较高,但随着市场逐渐向复杂化、非线性化、不规则化发展时,该类方法在对价格进行预测时,为模型参数调整带来较大困难,反映出一定的局限性。随着人工智能的发展,智能预测方法如神经网络、支持向量机、极限学习机等方法逐渐成为价格预测的热点。其中BP神经网络方法在时间序列预测时具有很强的非线性映射能力和柔性的网络结构,同时又能使样本预测误差逼近最小的优点。近年来一些学者针对农产品价格预测问题探索了BP神经网络在此方面的应用。解建强[5]通过对赣南脐橙的月度价格数据构建了BP神经网络的预测模型,预测结果表明基于改进算法的BP神经网络价格预测模型的误差低于ARIMA模型。任青山等[6]基于灰色关联度和Stepwise回归分析影响生猪价格波动的主要影响因素,通过多元回归分析和BP神经网络的交叉应用建立了一种组合预测模型,结果证实组合预测模型比单一的预测模型精度高。然而BP神经网络的单独应用存在学习速度慢、容易陷入局部极小值的问题。现今基于小波变换的组合预测模型逐渐应用在粮食产量、原油价格、增值税预测方面,并验证了该方法的可行性和有效性[7-9]。
因此,文章研究了一种具有普适性且预测精度较好的农产品价格组合预测模型,引入了小波变换对农产品价格序列进行分解,将这些分量作为BP神经网络的输入变量分别进行预测,并将预测结果进行组合获得最终农产品的预测价格。选取2013—2018年河南省批发市场的5种蔬菜月均价格为例对小波变换和BP神经网络的组合模型进行方法应用,验证其可行性和精确性。
1 材料与方法
1.1 数据源
菠菜、大白菜、番茄、辣椒和马铃薯是居民日常消费类蔬菜,也是叶菜类、果菜类和根茎菜类的代表,其价格的波动直接影响消费者的生活。该文以菠菜、大白菜、番茄、辣椒和马铃薯作为研究对象,从河南省农产品信息监测系统[10]下载5种农产品的月均价格数据,根据样本的可获得性和完整性原则,采集2013年1月至2018年12月共72组月均价格样本数据,将2013—2017年的样本数据作为训练集,2018年的样本数据作为测试集。
1.2 基于小波变换的价格序列分解
小波变换继承和发展了傅里叶变换局部化的思想,能够对信号进行多尺度分析,在分解过程中能够充分突出信号的细节特征,在信号高频部分进行时间细分,在低频部分进行频率细分,从而达到聚焦信号细节特征的作用,实现对分析对象更为细致的逼近。
根据农产品价格时间序列的分布特征,采用小波变换方法进行去噪,提高时间序列信号的预测精度,主要是因为小波变换可以同时观察频率和时间轴,可以分离信号的精细或粗糙部分,小波基的选择具有多样性等优势。不同的小波基对信号进行小波变换得到不同的变换结果。在实际应用中,并没有统一的理论基础和方法指导选择。一般来说,农产品价格属于非平稳的时间序列,而针对非平稳的信号去噪应用中应该选择正交的、中心频率高且与原始信号形状相匹配的小波基。因此,该文采用Daubechies小波基函数,简称dbN,N为小波的阶数,选择阶数为5,对选取的蔬菜价格时间序列进行去噪处理。分解尺度过小会影响多因素条件下农产品价格序列的细节特征信号突出,不利于预测精度的提高,而分解尺度过大则会加重实践过程操作。该文选择小波的分解尺度为3,可以避免分解尺度过大或过小产生的问题。确定分解尺度后,对原始信号进行db5的3尺度分解得到趋势低频部分a3及细节高频部分d1、d2、d3,对农产品价格波动的频率和幅度进行更为细致的透视,如图1所示。
1.3 基于BP神经网络的价格序列预测
人工神经网络通过模拟生物的神经信号传输机制实现复杂的计算。BP神经网络是一种独特的能够将计算误差进行反向传播的多层前馈神经网络。它由输入层、输出层和隐含层构成,其最简单的3层拓扑结构如图2所示。
图1 小波分解示意图 Fig.1 Wavelet decomposition diagram
该文利用BP神经网络自主学习后能够根据实际输出的误差反复调整权值和阈值直至达到指定精度的优势用于预测农产品价格时间序列。其工作流程如下:(1)将输入样本提供给输入层神经元,逐层正向传递信号,直到产生输出结果;(2)计算输出层的误差,将误差逆向传输至隐层神经元;(3)根据误差对连接权和阈值进行调整;(4)回到步骤(2),循环进行,直到达到停止条件。选取2013—2017年月均数据作为训练数据集,2018年月均数据作为测试数据集,传递函数选择tansig函数,训练函数选择trainlm函数,权值学习函数和性能函数都选择默认函数learngdm函数和mse函数,迭代次数为1 000次。
1.4 价格预测组合模型
该文运用MATLAB R2014b软件分别对选取的菠菜、大白菜、番茄、辣椒和马铃薯的月均价格数据运用小波变换方法进行db5的3尺度分解,分解出近似序列a3和细节序列d1、d2、d3。通过对原始时间序列的价格数据做细致分解,将不同的影响因素分离开,避免相互干扰,有利于后续模型预测精度的提升。然后对分解出来的4个序列分别采用BP神经网络方法进行建模,通过不断的调整参数使得预测值更为接近分解后的各序列值。最后对各个序列预测的结果进行累加得出最终的农产品预测价格,其流程如图3所示。
图3 数据预测流程图Fig.3 Data prediction flow chart
为了实现较高的预测精度,该文分别对3个细节序列和1个近似序列进行3层神经网络建模,4个序列的建模过程类似。以菠菜价格预测中的近似序列神经网络建模为例,首先对菠菜月均价格数据进行归一化处理,分解出2013—2017年菠菜月均价格的近似序列作为模型训练集,分解出2018年月均价格的近似序列作为测试集;设置神经网络各层节点的个数为7-5-1,当前月份的前6个月的价格和上一年同月份的价格共7个数据作为输入层数据;对输出数据进行反归一化处理,还原为价格数据。由于不同种类的农产品原始价格不同,分解后的各序列波形不同,在进行BP神经网络预测时对应的隐含层和输入层的节点个数不同。BP神经网络建模实验由MATLAB编程实现。
1.5 评价指标
为了评估组合预测模型的预测效果,选择平均绝对误差(MAE)、平均百分比误差(MAPE)与均方根误差(RMSE)指标来度量预测结果的精度。各预测指标的计算公式为:
式(1)~(3)中,n为价格样本数量,yi为第i个样本的月均价格。
2 结果与分析
2.1 小波分解价格序列结果
农产品价格序列通过小波变换后,被分解成1个近似序列a3和3个细节序列d3、d2、d1。该文通过小波变换对5种蔬菜月均价格进行分解,分别得到5种蔬菜的4个序列数据,为进一步分析做准备。如图4为菠菜价格分解前后序列波形图,其中s是菠菜价格的原始序列,直观地反映了原始数据的波动趋势和幅度。图4中a3是原始序列的近似序列曲线,其波动状态受主要因素的影响,反应了原始数据的大趋势。d1、d2和d3是原始序列的细节序列,代表着不同小权重因素影响下的细小波动及振幅状态。通过对比5种蔬菜分解后的各序列波形图发现,近似序列a3分解出来的数值均大于3个细节序列的数值,且a3序列的数值最接近于原始序列的值。3个细节序列的数值均处于0值上下波动。而由于不同种类的蔬菜原始价格不同,分解后的各序列具体波动形态不同。
图4 菠菜价格各序列波形图Fig.4 Waveform of each sequence of spinach price
2.2 组合模型预测结果
该文采用统计分析方法对2013—2018年5种蔬菜月均价格进行汇总,其价格变化趋势如图5所示。利用2013—2017年5种农产品月均价格进行训练,构建的组合预测模型分别对5种农产品2018年的月均价格进行预测,预测结果如表1所示。采用评价指标对组合模型的预测结果进行精度评价,其结果如表2所示。5种农产品的预测价格与实际价格的偏差较小,其中马铃薯的平均绝对误差值最小,为0.083元/kg;其次是大白菜,为0.085元/kg;菠菜则最高,为0.49元/kg。比较5种农产品价格预测结果的平均百分比误差,辣椒的值最小,为3.95%;菠菜的值最大,为8.66%。比较均方根误差,马铃薯最小,为 0.10元/kg,菠菜最大为0.61元/kg。从结果可知,5种蔬菜中菠菜的价格预测结果平均绝对误差、平均百分比误差和均方根误差等评价指数均在最高值,比较5种蔬菜的价格变化规律可知,2013—2018年菠菜的月均价格波动最剧烈,价格峰谷差值最大,达到12.73元/kg。而马铃薯和大白菜的峰谷差值分别为3.09和2.24元/kg。从价格走势看,菠菜价格走势呈现出较为明显的“凸”型,年内价格具有明显的季节性,年间价格走势趋于一致。而马铃薯和大白菜的价格走势较为平滑,个别年份会出现较大波动,且不同年度价格的走势存在差异。由此可知,价格波动的频率和幅度等特征会对小波变换—BP神经网络组合的价格预测模型预测结果产生影响,当农产品价格波动幅度小、频率低时预测结果更好。综合分析可知,小波变换和BP神经网络的组合预测模型可以实现任意波动形式的短期精准预测。
图5 价格变化时序图Fig.5 Timing chart of price change
表1 小波变换—BP神经网络组合预测结果Table 1 Combined prediction results of wavelet transform and BP neural network 元/kg
表2 小波变换—BP神经网络组合预测结果评价Table 2 Evaluation of combined prediction results of wavelet transform and BP neural network
3 结论
该文从蔬菜价格的综合影响因素及具体波动情况出发,为减少价格数据中各序列在分析过程中的相互影响,采用先分解后集成的思想,构建了小波变换和BP神经网络的组合预测模型对河南省5种蔬菜的月均价格进行实证研究和预测,研究表明组合模型的预测结果具有较高的预测精度,充分展示了小波变换和BP神经网络对非线性时间序列的处理能力及农产品价格波动幅度和强度会对该模型的预测精度产生影响。
因大多数预测模型的研究仅针对单一种类的产品进行实证分析,其预测方法及预测精度并不具有普适性。而该文提出的小波变换和BP神经网络的组合预测模型能对多种农产品价格波动进行预测,且对5种具有代表性的蔬菜进行预测验证的结果说明该模型具有较好的普适性。农产品价格的短期精确预测能为未来价格走势做出模拟,这对农产品生产者、经营者、消费者及相关政府部门具有重要的现实意义。因农产品的种类较多,仅针对蔬菜产品进行验证,不能代表其方法对肉类、水果类、粮油类及畜禽类具有同样的效果,在今后还将应用该模型对其他类型产品进行分析,实现更多种类农产品的价格预测。