python卷积神经网络预测股价_解读:一种基于CNN-LSTM混合神经网络的股价预测模型...

写在前面

下面这篇文章的内容主要是来自发表于2019  IEEE Intl Conf on Dependable, Autonomic and Secure Computing, Intl Conf  on Pervasive Intelligence and Computing, Intl Conf on Cloud and Big  Data Computing, Intl Conf on Cyber Science and Technology Congress  (DASC/PiCom/CBDCom/CyberSciTech)的一篇文章《Multi-factor Based Stock Price Prediction Using Hybrid Neural Networks with Attention Mechanism》。这篇文章提出了一种结合了CNN与LSTM的混合神经网络模型,并引入了注意力机制,将其应用于股价的预测当中,实验验证了提出的模型具有较好的预测效果。原论文在文末进行获取。

1

摘要

由于现实中存在的许多因素,它们都会造成对模型预测精度的影响。因此很难预测诸如股票价格之类的时间序列数据。另外,不同的因素对股票价格的影响可能是线性的或非线性的。因此,提出具有良好效果和泛化能力的股票价格预测模型对研究人员提出了挑战。长短期记忆(LSTM)是递归神经网络(RNN)的一种变体,它可以捕获时间序列在时间上的依赖关系并在时间序列预测上取得了一系列的成果。同样,卷积神经网络(CNN)在多维序列的提取特征方面也很出色。因此,在本文中,作者提出了一种结合多种因素的CNN-LSTM混合神经网络来预测股票价格。除此之外,作者还添加了一种注意力机制来提高CNN-LSTM模型的预测准确性。在实验部分中,作者在两个真实的股票数据集中比较了提出的模型和几种对比方法。结果证实了提出的方法的有效性。

简单概括,这篇文章的主要贡献是:

1)作者考虑了一种基于多种因素(开高低收,成交量以及持仓量)影响的模型来预测股票价格。

2)作者结合CNN和LSTM模型并提出了一种CNN-LSTM混合模型的架构来预测股价。

3)作者引入了一种注意力机制来提高CNN-LSTM模型的可拓展性和预测精度。

4)作者使用两种不同的股票价格数据集进行了实验,结果表明了所提出算法的有效性。

2

模型介绍

在这节内容中,我们将对模型的各个部分进行介绍:

1. 通过CNN进行特征提取

定义一段股票序列为:

其中,每个x是一个m维的向量,这样得到的就是一个r乘m的矩阵形式,因此对于这个矩阵可以通过CNN进行特征提取。文中,通过64个filter来进行特征提取,之后通过Relu函数进行激活,接着通过max-pooling进行池化处理,最后加入了概率为0.3的dropout来防止过拟合。最后输出一段序列作为后面LSTM的输入。

2. 通过LSTM进行时间序列预测

通过CNN进行特征提取可以得到一段具有时间依赖性的序列,之后,它们按照时间顺序输入到LSTM中作为每个time step的输入,其中这个过程以及输入和输出的表示符号如下图所示:

3. 引入Attention机制

Attention机制是深度学习中的一个逐渐被广泛使用的概念。注意力机制自从BERT,Transformer等模型的提出之后,就在机器翻译,语音识别,图像识别领域有了广泛的应用。一般的预测问题中,当面临长序列时,处理一些context中的依赖关系就会陷入瓶颈。一种解决方法就是通过引入Attention机制,其中,Attention机制可以允许模型聚焦关注输入序列中所需要的部分。 引入了Attention机制后的模型,它可以将输入序列中相关部分的作用进行放大,以实现比没有Attention的模型更好的效果。通常,注意力机制的表现形式可以看作是一种加权求和。在本文中,为了提高集成神经网络模型的可扩展性和准确性,将Attention机制进行了引入。

文中,作者将LSTM每个time step的输出,即oi,与一层权重加权求和并通过softmax进行输出得到a作为Attention系数,与输出O加权即得到了Attention value。

最后,通过一层全连接层将Attention value进行映射到输出值,也即是模型的预测值:

4. 模型训练

模型的训练方式比较简单,将LSTM按照seq2seq的方式进行训练,用到了Backpropagation-Through-Time (BPTT)进行误差的反向传递,loss函数即是均方误差,形式如下:

3

实验验证

这部分是对模型的实验验证部分,其中实验数据用到了JQData和平安银行股票价格数据。下图分别展示用了两组数据用于训练和测试的部分,其中蓝色表示训练数据,红色表示测试数据:

其中,训练数据在进行训练之前,需要经过标准化处理,其用到了z-score方法进行标准化:

对比方法用到了三种baseline,分别是SVR,LSTM以及GRU。预测时,模型是通过一个长度为T的滑动窗口的形式进行预测的,最后在测试集计算提出的模型和其他对比模型的MSE指标。下图展现了提出的模型在JQdata数据集中,T为7,14以及30时的测试集预测效果。

下表是在JQdata测试集的MSE结果:

类似的,下面展示的提出的模型在不同时间窗口长度下与对比方法在平安银行测试集中的预测效果以及MSE结果表。

从上面的两组实验中,可以看出提出的模型相比于其他对比方法可以实现较好的预测效果。

4

总结

金融时间序列预测,如股票价格预测,对于投资者尽早对股票做出判断至关重要。通常,影响股价的因素有很多。在这项研究中,作者收集了六个影响因素,即股票的开高低收价格以及成交量和持仓量,以预测股票的收盘价,除此之外,也可以引入其他更有价值的因素。此外,作者通过CNN从两个真实的股票数据集中提取特征,并将CNN与LSTM模型集成在一起,提出了这样的一种预测框架。并且为了提高预测的准确性和可扩展性,注意力机制也被引入其中。实验部分中,提出的模型与SVR,LSTM和GRU模型进行了比较。结果表明,提出的方法具有一定的有效性。

参考文献:

Li C ,  Zhang X ,  Qaosar M , et al. Multi-factor Based Stock Price Prediction Using Hybrid Neural Networks with Attention Mechanism[C]// 2019 IEEE Intl Conf on Dependable, Autonomic and Secure Computing, Intl Conf on Pervasive Intelligence and Computing, Intl Conf on Cloud and Big Data Computing, Intl Conf on Cyber Science and Technology Congres  IEEE, 2019.

关注《人工智能量化实验室》公众号,后台发送036可获取原论文。

了解更多人工智能与量化金融知识

让我知道你在看

你可能感兴趣的:(python卷积神经网络预测股价_解读:一种基于CNN-LSTM混合神经网络的股价预测模型...)