LSTM神经网络原油价格预测
2021-06-03潘少伟王亚玲蔡文斌
潘少伟,李 辉,王亚玲,蔡文斌
(1.西安石油大学 计算机学院,陕西 西安 710065;2.中国石油 长庆油田公司勘探开发研究院,陕西 西安 710018;3.西安石油大学 石油工程学院,陕西 西安 710065)
0 引 言
石油是国民经济的血液,是重要的战略资源[1]。石油在国民经济发展、民生状况改善中具有举足轻重的作用[2-3]。未经提炼的石油称为原油,其价格波动通常较大。国际上的原油价格波动往往会对世界各国的经济造成重大影响,因此对国际上的原油价格预测就成为一项非常有意义的工作。根据预测时间的长短,可把原油价格预测划分为两大类:原油价格短期预测和原油价格长期预测。原油价格短期预测是指利用机器学习方法和统计分析方法等对未来几十天甚至几个月之内的原油价格做出预测[4-6];原油价格长期预测是指利用机器学习方法和统计分析方法等对未来一年甚至几年内的原油价格做出预测[7-10]。国际上的原油定价机制比较复杂,而且受到某些突发政治、经济事件的影响,所以在原油价格长期预测结果中会带有一定的不确定性。可见,为更好地为国民经济的发展提供服务,通过短期预测及时掌握原油价格的动态变化规律就变得非常重要。在原油价格短期预测中,传统机器学习方法和统计分析方法取得了一定成功,但在拟合时经常会忽略历史原油价格对当前原油价格的影响,遗漏掉隐藏于原油价格数据中的某些动态变化特征,导致最终无法完整获取原油价格变化的逻辑序列。
近年来,计算机性能的提高使得深度学习的应用越来越广泛[11-15]。深度学习中的循环神经网络(recurrent neural networks,RNN)作为一种循环反馈的神经网络框架,能够充分考虑时间序列的相关性,并通过分析历史信息,建立完整的时间序列模型。但RNN在训练中容易出现梯度消失和梯度爆炸问题。长短期记忆(long short-term memory,LSTM)神经网络作为一种特殊的RNN模型,能有效规避梯度消失和梯度爆炸问题,实现对历史信息真实有效的利用。LSTM神经网络在当前时间序列数据预测中得到广泛应用[16-17]。
Bernabe等曾经指出:石油价格时间序列是一个非线性的长记忆系统[18]。所以国际上原油价格日数据也可看作是典型的时间序列,因为当天的原油价格会受到昨天或前面几天的原油价格影响。于是,为规避某些突发政治、经济事件的影响,深入挖掘蕴藏于原油价格日数据中的动态变化模式,进而全面把握其中的动态变化特征,该文把LSTM神经网络应用于原油价格日数据的短期预测中。共设计三组基于LSTM神经网络预测原油价格日数据的实验,最终实验结果表明利用前二十四个月的原油价格日数据预测后三个月原油价格日数据的评估效果最好,利用前六个月的原油价格日数据预测后一个月原油价格日数据的评估效果最差。
1 LSTM神经网络
1997年,Hochreiter和Schmidhuber一起提出长短期记忆神经网络[19],即LSTM神经网络。LSTM神经网络很好地解决了RNN中存在的梯度消失和梯度爆炸问题。与RNN相比,它可以记忆更长时间步上的信息。2013年,Graves等对LSTM神经网络进行了改进,并将其应用到语音识别中[20]。如今LSTM神经网络日益发展成熟,其基本结构如图1所示。
图1 LSTM神经网络基本结构
图1中,带箭头的线条表示向量的传输,箭头指引向量的传输方向。箭头交汇处的小圆圈表示向量按位进行相应运算,处于中央位置的大圆圈(ct)表示LSTM神经网络的细胞状态单元。合并的线条表示不同向量的连接,分开的线条则表示向量被复制后向不同方向传输。由图1可知,LSTM神经网络表现为三种门结构:输入门(it)、输出门(ot)和遗忘门(ft)。输入门主要作用是控制进入当前细胞状态单元的信息量,输出门则主要控制当前细胞状态单元输出的信息量,遗忘门主要作用是控制并丢弃当前细胞状态单元不需要的来自上一个细胞状态单元的信息。通过输入门、输出门和遗忘门,LSTM神经网络得以保持和更新细胞单元状态。
LSTM神经网络信息传递的基本流程如下(仅以一个神经网络节点为例进行阐述):(1)遗忘门通过sigmoid函数对输入信息进行控制,决定哪些信息可以进入到当前细胞状态单元中;(2)由tanh层生成一个可添加到当前细胞状态单元中的候选值,之后将该候选值、上一步的输入信息和上一时刻的细胞单元状态按位进行运算,获得新的细胞单元状态值;(3)通过sigmoid函数获得初始输出信息后,再利用tanh层把新的细胞单元状态值进行处理,使其在-1到1之间,最后把初始输出信息和处理后的细胞单元状态值按位进行运算并输出。
LSTM神经网络信息传递过程中涉及的公式如下:
it=σ(Wxixt+Whiht-1+bi)
(1)
ft=σ(Wxfxt+Whfht-1+bf)
安徽中烟在“十三五”信息化规划中提出统一数据平台实施方案,建设“两级数据中心”,汇集企业的生产数据,采用数据仓库技术及各种高级统计分析和数据挖掘技术,帮助企业实现“数据、信息、知识”的转化,实现科学决策,真正成为数据集散中心、报表处理中心和决策辅助支持中心,成为信息资源管理体系的中心和枢纽。将分散在各个业务处理系统中的数据归集起来,为各级用户提供数据提取和查询服务,同时实现综合查询与分析,联动查询与统计,实现各类统计业务报表的内容共享[2]。
(2)
ot=σ(Wxoxt+Whoht-1+bo)
(3)
ct=ft×ct-1+it×tanh(Wxcxt+Whcht-1+bc)
(4)
ht=ot×tanh(ct)
(5)
式(1)中it表示输入门中,上一时刻隐含层的输出值和当前时刻的输入值经过sigmoid函数处理后的值;式(2)中ft表示遗忘门中,上一时刻隐含层的输出值和当前时刻的输入值经过sigmoid函数处理后的值;式(3)中ot表示输出门中,上一时刻隐含层的输出值和当前时刻的输入值经过sigmoid函数处理后的值;式(4)中ct表示当前时刻更新之后的细胞单元状态值;式(5)中ht表示当前时刻隐含层的输出值。在式(1)~式(5)中,σ和tanh为循环激活函数,ht-1表示上一时刻隐含层的输出值,xt表示当前时刻的输入值,W表示不同的权重矩阵,b表示不同的偏置参数。
LSTM神经网络的这种特殊结构使它不仅可以对时间序列数据进行长期预测,还可以进行短期预测并取得了不错的效果,因此该文将LSTM神经网络应用于原油价格短期预测中。
2 基于LSTM神经网络的原油价格预测
2.1 实验环境简介
本次实验用计算机的配置:操作系统为Windows 10家庭中文版,中央处理器是Intel Core i7-9750H,内存为8.00 GB。实验集成开发环境为PyCharm 2019.2.3(Professional Edition),程序设计语言为Python 3.7.3,神经网络库为Keras 2.3.1。
2.2 预测分析数据选取
国际市场上的原油价格制定基本以世界主要产油区的标准油作为基准。因此该文选取美国西德克萨斯州轻质中间基原油(west Texas intermediate,WTI)的现货价格日数据作为研究对象进行预测分析。预测分析数据的样本区间为2016年1月1日到2019年6月30日,对由于假期等因素导致缺失的原油价格日数据利用缺失值前一天的数据进行补全,最终得到1 277个关于原油价格的样本数据。由原油价格样本数据可知,在2016年1月1日到2019年6月30日这段时间内,原油价格日数据表现出一定的波动,总体上表现为下降、上升,再下降再上升这样的反复趋势。
2.3 预测评价指标
为了评价LSTM神经网络对原油价格日数据的预测精度,选取均方根误差(root mean square error,RMSE)、平均绝对误差(mean absolute error,MAE)和平均绝对百分比误差(mean absolute percent error,MAPE)作为评价指标。它们的计算公式如下:
(6)
(7)
(8)
2.4 模型参数设置
用于原油价格日数据预测的LSTM神经网络模型(以下简称LSTM模型)总体分为三部分:输入层、隐含层和输出层。输入层功能包括归一化样本数据、拆分训练集和测试集、确定时间步长和把数据重新塑造为符合LSTM神经网络输入格式的三维结构。隐含层是整个LSTM神经网络的核心,LSTM模型共设置两个隐含层,第一个隐含层设置100个神经元、第二个隐含层设置50个神经元。以均方误差MSE作为损失函数,同时采用Adam算法作为优化算法。另外,时间步长设置为3,批处理数设置为8,总共训练迭代100次。经过多次测试发现,此种设置的预测效果相对较好。另外,为解决LSTM模型在训练过程中可能出现的过拟合问题,在隐含层后面尝试增加了Dropout方法,但测试发现增加Dropout方法后的预测效果反而变差,因此在隐含层中去掉了Dropout方法。输出层包括一个Dense层,用来对预测值进行降维并输出。
2.5 实验设计与结果分析
本次实验的流程如图2所示,依据此流程,设计三组基于LSTM神经网络的原油价格预测实验。
图2 LSTM神经网络预测原油价格基本流程
三组实验的详细描述如下:
2.5.1 第一组实验
把数据集中前六个月、前十二个月、前十八个月、前二十四个月、前三十个月和前三十六个月的原油价格日数据作为训练集,把后一个月的原油价格日数据作为测试集进行实验,获得实验结果如图3所示。图3中,横坐标为预测天数,单位是天;纵坐标为原油价格,单位是美元/桶;实心黑色曲线代表原油价格日数据真实值,带圆点、正方形、左三角、右三角、上三角和下三角标记的曲线分别代表利用前六个月、前十二个月、前十八个月、前二十四个月、前三十个月和前三十六个月的原油价格日数据构建LSTM模型产生的预测值。由图3可看出,利用前二十四个月原油价格日数据构建的LSTM模型的预测值曲线最接近原油价格日数据真实值曲线,利用前六个月原油价格日数据构建的LSTM模型的预测值曲线与原油价格日数据真实值曲线偏离最远,其他的LSTM模型预测值曲线与原油价格日数据真实值曲线的偏离程度介于上述两种LSTM模型的预测值曲线之间。
图3 后一个月原油价格日数据真实值与预测值曲线
表1给出六种LSTM模型预测后一个月原油价格日数据产生的RMSE、MAE和MAPE值。表1中,RMSE、MAE和MAPE的最小值分别为0.883 7、0.618 3和1.205 0,均由利用前二十四个月的原油价格日数据构建的LSTM模型产生;RMSE、MAE和MAPE的最大值分别为1.674 6、1.386 2和2.714 4,均由利用前六个月的原油价格日数据构建的LSTM模型产生;其他LSTM模型预测产生的RMSE、MAE和MAPE值介于上述两种LSTM模型之间。
表1 后一个月原油价格日数据预测的评价指标对比
2.5.2 第二组实验
把数据集中前六个月、前十二个月、前十八个月、前二十四个月、前三十个月和前三十六个月的原油价格日数据作为训练集,把后面三个月的原油价格日数据作为测试集进行实验,获得实验结果如图4所示。图4中横纵坐标和各曲线的表征意义与图3相同,在此不再赘述。由图4可知,利用前二十四个月原油价格日数据构建的LSTM模型的预测值曲线最接近原油价格日数据真实值曲线,利用前六个月原油价格日数据构建的LSTM模型的预测值曲线与原油价格日数据真实值曲线偏离最远,其他的LSTM模型预测值曲线与原油价格日数据真实值曲线的偏离程度介于上述两种LSTM模型的预测值曲线之间。
图4 后三个月原油价格日数据真实值与预测值曲线
表2 后三个月原油价格日数据预测的评价指标对比
表2给出六种LSTM模型预测后三个月原油价格日数据产生的RMSE、MAE和MAPE值。表2中,RMSE、MAE和MAPE的最小值分别为0.744 5、0.508 3和0.938 8,均由利用前二十四个月的原油价格日数据构建的LSTM模型产生;RMSE、MAE和MAPE的最大值分别为1.331 5、1.080 8和1.999 0,均由利用前六个月的原油价格日数据构建的LSTM模型产生;其他LSTM模型预测产生的RMSE、MAE和MAPE值介于上述两种LSTM预测模型之间。
2.5.3 第三组实验
把数据集中前六个月、前十二个月、前十八个月、前二十四个月、前三十个月和前三十六个月的原油价格日数据作为训练集,把后面六个月的原油价格日数据作为测试集进行实验,获得实验结果如图5所示。图5中横纵坐标和各曲线的表征意义与图3、图4相同。由图5可知,利用前二十四个月原油价格日数据构建的LSTM模型的预测值曲线最接近原油价格日数据真实值曲线,利用前六个月原油价格日数据构建的LSTM模型的预测值曲线与原油价格日数据真实值曲线偏离最远,其他的LSTM模型预测值曲线与原油价格日数据真实值曲线的偏离程度介于上述两种LSTM模型的预测值曲线之间。
图5 后六个月原油价格日数据真实值与预测值曲线
表3给出六种LSTM模型预测后六个月原油价格日数据的RMSE、MAE和MAPE值。由表3可知,当训练集为前二十四个月的原油价格日数据时,构建LSTM模型预测后六个月原油价格日数据产生的RMSE值最小,为0.866 2;当训练集为前三十个月的原油价格日数据时,构建LSTM模型预测后六个月原油价格日数据产生的MAE和MAPE值最小,分别为0.556 1和0.986 3;当训练集为前六个月的原油价格日数据时,预测后六个月原油价格日数据产生的RMSE、MAE和MAPE值均最大,分别为1.356 8、1.041 5和1.853 3;其他LSTM模型预测产生的RMSE、MAE和MAPE值介于上述LSTM预测模型之间。
表3 后六个月原油价格日数据预测的评价指标对比
综合比较上述三组实验产生的对原油价格日数据的预测结果(见表4),发现利用前六个月原油价格日数据预测后一个月的原油价格日数据产生的RMSE、MAE和MAPE值最大,分别为1.674 6、1.386 2和2.714 4,而利用前二十四个月原油价格日数据预测后三个月的原油价格日数据产生的RMSE、MAE和MAPE值最小,分别为0.744 5、0.508 3和0.938 8。同时比较图3和图4,发现利用前二十四个月原油价格日数据构建的LSTM模型在预测后三个月的原油价格日数据时,产生的预测值曲线与真实值曲线最为接近,而利用前六个月原油价格日数据构建的LSTM模型在预测后一个月的原油价格日数据时,产生的预测值曲线与真实值曲线偏离最远。
表4 三组实验中原油价格日数据预测的评价指标比较
3 结束语
(1)为深入挖掘蕴藏于原油价格日数据中的动态变化模式,进而全面掌握原油价格日数据的动态变化特征,该文把LSTM神经网络引入到原油价格日数据短期预测中。
(2)利用LSTM神经网络,以美国WTI 2016年1月1日到2019年6月30日的现货价格日数据为研究对象,共设计三组实验进行原油价格日数据的短期预测研究。最终实验表明利用前二十四个月的原油价格日数据预测后三个月的原油价格日数据的评估结果最好,利用前六个月的原油价格日数据预测后一个月的原油价格日数据的评估结果最差。
(3)国际上的原油定价机制非常复杂,而且原油价格经常会受到某些突发政治、经济事件的影响,所以原油价格的预测难度非常大。该文仅从机器学习的角度把原油价格数据当作时间序列进行预测,因此具有一定的局限性。在实际工作中,还需利用多种技术手段,结合多种信息来对原油价格变化进行综合研究。