Python股票预测:注意力多层Attention RNN LSTM应用

Attention 机制是一种在神经网络处理序列数据时极为关键的技术,它赋予了模型“聚焦”能力,能够自动评估输入序列中各部分的重要性。

由Kaizong Ye,Weilong Zhang撰写

通过为序列中的每个元素分配不同的权重,Attention 确保网络在处理过程中能够优先关注那些对任务更为关键的部分,从而显著提升模型的预测精度和效果。


当Attention机制与LSTM(长短时记忆网络)相结合时,这一组合展现出了更为强大的序列处理能力。

LSTM本身设计用于捕捉序列中的长期依赖关系,通过其独特的门控机制来控制信息的遗忘与保留。然而,面对极长的序列,LSTM可能会遭遇信息衰减或传递不畅的挑战。此时,Attention机制的引入如同一剂强心针,它允许模型动态地调整对序列不同片段的关注度,确保关键信息得以高效捕捉而不被忽略。


本文分析的数据和代码分享至会员群


作者


因此,Attention + LSTM 的结合不仅解决了LSTM在处理长序列时可能遇到的问题,还通过两者优势互补,极大地增强了模型对复杂序列数据的理解和分析能力,既提升了性能,也优化了计算效率。

股票预测模型使用注意力多层 RNN LSTM

数据准备
首先,我们从CSV文件中读取股票数据,并计算每对相邻交易日之间的对数收益率,假设收益率服从对数正态分布。接着,使用z-score标准化方法将数据映射到均值为0、方差为1的分布上,以减少不同量纲对模型训练的影响。

计算两点之间的对数收益率。假设收益率呈对数正态分布。

使用 zscore 将一个 pandas 系列映射,使其均值为 0,方差为 1,以对数据进行标准化。


视频

LSTM神经网络架构和原理及其在Python中的预测应用

探索见解

去bilibili观看

探索更多视频


视频

LSTM模型原理及其进行股票收盘价的时间序列预测讲解

探索见解

去bilibili观看

探索更多视频


视频

【视频讲解】LSTM模型在中文文本评论情感分析预测应用附代码数据

探索见解

去bilibili观看

探索更多视频

处理所有股票代码以生成数据框

Final = pd.DataFrame()for f in os.listdir(datapath):    filepath = os.path.join(datapath,f)    if filepath.endswith('.csv'):


数据透视

P是每个股票所有条目的扁平化数据框,每行代表一天

mi = P.columns.tolist()

设置目标

为了简化问题,我们将预测目标设定为股票价格的涨跌方向(上涨、下跌或持平),分别用1、-1和0表示。通过计算每日的收益率,我们可以为每个交易日打上相应的标签。

现在我们有了输入和目标,算是有了。InputsDF 包含了我们想要预测的所有输入。Targets DF 包含了每个股票每天的收益率。首先,由于我们没有太多数据,让我们为预测设定一个比每个股票的收益率更简单的目标。

我们将目标标记为上涨(1)、下跌(-1)或持平(0)。顶部图表展示了如果我们每天为每个股票投入 1 美元将会出现的情况。底部图表展示了如果在上涨(1)的日子做多整个股票组合,在下跌(-1)的日子做空,在(0)的日子忽略会产生的结果。您能够看出这是一个具有价值的预测目标。

Labeled['max_return'] = Labeled['class'] * Labeled['return']
Labeled

 

建立基线

为了评估后续模型的性能,我们首先构建了逻辑回归和全连接神经网络作为基线模型。


逻辑回归

from sklearn import linear_modelfrom sklearn.metrics import classification_report,confusion_matrix
logreg = linear_model.LogisticRegression(C=1e5)

基线全连接前馈神经网络

使用TensorFlow构建一个简单的全连接神经网络作为另一个基线。

with tf.Graph().as_default():    model = Model()    input_ = train[0]    target = train[1]    config = tf.ConfigProto()    jit_level = tf.OptimizerOptions.ON_1    config.graph_options.optimizer_options.global_jit_level = jit_level

Res = (1+Result[-test_size:][['return','max_return','nn_ret']]).cumprod()Res[0] =0Res.plot(secondary_y='max_return')

Chemicals-and-capital-markets-1536x1536.jpg

R语言泊松Poisson回归模型分析案例

阅读文章



