基于Bi-RNN-LSTM 模型的国内生猪价格预测与试验
2023-11-13曹惠茹许沛鑫陈俊炯李小敏
曹惠茹,许沛鑫,陈俊炯,钟 麟,李小敏※
(1.广州工程技术职业学院信息工程学院,广州 510075;2.仲恺农业工程学院机电工程学院,广州 510550)
0 引言
自2003 年以来,国内猪肉价格存在明显的波动,究其根本是由于猪饲料的主要成分玉米和大豆等价格也随时间而增长,此外,受仔猪的供需矛盾影响,猪肉价格同样也存在明显的波动。而猪肉是我国肉类消费的主要对象,其价格偏差过大过小都会影响到居民的日常生活,因此,建立一个有效的模型预测生猪价格具有重要意义。国内外学者实现数据预测的方法大概可分为3 个方向,即传统统计学、机器学习、深度学习。在传统统计学方法上,广泛使用ARIMA 模型[1-4]。Akshita Gupta 等[5]使用了ARIMA、Wavelet-ARIMA和机器学习3 种模型进行中期日负荷预测,结果表明机器倾斜算法优于时间序列算法。Lun Wang[6]基于X12-ARIMA-GARCH 家族模型对上海铜期货价格进行预测,具有较好的拟合和预测能力。张莹莹[7]基于ARIMA模型对猪肉价格进行了短期预测,预测曲线拟合度较好。在机器学习方法上,多使用SVM[8-10]模型。Ali Shiri 等[11]基于SVM 预测德国电价,并通过对比分析,确定了使用了西德克萨斯中质原油(WTI)的日价格的SVM 模型更加有效。Hasan 等[12]比较使用了k近邻算法,朴素贝叶斯和支持向量机等来预测洋葱的价格,将洋葱价格分为高中低3 类。蔡超敏等[13]使用集成模型EMD-SVM,并与SVM、EMD-BP、BP等模型比较,显示出了较高的预测精度。姜百臣等[14]通过改进后的SVM 模型对猪肉价格进行预测,相较于原始模型,预测精度良好,RMSE 为1.62。张大斌等[15]利用GEEMD 的分解能力,通过遗传算法优化SVR预测模型,提高了SVR 预测模型对猪肉价格的预测精度。在深度学习方法上,则多使用RNN 或RNN 变种LSTM等,Karim Moharm[16]基于双向长短期记忆网络构建8 组对照组预测风速,其对风速数据集的理解具有良好的性能。Rijo Jackson Tom[17]利用Bi-LSTM预测比特币的价格,该模型能够以平均绝对误差为13%的方式跟踪测试数据集。Feng Li 等[18]使用LSTM-RNN 提出了一种考虑储能效应的短期负荷预测方法,MAPE 为3.0,RMSE为0.72。Van Bui[19]提出基于多尺度RNN 的深度学习可以高精度地反映其反应性和准确性,并显示了作为输出负载预测问题的鲁棒解决方案的潜力。黄琪[20]采用特征选择和LSTM 模型对同期猪肉价格进行了定性比较合适分析,显示LSTM有更好的预测效果。
显然,在价格预测或其他预测方面众多学者取得了不错的成果,但猪肉等大宗商品的价格预测,却鲜有人进行研究。结合以上问题,本文构建了双向循环神经网络和双向长短期记忆网络组合模型Bi-RNN-LSTM,该模型在国家数据库提供的活猪(中等)集贸市场价格当期值数据上拥有优秀的预测结果,能在一定程度上帮助国家宏观调控猪肉价格,避免由于猪肉价格的波动较大而引起的一系列民生问题。
1 理论背景
1.1 Bi-RNN结构和计算原理
图1 双向RNN结构
(1)前向隐藏RNN层
(2)反向隐藏RNN层
(3)前反向隐藏层合并RNN 隐藏层(RNN 新隐藏层)
(4)RNN输出层
注:←表示反向传播,→表示正向传播。
1.2 Bi-LSTM的结构和计算原理。
Bi-LSTM同样拥有两个中间隐藏层,但其由于存在遗忘门(Forget gate)、输入门(Input gate)、输出门(Output gate),因此将3 个门视为一个operation 单元,简化示意图如图2(图中σ 为Sigmoid 函数,Ft为遗忘门,It为输入门,Ot为输出门,⊙为Hadamard 乘积)所示。相对于Bi-RNN,每一次由输入层输入时,不会直接将序列数据抵达隐藏层,而是经过前向operation 单元后,由前向operation 单元进行相关计算,前向operation输出对应的记忆单元(c)供给下一个operation,而输出的ht则和反向operation 输出的ht'合并为一个隐藏层,再进行输出。
图2 操作单元
对于operation 单元而言,则有:
(1)输入门
(2)遗忘门
(3)输出门
(4)候选记忆单元
(5)记忆单元
(6)隐藏层
而对于总体结构而言,其计算公式与Bi-RNN 相似,仅需经过1 个operation 单元,本文在此不再赘述。
2 预测方法构建
2.1 相关性分析
图3 相关系数热图
分析生猪价格的影响因素,可由两个主要方向确定输入特征,崽猪和饲料。因此可对由国家数据库提供的畜产品集贸市场价格和粮食集贸市场价格数据之间进行相关系数的计算。此外,由于输入特征对标签的影响是相对滞后几个月份的,因此本文将时间序列错开进行相关性分析,即对2003 年1 月至2018 年8 月的输入特征数据和2003 年5月至2018 年12 月的猪肉价格数据进行相关性分析,各系数分析计算结果热图如图3 所示。其中:Kendall 为肯德尔相关系数;Person 为皮尔逊相关系数;Spearman 为斯皮尔曼相关系数。由图可知,对于肯德尔相关系数,粮食作物与猪肉价格相关性均在0.5 左右,而仔猪达到了0.6,对于皮尔逊相关系数,相关性最高的为仔猪、玉米,而大豆与籼稻、粳稻均约为0.79,对于斯皮尔曼相关系数,相关性最高的为仔猪、玉米,而其他的则相关性接近。考虑到猪饲料的主要成分有豆粕,而本文做相关性分析时使用的是大豆,因此相关系数偏低,结合实际,最终选取玉米、仔猪、大豆作为输入特征。
2.2 模型搭建
图4 模型总结构
首先,实验以训练集数据输入,为消除奇异样本数据,将所有输入特征和标签进行归一化处理,再经过RNN层,为防止过拟合,将RNN 层的输出先经过Dropout层,进而再输入LSTM 层,同样对再LSTM 层的输出经过Dropout 层,最终将Dropout 层的输出作为Bi -LSTM 层的输入,再经过Bi-RNN 层,最后经过全连接层Dense即可得到输出,反复训练后,最终保存模型训练参数,将测试集数据归一化后进入模型,将模型所得结果逆归一化即可得到最终预测结果,模型构建过程如图4所示。
3 试验与结果
为对模型预测结果进行评价,采用平均绝对误差(Mean Absolute Error,MAE)、平均绝对百分比误差(Mean Absolute Percentage Error,MAPE)、对称平均绝对百分比误差(Symmetric Mean Absolute Percentage Error,SMAPE)、均方误差(Mean Squared Error,MSE)、均方根误差(Mean Squared Log Error,RMSE)等5 个误差评价指标,其中,MAE、MSE、RMSE 越小表示误差越小,MAPE和SMAPE 为0%表示完美模型,100%表示劣质模型。
式中:yi为猪肉价格真实值;为猪肉价格预测值;n为时间序列长度。
3.1 不同训练次数下指标的对比
为比较不同训练次数下的模型精度,设训练次数初值为100,公差为100,最终项为9。受模型训练次数和运行环境的影响,同时因为存在Dropout层,所以每一次训练模型学习到的参数都存在变化,因此本文训练时每n项都训练两遍,取最优结果。
表1 模型训练结果(单元素长度为4)
图5 Bi_RNN_LSTM最优组预测值
由表1 可知,随着模型训练次数的逐渐上升,模型精度大体提高,当Epoch为400/600 时,模型达到最优结果,MSE 仅为0.48,RMSE为0.69,MAE为0.53,MAPE 为3.37%,SMAPE 为3.37%,epoch 为400 时预测值与真实值的折线图如图5 所示。
3.2 不同模型下最优组指标的对比
为比较不同模型最优组的精度,本文在同一组数据集上训练了单层深度学习模型RNN、LSTM、GRU 以及双向RNN、LSTM、GRU,其预测结果如图6 所示。
图6 其他模型预测值
3.3 不同输入特征长度下指标的对比
考虑到不同输入特征长度可能会对训练的精度造成影响,因此,设立不同输入特征长度的模型作为对照,在原输入单元素长度为4(原输入特征含4 种元素,共计16 个输入特征)的基础上,设立单元素输入特征长度为3 和5 作为对比。
表2 模型训练结果(单元素长度为3)
从表2 可看出元素输入特征长度为3 时最优组的MSE、RMSE、MAE、MAPE、SMAPE 依次为0.63、0.8、0.59、3.58、3.64;从表3 可看出最优组的MSE、RMSE、MAE、MAPE、SMAPE依次为0.82、0.9、0.69、4.29%、4.32%。相对于单元素输入特征长度为4 时的误差指标来说其精度均略低于单元素输入特征长度为4 的实验组,单元素输入长度为3、4、5 的模型预测值与真实值间折线图如图7 所示。
图7 不同长度下的预测值
4 结束语
猪肉价格的提前预测关系到民生根本,本文使用深度学习组合模型,发挥各模型的优点,最终构建出精度高的猪肉价格预测模型,通过模型预测值得出以下结论。
(1)模型训练次数的提高能有效地提高模型的预测精度,但当训练次数过高时,模型的精度又会下降;而对于单元素输入特征长度为4 的实验来说,其400 次与600 次时的预测误差基本相等,且在模型训练中精度最为精准。
(2)对于深度学习模型来说,单层单向模型的预测误差大,而单层双向模型的预测误差则相对较好,但由于结构简单,导致其误差仍偏大。
(3)在不同单元素输入特征长度的情况下,总体上模型的预测值与真实值基本拟合,这说明本文模型在猪肉价格时间序列上的可适度高。
对比本文使用的模型,证明了使用多层单双向的深度学习模型预测效果最好。