当前位置:首页 期刊杂志

基于LSTM网络的股价预测研究

时间:2024-05-04

黄玉成,方伟伟

(南阳理工学院信息工程学院,南阳 473000)

0 引言

股票的预测一直是金融领域的研究热点,其变化趋势甚至被比作为金融领域的“天气表”。随着经济市场的高速发展以及人们投资意识不断增强,越来越多的人涌入股票市场,希望能够从中大赚一笔。然而,股票市场虽然机遇很大,但伴随的不确定性和风险也很大,因而股票价格变化的趋势成为了投资者们关注的焦点。

预测股票价格的波动趋势的模型随着科学技术的进步也越来越多,其发展过程主要为:传统的时间序列模型、机器学习模型以及深度学习神经网络模型。在早期的股票市场中,股票价格趋势的预测通常是使用传统的时间序列模型来进行的,然而时间序列高噪声问题以及非线性特征,导致该模型预测的股票价格趋势的精准度并不高。随着机器学习技术的出现,许多学者们将机器学习模型应用到股票价格的预测中,发现其预测的结果比传统时间序列模型的预测结果的精准度更高,但传统的机器学习算法,需要构建复杂的、有效的学习模型,在数据预处理阶段会消耗大量的工作和时间。为解决这些问题,学者们又开始研究方向引入到深度学习神经网络领域中,通过大量的研究预测,发现RNN神经网络模型的衍生模型——LSTM神经网络模型的效果最佳,能够很好的解决梯度消失以及无法得到最优解问题,从而实现数据的时间序列性与非线性之间的兼顾问题。因此在处理股票的时间序列数据上具有一定的优势,能够很好的拟合出股票价格的波动规律,从而一定程度上反应出股票价格的波动趋势。本次研究利用LSTM神经网络模型对数据集为代号002的上证股票进行预测研究分析。

1 LSTM原理

RNN网络的核心思想是利用内部多循环回路保证数据的持续传递,该网络更新权重的方式为反向传播的方式,然而该网络模型使用的激活函数(σ)为具有饱和性的sigmoid函数,导致当传播到激活函数时,斜率会变得极大或极小,从而出现梯度爆炸或梯度消失的问题,以至于预测能力无法提升。为了解决RRN网络对于数据的长期依赖问题,Hochreiter和Schmidhuber等人于1997年在文 献[3]中提 出了LSTM神经 网络模型,该模型引入了门来构建特殊的记忆神经单元,其目的是为了更好的解决时间序列数据在训练过程中所带来的梯度消失和梯度爆炸等一系列问题。LSTM结构的每个神经网络层中都存在如图1所示的三种门结构,它们分别是输出门ot、遗忘门f t以及输入门i t,这些门结构利用递归方程不断更新细胞状态C t的同时,还激活从输入门到输出门的映射。

图1 LSTM结构

遗忘门的值是通过t时刻的输入xt与t-1时刻的输出h t-1共同确定的,采用的激活函数为sigmoid函数,其表达是为:

当得到了遗忘门的值后,使用输入门,将所得到的新的信息添加到状态中,从而实现替换以往的旧信息,其表达式为:

令i t与C͂t相乘,在将其加上遗忘门的信息可获得新的C t,其表达是为:

输出门的结果是经过遗忘门与输入门处理后的最新的状态C,和t-1时刻的输出值h t-1及当前t时刻的输入值X t共同确定,此时的激活函数σ不再是sigmoid函数,而是tanh函数,从而实现从输出门输出所需要的信息。

遗忘门f t决定神经单元遗弃哪些信息,该门层通过读取ht-1和xt的状态,就能够从遗忘门中输出一个0~1之间的值,0代表完全舍弃,而1代表完全保留。神经单元要更新的值由输入门i t决定,它将遗忘门所筛选完的信息中,利用tanh函数来进行对神经单元状态的更新。最终输出门ot决定神经单元输出的状态,该状态先通用sigmoid层决定要输出的神经单元状态,根据这些状态,将其利用tanh函数进行压缩在-1到1之间。

本文所选择用来进行股票价格的预测的模型是LSTM神经网络模型,是因为该模型能够解决用来预测的数据的长期依赖特性,进而达到提高股票价格预测的精准度的目的。

2 实验研究

2.1 数据集选取

本文所采用表1所示的数据集进行预测,此数据集包含了8列数据,分别为:收盘价(close)、开盘价(open)、最高价(high)、最低价(low)、成交量(volume)、变动价(price_change)、涨跌值(p_change)、交易日期(date)。该数据集记录了1998年1月5日至2020年6月2日的股票数据,共5430条数据。

