Press "Enter" to skip to content

基于神经网络算法LSTM模型对股票指数进行预测

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

神经网络算法对股票的预测

 

在复杂的股票市场环境中,神经网络算法在股票预测中已经得到了广泛使用,这是由于其自身具有较好的学习性能和高度的模拟能力,相对于传统的经济计量学方法,神经网络在金融时间序列预测方面更具优势。

 

近年来,国内外学者对于在股票市场的神经网络预测问题做了很多的研究工作。Shapiro…将神经网络、遗传算法和粗糙集组合成集成算法对股票市场价格趋势进行综合预测,但是文中没有作对比验证,而且模型中没有考虑到金融时间序列的依赖关系,预测结果并不客观;Ozbayoglu 等旧 1 通过对比人工神经网络和贝叶斯方法在金融市场的预测性能,发现这两种算法均有效,但是人工神经网络的预测效果更佳;Bildirici 等”1 将 BP 神经网络与条件异方差模型相结合,对 1987 年到 2008 年的伊斯坦布尔市场的股票数据做训练及预测,实证表明,这种结合模型的预测精度更加可靠,但是面对海量数据,此模型提取特征比较困难;Hammda 等 H1 采用多层 BP 神经网络对约旦股票市场的指数价格的趋势做预测,研究发现多层 BP 神经网络具有预测精度高、泛化能力强的优点,但文中没有解决 BP 神经网络容易陷入局部最小的问题;,得出该组合模型预测精度较高。考虑到股票市场的数据繁杂及其具有长期依赖性等问题以上模型在时间序列预测上还存在一些问题,而递归神经网络 RNN(Recurrent Neural Networks)可以改善这些问题。孙瑞奇 ¨4 J 将 BP 神经网络、RNN 和 LSTM 模型分别对美股和上证指数做预测,实验得出 LSTM 模型的预测精度最高;金雪军等 ¨ 纠采用深度 LSTM 模型研究美国的扩张性货币政策对中国膨胀的影响。综上可知,利用 LSTM 模型对于股票价格预测的研究极少。

 

本文针对 RNN 存在的梯度问题和神经网络的过拟合问题,提出 LSTM 模型对股票指数进行预测。通过修改 LSTM 模型的目标函数,从而提高了 LSTM 模型对金融时间序列预测性能。LSTM 模型误差低,对股票指数有更佳的预测效果。

 

模型构建

 

LSTM 神经元结构

 

LSTM 神经网络最早由 Hochreiter 和 Schmidhuber(1997)提出,由于能更好地发现长期依赖关系而被广泛用于处理序列信息,如语音识别、机器翻译等。LSTM 每个神经元的结构见图 l(Grave,2012)013],其内部包括一个记忆储存(Cell)和三个门控(Gates)设置,Cell 记录神经元状态,输人门(Input Gate)和输出门(Output Gate)用来接收、输出参数和修正参数,遗忘门(Forget Gate)用来控制上一单元状态的被遗忘程度。

 

 

LSTM 神经网络的构建

 

深层神经网络存在两种可能影响模型训练效果的问题,一是梯度消失导致神经网络难以收敛,二是过拟合导致测试集失效。研究表明,Batch.Normalization(BN)能有效解决梯度消失问题,Dropout 技术通过阻止神经元共适应能够缓解过拟合问题。因此,本文在设计 LSTM 神经网络时特别添加了 Dropout 层以优化神经网络结构。具体来说,本文 LSTM 神经网络的主体结构包括 2 层 LSTM 神经层和一层全连接层,第一个 LSTM 层包括 64 个节点,第二个 LSTM 层 16 个节点,其后加人 Dropout 层并将失活概率设为 0.2。本文构建的深层 LSTM 神经网络计算图结构见图 2,虚线方框内表示神经网络结构。

 

 

训练方法和损失函数

 

本文采用 Mini—Batch 方法训练 LSTM 网络。本文目标是预测股指未来收盘价,故选取均方误差(Mean Square Error,MsE)预测损失。优化器方面,本文采用 Adam 优化器(Adaptive MomentEstimation,适应性矩估计)① 进行优化训练。Adam 优化器由 Kingma 和 Sa(2015)…1 提出,是目前最常用的算法(Sabour 等 2017‘151;Wang 等 2018‘怕 1)。与其他自适应学习率算法相比,Adam 算法收敛速度更快、学习效果更为有效。本文基于 Python 语言环境,并以 PyTorch 作为深度学习框架进行训练及预测。最后求训练集和测试集的 MAE 平均绝对误差/MSE 最小均方误差/MAPE 百分比误差绝对值的平均值。

 

 

MAPE:范围[0,+∞),MAPE 为0%表示完美模型,MAPE 大于 100 %则表示劣质模型。MAPE 的值越小,说明预测模型拥有更好的精确度.

 

 

本文针对 6322 组数据,即包括股票的开盘价格,收盘价,最低价和最高价四种数据。将收盘价作为输出变量,其他 5 个指标作为模型的输入变量。

 

在模型拟合数据之前,使用 Python3.7 中的 sklearn 函数库对数据集做转换处理。首先,为了使时间序列数据趋于稳定,对数据做滞后一次差分处理;然后将预测收盘价转化为有监督学习问题,也就是将数据组合成输入和输出模式,将上次时间步长的观测值用作预测当前时间步长观测值的输入;最后对原始数据进行归一化处理,将其转换到[0,1]之间。

 

将处理后的数据按顺序分成训练集和测试集,其中前 5422 个数据做训练集,后 1000 个数据做测试集,训练模型 50 次 epoch,在数据测试完成之后,将预测值做反转换处理,以便计算预测性能指标。

 

个的 LSTM——遗忘层——16 个 LSTM——遗忘层——4 层全连接层

 

 

MAE 平均绝对误差/MSE 最小均方误差/MAPE 百分比误差绝对值的平均值

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。