Python环境下基于VMD-Attention-LSTM模型收盘价预测深度学习模型

金融时间序列是一种时间序列数据,对金融时间序 列进行预测,无论是对国家经济宏观调控还是个人经济改善都有非常实用的参考价值,金融时间序列预测一直以来是计算机科学和金融领域的研究热点之一。

金融时间序列数据与人类社会活动密切相关,具有信噪比低、非平稳、非线性等特点。预测时会导致预测精度普遍不高,因此国内外学者对此进行了大量研究, 提出了包括随机游走模型、自回归滑动平均模型、以及广义自回归条件异方差模型等经典统计学方法,但此类方法对时间序列数据要求高,并且不能表示非线性关系。因此得出的预测结果不太理想。

变分模态分解 (VMD) 是Dragomiretskiy 将经验模态分解加以改进,提出的一种复杂信号分解估计方法。此方法依照预先设置好的模态数将非平稳信号分解成一系列固定带宽的子信号,每个子信号均有不一样的中心频率。通过使用交替方向乘子法,迭代更新模 态和信号的中心频率,一步一步将不同模态解调至相对应基频带上,提取不同模态和其对应的中心频率,最终得出具有不同中心频率的各个分量。

循环神经网络(RNN)具有较强的短期记忆能力, 一般适用于时间序列相关问题。RNN中关键点在于可以利用历史信息帮助当前的决策,理论上能够有效解决时间序列的长期依赖问题。循环神经网络中的参数通过随时间反向传播算法来学习,而当输入序列较长时,会产生梯度爆炸或梯度消失问题。

LSTM是一种经过特殊处理的循环神经网络,它能够很好的学习和处理信息的长短期依赖关系。经过之后许多研究者的对其不断推广和提炼, LSTM模型普遍用于手写识别、自动驾驶、机器控制等领域。针对金融时间序列的非线性、信噪比低不易分离、 非平稳、长依赖等特性,提出了基于变分模态分解 (VMD) 的Attention-LSTM 模 型, 在LSTM 模 型的基础上引入Attention 机制突出重要模态对原始序列的影响力,从而建立一个更加有效的金融时间序列预测模型。

本项目为:Python环境下基于VMD-Attention-LSTM模型收盘价预测深度学习模型。

程序运行环境为Python,执行基于VMD-Attention-LSTM模型收盘价预测。

所用模块如下:

import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
import models.vmd_attention_lstm as mv
import utilt.VMD as vmdzi

原数据分为全国七个碳交易试点日交易价格数据(北京、上海、深圳、湖北、广东、天降、重庆、福建)与全国数据,因为福建省的数据时间与其他数据时间差距较大所以舍弃,全国数据过于笼统,不符合我们预测湖北收盘价的需求,我们也将其舍弃,并取出剩下各省份的收盘价整理出一份《处理后的数据表.CSV》。因为使用的模型主要为Attention-LSTM,参数设计较大,我们需要更多的数据量,我们在原数据处理上,我们以1135条数据量的北京市收盘价为基准特征,将北京、深圳、广东、上海、湖北的数据组成输入VMD分解的特征(1135组*5个每组一个时间步,共5675个数据),此步骤主要是避免因为其他省份数据组合后数据过少与选取的数据中出现Nan值。

模型如下:

Python环境下基于VMD-Attention-LSTM模型收盘价预测深度学习模型_第1张图片

结果如下:

Python环境下基于VMD-Attention-LSTM模型收盘价预测深度学习模型_第2张图片 

算法可迁移至金融时间序列,地震/微震信号,机械振动信号,声发射信号,电压/电流信号,语音信号,声信号,生理信号(ECG,EEG,EMG)等一维时间序列信号。

代码见评论区。

 

你可能感兴趣的:(深度学习,python,lstm)