表1 代号为002的上证股票数据集

模型的训练集数据与测试集数据的大小、输入向量的选择等都能够影响股票价格预测的精准度。本文选择数据集表1作为输入向量,并将代号为002的上证股票数据集前80%数据作为训练集训练模型,随时将代号为002的上证股票数据集剩下的20%数据作为测试集来进行验证该模型的泛化能力。

2.2 构建LSTM模型

本文基于前i(i=5、10、50、100)天的特征向量对第i+1天的收盘价进行预测,时间序列长度为i,通过进行如图2所示的基于LSTM的股票预测流程图操作后,得到预测结果。在LSTM神经网络中,隐藏层的神经元的个数的选择也是关键,当神经元的数量过少时,会呈现出欠拟合的情况;而当神经元的数量过多时,却会呈现出过拟合的情况,因此本文采用的模型通过大量的实验测试,最终发现隐藏层神经元的个数选择为32个最佳。与此同时,为了提高目标函数的收敛效果,设置的学习率的最佳参数为0.001。除此之外,还需设置训练轮数为100轮,L S T M层的层数为2层。

图2 基于LSTM的股票预测流程

由于L S T M网络是一种特殊的RNN网络,因此LSTM网络并不需要进行分层设计,直接将上述参数引进到一个LSTM结构中即可,但LSTM使用的激活函数为tanh函数。本文的模型的LSTM隐藏层展开为30个节点,Dense输出层同样输出的是二维向量,并且是通过so ftmax函数对输出向量进行处理。采取的循环次数为300次,不采用小样本训练,同时采用Adam算法作为优化器来进行对LSTM模型的优化。此外为稳定模型的训练,初始化权重参数为1×108,初始化偏置参数为0,不采用随机打散的处理方式。

2.3 股票价格预测结果误差评估准则

利用平均绝对误差(MAE)以及预测数据和真实数据之间的相关系数(ρ)作为预测结果的评估标准,平均绝对误差值越小,且预测数据和真实数据之间的相关系数越大,则表明预测结果的误差越小。

平均绝对误差计算公式为:

相关系数计算公式为:

其中,测试数据集的数量采用n来表示;第i样本点的真实值采用y i来表示;第i样本点的模型预测值采用来表示;样本真实值采用Y表示;模型预测值用̂来表示,C O V(Y,̂)表示Y与̂的协方差;V AR(Y)表示Y的方差;VAR(̂)表示的方差。

3 实验结果

在利用LSTM模型进行对股票的预测中,为了避免时间序列长度的不合适而导致预测结果的精确度下降,进行对不同时间序列长度值(i=0.001n、0.002n、0.01n、0.02n)的神经网络模型的训练。当选择时间序列长度为5的神经网络模型来进行预测未来60天的股价情况,如图3所示。其中,纵坐标是当天收盘价相对于历史最低价的涨幅,与收盘价一一对应,图像的涨跌与股价涨跌一一对应。

图3 基于前5天的特征向量预测第6天

当选择时间序列长度为10的神经网络模型来进行预测未来60天的股价情况,如图4所示。

图4 基于前10天的特征向量预测第11天的收盘价

当选择时间序列长度为50的神经网络模型来进行预测未来60天的股价情况,如图5所示。

图5 基于前50天的特征向量预测第51天的收盘价

当选择时间序列长度为100的神经网络模型来进行预测未来60天的股价情况,如图6所示。

图6 基于前60天的特征向量预测第61天的收盘

通过表2所示的不同长度的时间序列与平均绝对误差、相关系数的关系可得,基于LSTM的股票预测的模型选用的时间序列长度的最合适的值为i=0.01n(50)天。

表2 时间序列长度不同的模型在测试集上的评价指标

由图7可以观察出,利用LSTM模型预测的对数据集为代号002的上证股票的预测的趋势与真实的趋势拟合效果比较好。由实验结果可知,本文所建立的LSTM模型在时间序列长度为(i=0.01n)对股票价格的预测有较好的预测效果。

图7 代号为002的上证股票价格的实际预测结果及局部放大结果

4 结语

本文使用LSTM神经网络模型完成对未来股票价格的预测,在实验研究中发现如果时间序列长度值过小,则预测的结果的精确度会下降,而时间序列长度值过大则会增大训练数据的冗余,浪费空间等,因此合适的时间序列长度值对LSTM神经网络模型的预测的精准度至关重要,通过大量数据证明,时间序列长度值为i=0.01n左右最为合适。从预测结果可以看出,本文应用的LSTM模型可以呈现出较好的预测效果。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!