print(classification_report(Result['class'],Result['mod_nn_prod']))
Result[Result.multi_class==6]['nn_pred'].hist()


随时关注您喜欢的主题


注意力循环神经网络与MultiRNNCell LSTMs

基于TensorFlow,我们构建了一个包含注意力机制的RNN模型,使用LSTM单元作为RNN的基本组件。注意力机制通过赋予不同时间步长不同的权重,帮助模型更好地捕捉关键信息。

在本节中,我们将创建一个能够学习考虑过去情况的 rnn 模型。此模型基于 AttentionCellWrapper,这是在以下https://arxiv.org/pdf/1409.0473v7.pdf 中描述的一种新颖方法,标题为“通过联合学习对齐和翻译的神经机器翻译”

rnn 网络定义

from tensorflow.contrib.layers.python.layers.initializers import xavier_initializer# Parameterslearning_rate = 0.0007display_step = 1logpath = '/tmp/rnn_logs/example'

训练 RNN

# 构建模型并将所有操作封装到作用域中,使# Tensorboard 的图形可视化更方便with tf.Graph().as_default():    model = RNNModel()    input_ = train[0]    target = train[1]# XLA    config = tf.ConfigProto()

RNN 结果

Result['rnn_pred'] = final_predsResult['mod_rnn_prod'] = list(map(lambda x: -1 if x <5 else 0 if x==5 else 1,final_preds))

通过对比基线模型和注意力RNN模型的预测结果,我们发现注意力RNN模型在预测准确率、召回率和F1分数等指标上均有所提升,表明注意力机制有效地帮助模型捕捉到了股票数据中的关键时序特征。

Result[Result.multi_class==6]['rnn_pred'].hist()
<matplotlib.axes._subplots.AxesSubplot at 0x7f86a1938128>

结论

本文提出了一种基于注意力机制的RNN模型用于股票价格预测,并通过实验验证了其有效性。与基线模型相比,该模型在预测性能上取得了显著提升。未来工作可以进一步探索不同注意力机制、优化模型结构以及融合更多外部数据源,以进一步提升预测精度和泛化能力。

参考文献

[1]林杰,康慧琳.基于注意力机制的LSTM股价趋势预测研究[J].上海管理科学.2020,(1).
[2]包振山,郭俊南,谢源,等.基于LSTM-GA的股票价格涨跌预测模型[J].计算机科学.2020,(z1).DOI:10.11896/jsjkx.190900128 .
[3]文宝石,颜七笙.数据多维处理LSTM股票价格预测模型[J].江西科学.2020,(4).DOI:10.13990/j.issn1001-3679.2020.04.001 .
[4]杨青,王晨蔚.基于深度学习LSTM神经网络的全球股票指数预测研究[J].统计研究.2019,(3).DOI:10.19343/j.cnki.11-1302/c.2019.03.006 .
[5]乔若羽.基于神经网络的股票预测模型[J].运筹与管理.2019,(10).DOI:10.12005/orms.2019.0233 .
[6]巴曙松,蒋峰.”违约潮”背景下的信用风险测度研究[J].湖北经济学院学报.2019,(6).DOI:10.3969/j.issn.1672-626x.2019.06.001 .
[7]王理同,薛腾腾,王惠敏,等.基于循环神经网络的股指价格预测研究[J].浙江工业大学学报.2019,(2).DOI:10.3969/j.issn.1006-4303.2019.02.013 .
[8]王卫红,卓鹏宇.基于PCA-FOA-SVR的股票价格预测研究[J].浙江工业大学学报.2016,(4).DOI:10.3969/j.issn.1006-4303.2016.04.010 .
[9]许兴军,颜钢锋.基于BP神经网络的股价趋势分析[J].浙江金融.2011,(11).DOI:10.3969/j.issn.1005-0167.2011.11.015 .
[10]韦艳华,张世英.金融市场的相关性分析–Copula-GARCH模型及其应用[J].系统工程.2004,(4).DOI:10.3969/j.issn.1001-4098.2004.04.002 .


每日分享最新报告和数据资料至会员群

关于会员群

  • 会员群主要以数据研究、报告分享、数据工具讨论为主;
  • 加入后免费阅读、下载相关数据内容,并同步海内外优质数据文档;
  • 老用户可九折续费。
  • 提供报告PDF代找服务

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds