本发明属于金融时间序列数据处理领域,更具体地,涉及一种基于长短记忆网络与深度数据清洗的金融时间序列预测方法。
背景技术:
在全球经济、金融一体化的今天,金融市场不断呈现出很多经典金融理论无力解释的复杂现象,主要表现为:金融市场不再是有效市场假说描述下的理想市场,金融市场呈现出的高智能性、强相关性、紧耦合性使它成为一个复杂的非线性动力系统。构建预测模型对这样一个复杂的非线性动力系统进行描述,揭示金融时间序列运行的内在规律,并在世人面前展示它的演化机制,方便人们防范金融风险、管理市场和监督市场,毫无疑问都具有重大的现实意义和理论价值。
金融时间序列是属于时间序列数据的一种,具有很强的时间性,数据前后具有很强的依赖性,且无法调整顺序,一般都是二维数据。现有的金融时间序列分析大多只考虑分析收盘价,但是股指每天都在最高价和最低价之间振荡,如果只分析收盘价,就丢失了很多有用的数据信息,这会造成预测的信息不全面,不能满足市场投资者的要求。这就要求需要对原始的金融数据进行深度的清洗后抽取更为有效的特征,完善预测模型。
受市场噪声和政策易变特征的影响,股票市场预测通常被认为是金融时间序列预测中最具挑战性的问题之一。如何准确预测股票走势仍然是经济、社会领域中的一个悬而未决的问题。在过去的几十年中,机器学习模型,例如人工神经网络(anns)和支持向量回归(svr),已被广泛应用于股票走势预测,并获得一定的预测成果。
考虑到金融时间序列特别是股票时间序列的复杂性,将深度学习与金融市场预测相结合被认为是金融领域发展的重大趋势之一。然而,这个领域仍然处于探索的初期阶段。
目前金融预测研究中广泛使用三种主要的深度学习方法,包括卷积神经网络(cnn),深信念网络(dbn)和堆叠自动编码器(sae)。深度学习应用于金融的相关工作主要集中于前两种,而对于堆叠自动编码器方法是否可以应用于金融市场预测,很少有人研究该领域的相关问题。
技术实现要素:
针对现有技术的缺陷,本发明提供了一种基于长短记忆网络与深度数据清洗的金融时间序列预测方法,其目的在于通过将堆叠自动编码器和长短期记忆网络结合并应用于股票价格预测来提高金融预测的速度和准确性。
本发明提供了一种基于长短记忆网络与深度数据清洗的金融时间序列预测方法,包括下述步骤:
(1)采用窗口宽度为w的滑动窗口实时截取股票金融时间序列数据,并对截取的数据进行经验模态分解后获得本征模态函数序列;
(2)采用降维处理对本征模态函数序列中的冗余数据进行压缩;
(3)采用堆叠自动编码器对降维得到的数据进行无监督学习,获得金融时间序列的深层特征;
(4)将金融时间序列的深层特征按照比例分为训练集、验证集和测试集,并采用训练集对时间循环神经网络模型进行训练后获得训练好的时间循环神经网络模型;
(5)根据训练好的时间循环神经网络模型对金融时间序列进行预测。
更进一步地,步骤(1)中,股票金融时间序列数据为:,f(t)=(f.o(t),f.c(t),f.h(t),f.l(t))其中f.o(t),f.c(t),f.h(t),f.l(t)分别表示交易日当天的开盘价、收盘价、最高价和最低价。
更进一步地,对截取的数据进行经验模态分解后获得本征模态函数序列具体包括:
获取股票金融时间序列f(t)所有的极大值点,并采用三次样条插值函数拟合形成原数据的上包络线;
获取股票金融时间序列f(t)所有的极小值点,并将所有的极小值点通过三次样条插值函数拟合形成数据的下包络线;
获得所述上包络线和所述下包络线的均值m,并将原数据序列f(t)减去包络的平均值m后获得新的数据序列h=f(t)-m;
判断新的数据序列h是否还存在负的局部极大值和正的局部极小值,若是,则通过数据的特征时间尺度来获得本征波动模式并对新的数据序列h继续进行分解;若否,则新的数据序列为一个本征模函数。
更进一步地,步骤(2)中,所述降维处理后,原m个本征模态函数序列简化成为n个相对独立的主成分,其中n<m。
更进一步地,步骤(4)中,将金融时间序列的深层特征按照80%,10%,10%的比例分为训练集、验证集和测试集.
更进一步地,步骤(4)中,使用长短期记忆网络对金融时间序列数据进行正向传播计算后获得输出值与检验值之间的误差;
当所述误差不满足收敛条件时,利用反向传播算法对网络参数进行更新,直到误差满足收敛条件后输出训练好的时间循环神经网络模型。
本发明还提供了一种基于长短记忆网络与深度数据清洗的金融时间序列预测装置,包括:
数据截取模块,采用窗口宽度为w的滑动窗口实时截取股票金融时间序列数据;
分解模块,用于对截取的数据进行经验模态分解后获得本征模态函数序列;
降维模块,用于对本征模态函数序列中的冗余数据进行压缩;
堆叠自动编码器,用于对降维得到的数据进行无监督学习,获得金融时间序列的深层特征;
时间循环神经网络模型获取模块,用于将金融时间序列的深层特征按照比例分为训练集、验证集和测试集,并采用训练集对时间循环神经网络模型进行训练后获得训练好的时间循环神经网络模型;
预测模块,用于根据训练好的时间循环神经网络模型对金融时间序列进行预测。
本发明还提供了一种服务器,服务器上设置上述的基于长短记忆网络与深度数据清洗的金融时间序列预测方法。
本发明采用emd分解算法以适应金融数据的非线性、随机性的特征,可解决金融预测问题;然后采用pca对imf分量降维,提取最有效的数据信息以降低噪声扰动,降维过程有效地减少了冗余数据,提高了模型的响应速度。降维得到的数据输入堆叠自动编码器,sae主要作用是通过无监督学习来获取金融时间序列的深层特征,最后分类得到的数据输入lstm模型训练,这样发挥了长短记忆网络适应范围广和预测性能好的优势。因此,本发明提供的方法既保留了emd分解算法,lstm网络模型的优点;又通过pca降维,sae训练提高了模型响应速度,兼顾了金融预测快速和准确的要求。
附图说明
图1是一个单层自动编码器(singlelayerautoencoder.)的流程图;
图2是5层堆叠自动编码器;
图3是lstm的内部处理器和三重门(xt与ht分别代表t时刻的输入与输出矩阵);
图4是基于深度数据清洗和lstm的金融时间序列预测方法流程图;
图5是通过滑动窗口提取数据的示意图,表示从t1时刻到tn时刻窗口的滑动情况;
图6是emd筛选过程流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
深度学习方法在金融方面特别是股票预测领域的应用受到了投资者和研究人员的极大关注。基于股票交易数据深度清洗和整合,多因子变量的降维处理,以提供新的特征维度;最新最热的深度学习方法如何应用与股票价格预测两个问题,本发明提出了新的解决方案。
本发明针对数据整合和清洗问题,本发明引入基于金融时间序列特殊经验模态分解(financialtimeseriesempiricalmodedecomposition,fts-emd),考虑同时将最高价和最低价也纳入到输入输出之中。通过同时分析股指的收盘价、最高价和最低价,从而更好地把握股票指数这一区间时间序列的波动情况及其走势。
经验模态分解(empiricalmodedecomposition,emd)是来自nasa的黄锷等于2000年左右提出一种新的信号分析方法。经验模态分解方法无需提前设定基函数,按照时间序列自身的尺度特征分解时间序列。而应用傅里叶变换时,谐波基函数需要预先设定,小波变换需要预先设定小波基函数。emd方法在傅里叶变换和小波变换的基础上进一步改进了分解后时间序列的局部特征,是一种更有效的数据挖掘预处理算法。由于经验模态分解方法具有这些处理数据的良好特性,任何类型的信号理论上都可以用经验模态方法分解,因而对非线性非平稳多尺度特征的数据进行信号处理具有非常明显的优势。所以,经验模态分解方法提出之后不久就迅速有效地应用到多个工程领域中。而emd在金融时间序列中的应用称之为基于金融时间序列特殊经验模态分解(financialtimeseriesempiricalmodedecomposition,fts-emd)。
其次,使用emd技术分解后得到很多具有重叠信息的本征模态函数(intrinsicmodefunction,imf)序列,必须对冗余的数据降维。本发明使用主成分分析(principalcomponentanalysis,pca)算法降维,将降维后的几个主成分输入后续模块以实现组合预测。
主成分分析是一种多元统计方法,该算法的核心思想是降维,通过该算法可以从多个相关的变量中提取少数几个相互独立的主成分,这几个相互独立的主成分含有原始信号大部分信息。原始数据之间的内在结构可以通过主成分分析得到,并且分析结果具有较高的可靠性和客观性。主成分分析已广泛应用于各个领域,如经济学中对区域经济效益的评价、企业客户流失的预测、企业物流绩效分析、生物学中蛋白质质谱图像识别及中药中微量元素分析等。
本发明针对深度学习方法应用问题,本发明将堆叠自动编码器(sae)和长短期记忆网络(lstm)应用用于股票价格预测。
深度学习的优势在于其能够逐层地学习原始数据的多种表达方式。每一层都以前一层的表达特征为基础,抽取出更加抽象,更加适合复杂场景的特征,然后做一些分类等任务。
堆叠自动编码器(stackedautoencoder,sae)的原理可通过图1来理解,图1是一个单层自动编码器(singlelayerautoencoder.)的流程图,它表示一个三层的神经网络:第一层和第三层分别为输入层(inputlayer)和重构层(reconstructionlayer),他们都包含k个单元。第二层是具有n个单元的隐藏层(hiddenlayer),为这个单层sae生成深层特征。sae通过在重建x’,获取输入x中的隐藏特征a(x)。其中,w1和w2是隐藏层和重建层中各单元的权重,b1和b2分别是隐藏层和重建层的偏差。输入层到隐藏层,隐藏层到重建层的映射可以用式1和式2来表示:
a(x)=f(w1x+b1)……(1)
x'=f(w2a(x)+b2)……(2)
而堆叠自动编码器则是由一系列的单层自动编码器组成,图2是一个5层的sae,它是由4个单层自动编码器构建而成,单层自动编码器将输入的时间序列变量映射到第一个隐藏变量向量。在训练第一单层自动编码器之后,忽略重构层,保留隐藏层作为第二单层自动编码器的输入层。一般来说,后续自动编码器的输入层是前一个自动编码器的隐藏层。
sae的主要作用是通过无监督学习来获取金融时间序列的深层特征。简而言之,它是由多个单层自动编码器组成的神经网络,其中每层的输出特征作为下一层的输入参数。通过最小化输出数据和输入数据之间的误差,依次对每个单层自动编码器进行无监督训练。
另一个主要使用的深度学习方法为长短期记忆网络(longshort-termmemory,lstm)。lstm是一种时间循环神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。lstm已经在科技领域有了多种应用。基于lstm的系统可以学习翻译语言、控制机器人、图像分析、文档摘要、语音识别图像识别、手写识别、控制聊天机器人等,本发明将lstm使用与股票预测。
lstm属于递归神经网络(rnn),lstm与rnn最主要的区别,在于它在算法中加入了一个判断信息有用与否的“处理器”,这个处理器作用的结构被称为cell。
一个cell当中被放置了三扇门,分别叫做输入门、遗忘门和输出门。一个信息进入lstm的网络当中,可以根据规则来判断是否有用。只有符合算法认证的信息才会留下,不符的信息则通过遗忘门被遗忘。
lstm中一进二出的工作原理如图3所示,其在反复运算下解决神经网络中长期存在的问题。分析证明,lstm是解决长序依赖问题的有效技术,并且这种技术的普适性非常高,导致带来的可能性变化也很多。各研究者在lstm提出了各种新的版本,这就使得lstm及其升级版本有着极为广泛的应用领域。
本发明属于金融时间序列数据处理领域,提出了基于深度数据清洗和深度学习模型相结合的金融时间序列预测的模型方法、服务器及装置。该方法主要用于股票预测,共包括三个阶段,首先使用金融时间序列特殊经验模态分解(fts-emd)分解股票价格时间序列以消除噪声,同时使用pca对冗余数据进行降维;其次,使用sae生成用于预测股票价格的深层次的高级特征;最后使用lstm对时间序列数据进行预测。
本发明采用emd分解算法以适应金融数据的非线性、随机性的特征,可解决金融预测问题;然后采用pca对imf分量降维,提取最有效的数据信息以降低噪声扰动,降维过程有效地减少了冗余数据,提高了模型的响应速度。降维得到的数据输入堆叠自动编码器,sae主要作用是通过无监督学习来获取金融时间序列的深层特征,最后分类得到的数据输入lstm模型训练,这样发挥了长短记忆网络适应范围广和预测性能好的优势。因此,本发明提供的方法既保留了emd分解算法,lstm网络模型的优点;又通过pca降维,sae训练提高了模型响应速度,兼顾了金融预测快速和准确的要求,从理论上讲本发明提供模型是一种更为理想的预测模型。
本发明基于分解-重构-综合的思想,将emd、pca降维、堆叠自动编码器与lstm有机地结合在一起构成一个组合预测模型方法。图4示出了本发明实施例提供的基于深度数据清洗和lstm的金融时间序列预测方法流程,具体包括:
(1)用一个恰当长度窗口滚动截取数据,将截取的数据分别用emd算法分解成从高频到低频的imf分量。
快照窗口、界标窗口、滑动窗口是数据挖掘基本的三类窗口模型,本发明使用的数据流处理技术为滑动窗口,由于数据流不断有新的数据产生,随着时间推移新数据依次经过窗口,预测模型处理的数据集合就是该时刻出现在窗口内的数据。滑动窗口模型假设新数据不断进入窗口,窗口中的数据也不断更新。本发明提出了使用一个有适当窗口宽度w的滑动窗口截取数据;其中,w的取值根据预测目的进行选取,一般为t+1,t为股票换手的周期,如果换手周期为5天(交易日),则w=6(交易日);如换手周期为1小时,则w=2小时(交易时间)图5描述了通过滑动窗口提取数据的示意图,表示从t1时刻到tn时刻窗口的滑动情况。
获得的股票金融时间序列数据可以用式3来表示:f(t)=(f.o(t),f.c(t),f.h(t),f.l(t))……(3);
其中f.o(t),f.c(t),f.h(t),f.l(t)分别表示交易日当天的开盘价、收盘价、最高价和最低价。emd分解方法将式3所示的数据分解成有限个imf分量。imf分量的瞬时频率具有物理意义的必要条件是:过零点和极值点的数目是一样的,并且信号关于零均值线局部对称。
分解过程是:找出原数据序列f(t)所有的极大值点并用三次样条插值函数拟合形成原数据的上包络线;同样,找出所有的极小值点,并将所有的极小值点通过三次样条插值函数拟合形成数据的下包络线,上包络线和下包络线的均值记作m,将原数据序列f(t)减去该平均包络m,得到一个新的数据序列h:h=f(t)-m。
由原数据减去包络平均后的新数据,若还存在负的局部极大值和正的局部极小值,说明这还不是一个本征模函数,需要通过数据的特征时间尺度来获得本征波动模式,然后分解数据。整个将一个非线性非平稳信号分解为数目有限的imf分量和一个趋势项过程,称之为筛选。筛选过程可以用图6来表示。
(2)运用主成分分析算法将分解后的imf分量进行降维,压缩冗余数据。
主成分分析利用降维的方法,原来较多的变量由较少的变量代替。而在变量转换过程中,则采用了映射的原理,将较少的综合变量由原有较多属性变量进行线性表示。经过滑动窗口提取数据f(t)后经emd分解得到m个imf序列,本发明中的主成分提取是将滑动窗口每次提取数据后经emd分解产生的imf序列组合成一个矩阵,对这个矩阵进行主成分分析。其目标是借助正交变换使得一组原来相关的imf序列组成的矩阵x转换成为相互独立的矩阵y。
通过降维后,原m个imf序列简化成为n(n<m)个相对独立的主成分,这n个主成分包含了原imf数据中的大部分信息。
(3)降维得到的数据输入堆叠自动编码器,sae通过无监督学习来获取金融时间序列的深层特征。
堆叠自动编码器通过逐层堆叠一系列单层自动编码器(ae)来构造。图2是一个具有5层的sae。再sae中,前ae的隐藏层为后续ae的输入层。通过求解优化函数,使用相同的梯度下降算法逐层训练ae,并将训练好的隐藏层输入到后续的ae中。每个单层ae完成训练后被将被删除。在本发明中,由pca算法分析得到的每日金融序列数据集变量的数量范围是5-10,通过反复训练将隐藏层的单元数量设置为4。深度也是sae中的重要因子,它决定着提取特征的质量。本发明将使用的sae深度设定为5。
(4)将sae序列生成的时间序列数据按照80%,10%,10%的比例分为训练集,验证集和测试集,初始化lstm网络数据,将隐藏层数和延迟数分别设置为5和4。
其中,训练集(估计模型):学习样本数据集,通过匹配一些参数来建立一个分类器。建立一种分类的方式,主要是用来训练模型的。
验证集(确定网络结构或者控制模型复杂程度的参数):对学习出来的模型,调整分类器的参数,如在神经网络中选择隐藏单元数。验证集还用来确定网络结构或者控制模型复杂程度的参数。
测试集(检验最终选择最优的模型的性能如何):主要是测试训练好的模型的分辨能力(识别率等)。
本发明实施例中将训练样本集中的数据分为若干批次,从中随机选取部分批次的数据作为lstm的输入数据,并对网络进行训练。接下来使用lstm对金融时间序列数据进行正向传播计算,得到输出值与检验值之间的误差。判断误差是否满足收敛条件,如不满足,则利用反向传播算法对网络参数进行更新,直到误差满足收敛条件,输出训练好的lstm模型。
(5)将本发明提出的模型方法部署于后端服务器上,通过滑动窗口获取实时的股票时间序列数据,输入服务器后通过模型对股票进行预测。
本发明采用emd分解算法以适应金融数据的非线性、随机性的特征,可解决金融预测问题;然后采用pca对imf分量降维,提取最有效的数据信息以降低噪声扰动,降维过程有效地减少了冗余数据,提高了模型的响应速度。降维得到的数据输入堆叠自动编码器,sae主要作用是通过无监督学习来获取金融时间序列的深层特征,最后分类得到的数据输入lstm模型训练,这样发挥了长短记忆网络适应范围广和预测性能好的优势。因此,本发明提供的方法既保留了emd分解算法,lstm网络模型的优点;又通过pca降维,sae训练提高了模型响应速度,兼顾了金融预测快速和准确的要求,从理论上讲本发明提供模型是一种更为理想的预测模型。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。