一种基于模糊聚类算法改进LSTM的预测方法与流程

文档序号:18902308发布日期:2019-10-18 22:06阅读:2165来源:国知局
一种基于模糊聚类算法改进LSTM的预测方法与流程

本发明涉及股票价格预测,特别涉及一种基于模糊聚类算法改进lstm的预测方法。



背景技术:

股票价格预测是根据股票行情,包括股价历史交易信息以及股票相关的市场信息的发展对未来股票价格涨跌的预测行为。由于股票市场在商业和金融领域的重要意义,股票价格预测一直以来都吸引着广泛的关注。

由于股票本身的波动性和不确定性,股票价格波动是一个高度复杂的非线性系统,其股票的调整不是按照均匀的时间过程推进,具有自身的推进过程,对于股票价格进行预测从而更好的进行选股和择时以获得最大收益也成为了诸多研究者密切关注的领域。当前较为常用的股票预测方法包括传统机器学习方法以及金融时间序列分析,如支持向量机、决策树、回归分析、arma模型等多种方法。这类算法可解释性强,但人工参数过多,过拟合和欠拟合等问题一直存在与此类算法之中,且此类算法由于其本身结构简单,往往一个模型只能针对单只股票建模,不能分析多支股票之间的相互关系,更不能分析市场中存在的消息面驱动因素带来的影响。近些年兴起的深度学习方法虽然在建模的可解释性上要弱于传统机器学习,但其本身模仿人脑神经元的结构使得它可以出色地完成各种复杂的分析任务,这当中就包含多股票的联合分析以及文本和股票信息的融合决策等。通过深度学习模型来预测股票走势其本身具有两大优势:一是模型中人工参数往往不直接影响预测效果,减少了人为因素对预测结果的影响;二是深度学习在泛化能力上通常要由于传统的机器学习,这些在一些比赛中已经得到了证实。已有成果对于深度学习在金融数据上的应用研究还较少,如何选择有效的策略针对市场中大量的股票数据中大量的股票进行分析并得到每只股票的预测结果以及保证精度控制风险有待进一步的研究。

股票市场在目前的发展中,行业的类型比较明确,相关指标也得到了健全。在这样的基础之下,通过应用聚类分析算法,能够对股票市场中的行业走势和未来发展重点,进行比较准确的分析。聚类分析是一种有效的将数据合理归类的方法,它可以从大量数据中发现隐含在其中的数据结构。

目前聚类算法对于数据的划分都是硬性的,硬划分的特点是把每个样本严格的划分到一个类中,然而真实的数据集合对于各个类具有不定性的隶属程度,因此需要一种聚类算法,更加符合真实数据的聚类情况,以实现股票价格的预测。



技术实现要素:

本发明的目的在于解决股票市场中的价格预测问题,提供一种基于模糊聚类算法改进lstm的预测方法,该预测方法引入模糊聚类算法,对已序列化的数据进行模糊聚类得到隶属度矩阵,并利用隶属度矩阵对经过融合的lstm网络输出进行加权求和,最终得到股票价格预测值,可以有效的模拟股票趋势中的波动特点及场景,使得预测结果更加准确且符合实际。

为了达到上述目的,本发明采用了以下技术方案:

一种基于模糊聚类算法改进lstm的预测方法,其特征在于,包括以下步骤:

(一)将股票数据标准化,得到标准化股票数据集;

(二)利用fcm算法对标准化后的股票数据集进行模糊聚类;

(三)将模糊聚类后的股票数据集进行转化,得到时间序列集s和模糊划分时间序列集t;

(四)根据时间序列集s和模糊划分时间序列集t,得到融合模型,融合模型输出预测值;

(五)在每次得到预测值后根据目标函数,计算融合模型的总体误差,将融合模型的总体误差人工传递给各个lstm网络输出层,然后lstm网络自动的将部分误差反向传递至输入层,从而自动更新cell单元中的所有权重,得到已经训练好的融合模型;

(六)将时间序列集s中的测试集传入步骤(五)中已经训练好的融合模型,输出最终预测值。

本发明进一步的改进在于,步骤(一)的具体过程如下:

1)求出股票数据集每个特征列的数学期望μk和标准差sk;

2)进行标准化处理:zi=(xi-μk)/sk,其中:zi为标准化后的变量值,xi为实际变量值。

本发明进一步的改进在于,步骤(二)的具体过程如下:

1)用值在0,1之间的随机数初始化隶属度矩阵u,使其满足式(2.1)中的约束条件;

式中,uij为第j个样本对应于第i个类别的隶属度;

2)用式(2.3)计算c个聚类中心cj,j=1,2,...,c;

其中,ci为第i个类别的聚类中心;xj为实际变量值;

3)根据式(2.2)计算目标函数,如果目标函数值小于某个确定的阈值ε1,或它相对于上次目标函数值的改变量小于某个阈值ε2,则停止;否则进行步骤4);

式中,dij=||ci-xi||为第i个聚类中心与第j个数据样本间的欧几里德距离;u为隶属度矩阵,c1为第一个类别的聚类中心,cc为第c个类别的聚类中心,m为一个隶属度因子;

4)用式(2.4)计算新的隶属度矩阵u,并返回步骤2);

其中,dkj为第k个聚类中心与第j个数据样本间的欧几里德距离。

本发明进一步的改进在于,步骤(三)的具体过程如下:以时间步为5的时间间隔划分标准化股票数据集,假设如果当前时刻为t,则(xt,xt+1,xt+2,xt+3,xt+4)为一条以时刻t为起始时时刻的时间序列;以t+1时刻为起始时刻的时间序列为(xt+1,xt+2,xt+3,xt+4,xt+5),以此类推,将标准化股票数据集处理成以时间间隔为5的时间序列集s;

将隶属度矩阵u同样以时间步为5的间隔进行划分,假设如果当前时刻为t,则(ut,ut+1,ut+2,ut+3,ut+4)为一条以时刻t为起始时时刻的时间序列;以t+1时刻为起始时刻的时间序列为(ut+1,ut+2,ut+3,ut+4,ut+5),以此类推,将隶属度矩阵u转化为以时间间隔为5的模糊划分时间序列集t。

本发明进一步的改进在于,步骤(四)的具体过程为:将时间序列集s中的训练集输入至每个lstm网络,经过cell单元的多层映射至输出层,使用模糊划分时间序列集t作为每个lstm网络输出的权重,将权重与对应输出值加权作和,得到融合模型。

本发明进一步的改进在于,步骤(四)中,假设模糊聚类有n个簇,第i样本的隶属度为(ui1,ui2,...,uin),n个lstm网络,其输出为(ai1,ai2,...,ain),则融合模型的输出为:

本发明进一步的改进在于,目标函数的公式为:

其中m为样本数量,yi为样本真实值,为输出值。

本发明进一步的改进在于,步骤(五)中,融合模型的总体误差为:

式中,yi为样本真实值,为输出值,i=1,2,...,m;

部分误差如下:

式中,uik是样本xi隶属于类ck隶属度,i=1,2,...,m且k=1,2,...,n。

与现有技术相比,本发明具有以下有益效果:

本发明通过引入基于模糊聚类改进lstm的预测方法,本发明使用fcm算法对数据进行模糊聚类,相比起把每个样本严格的划分到一个类中的“硬聚类”,模糊聚类分析将聚类生成的每个簇均看作模糊集合,通过隶属度来确定聚类关系,是一种柔性划分,得到样本属于各个类的不定性程度,使得聚类结果更加准确灵活,fcm算法引用模糊集合概念提高了模型预测的鲁棒性;本发明使用样本隶属度作为多个lstm网络模型输出的权重,以此将多个lstm模型融合得到最终的预测网络模型,模型融合集合多个模型,使得预测结果更加可信,加强了模型的预测效果。模糊聚类通过隶属函数来确定每个样本数据隶属于每个类的程度,而不是将一个数据对象硬性地归类到某一簇中。基于模糊聚类算法对lstm(longshort-termmemory)网络进行改进,拟合现实中每个样本数据对于不同簇的不确定性,可有效降低lstm网络的预测与真实值之间的误差,使得预测结果与实际情况更加接近且准确度提高。

附图说明

图1为fcm算法流程图;

图2为lstm结构图;

图3为基于模糊聚类算法的lstm的改进模型图;

图4为预测方法流程图。

具体实施方式

为了使本发明的内容、效果以及优点更加清楚明白,下面结合附图和实施例对本发明进行详细描述。

本发明是基于模糊聚类的lstm(longshort-termmemory)改进的预测方法,通过对股票数据进行标准化处理以及将标准化的数据转化为时间序列(时间序列的timestep为5天,每五天作为一个时间序列),可以有效的加速模型训练效率,并且消除模型对于数据量级的高敏感性,将数据转化为时间序列使得在训练模型中加入了时间相关性,更加符合股票价格与历史往期数据相关的这一特性;通过引入模糊集和概念,将所有样本数据使用fcm算法进行模糊聚类,得到聚类副产品—隶属度矩阵,隶属度在本发明中的最终预测值的计算中起了重大作用,同时利用模糊聚类,消除了传统硬聚类的一个样本只能硬性的属于一个类别的弊端,模糊聚类使得样本对于每一个类别都有一定的隶属程度,使其聚类结果更加符合真实世界的聚类情况;通过利用由模糊聚类得到的隶属度矩阵,可有效的将多个lstm网络融合到一起,加强预测效果;本发明在更新权重过程中,保持隶属度权重不变,将总误差按照隶属度权重比例反向传递给各个lstm的输出,使得各个lstm可以获得准确的部分误差而自动的向前传递以更新其内部cell中的权重,最终最小化目标函数,降低模型的总体误差,使得预测结果更加接近真实值,并且对未知样本有更好的泛化能力。

本发明的具体过程如下:

(一)数据标准化

由于数据收集的时间间隔较大,股票价格随时间的推移在量级上有所变动,如果大量数据值不是同一个量级,会对模型预测的精准度造成很大的影响,另外lstm对输入数据的规模很敏感,特别是使用sigmoid或tanh激活功能时,将数据标准化是一个很好的做法。其转化函数为:x*=(x-μ)/σ,其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

将股票数据标准化,得到标准化数据集的步骤如下:

1)求出股票数据集(taiex)每个特征列的数学期望μk和标准差sk;

2)进行标准化处理:zi=(xi-μk)/sk,其中:zi为标准化后的变量值,xi为实际变量值;

(二)利用fcm算法对标准化后的股票数据集进行模糊聚类

聚类使得被划分到同一簇的样本时间相似度最大,而不同簇之间的相似度最小,模糊聚类建立了样本对类别的不确定描述,更能反映客观世界。参见图1,fcm算法是将n个样本xi(i=1,2,...,n)分为四个模糊组,并求每组的聚类中心,使得非相似性指标的目标函数达到最小。约束条件为一个样本属于所有类的隶属度之和,且为1;

式中,uij为第j个样本对应于第i个类别的隶属度,介于0,1之间。

fcm算法的目标函数j(u,c1,...,cc)为:

式中,dij=||ci-xi||为第i个聚类中心与第j个数据样本间的欧几里德距离,并且是一个加权指数;u为隶属度矩阵,c1为第一个类别的聚类中心,cc为第c个类别的聚类中心,m为一个隶属度因子,一般为2;

式子2.2由所有当前样本的隶属度与当前样本到各个类中心的距离相乘组成的。

其中,ci为第i个类别的聚类中心,是一个加权指数;xj为实际变量值;

其中,dkj为第k个聚类中心与第j个数据样本间的欧几里德距离。

使用fcm算法对标准化后的股票数据集进行模糊聚类的步骤为:

1)用值在0,1之间的随机数初始化隶属度矩阵u,使其满足式(2.1)中的约束条件;

2)用式(2.3)计算c个聚类中心cj,j=1,2,...,c;

3)根据式(2.2)计算目标函数,如果目标函数值小于某个确定的阈值ε1(ε1一般为0.01),或它相对于上次目标函数值的改变量小于某个阈值ε2(ε2一般取0.001),则停止;否则(即如果目标函数值大于某个确定的阈值ε1,或它相对于上次目标函数值的改变量大于某个阈值ε2)进行步骤4);

4)用式(2.4)计算新的隶属度矩阵u,返回步骤2)。

经过上述步骤得到c个聚类中心点向量和一个模糊划分矩阵u,这个矩阵表示的是每个样本点属于每个类的隶属度,也称为隶属度矩阵u。

(三)将标准化后的股票数据集转化为时间序列,得到时间序列集s和模糊划分时间序列集t;

以timestep(时间步)为5的时间间隔划分划分标准化股票数据集,假设如果当前时刻为t,则(xt,xt+1,xt+2,xt+3,xt+4)为一条以时刻t为起始时时刻的时间序列(xt为标准化数据集中的一条样本记录);以t+1时刻为起始时刻的时间序列为(xt+1,xt+2,xt+3,xt+4,xt+5),以此类推,将标准化股票数据集处理成以时间间隔为5的时间序列集s,每一个序列为lstm的一次输入;

将隶属度矩阵u同样以时间步为5的间隔进行划分,假设如果当前时刻为t,则(ut,ut+1,ut+2,ut+3,ut+4)为一条以时刻t为起始时时刻的时间序列(ut为隶属度矩阵u中的一条样本记录);以t+1时刻为起始时刻的时间序列为(ut+1,ut+2,ut+3,ut+4,ut+5),以此类推,将隶属度矩阵u转化为以时间间隔为5的模糊划分时间序列集t。

然后使用k折交叉验证方法将时间序列集s划分为数据集和测试集两部分,使用k折交叉验证方法将时间序列集s分成k个不相交的子集,假设时间序列集s中的时间序列数量为p,那么每一个子集有p/k个序列,相应的不相交的子集为{s1,s2,...,sk};k为自然数。每次从训练子集中选择出k-1个子集{s1,s2,...,sj-1,sj+1,...,sk}的并集,也就是每次只留下一个子集sj,从而可进行k次训练和测试。

k折交叉验证方法具体方法为:通过调用sklearn.model_selection.kfold按k折交叉划分出训练集和测试集。

(四)根据时间序列集s和模糊划分时间序列集t,得到融合模型,融合模型输出预测值;

参见图2,lstm(longshort-termmemory)是长短期记忆网络,是一种时间循环神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。lstm区别于rnn的地方就在于它在算法中加入了一个判断信息有用与否的“处理器”,这个处理器作用结构被称为cell。

参见图3,lstm的内部结构,它规避了标准rnn中梯度爆炸和梯度消失的问题,所以其学习速度更快。lstm的内部结构具体如下:

1)遗忘门:输入lstm中第一步是决定数据会从cell状态中丢失什么信息,这个决定通过一个成为遗忘门层完成,该层将cell状态中的信息选择性的遗忘,该层公式为:

ft=σ(wf·[ht-1,xt]+bf),其中wf和bf作为参数是要进行训练学习的,ht-1表示的是上一个cell的输出,xt表示的是当前cell的输入,σ是sigmoid函数,ft为遗忘门的输出值;

2)输入门:该层分为两个部分,第一部分为产生要更新的新信息,包括两个小的神经网络层:

it=σ(wi·[ht-1,xt]+bi)

其中wi和bi作为参数是要进行训练学习的,ht-1表示的是上一个cell的输出,xt表示的是当前cell的输入,σ是sigmoid函数,tanh为tanh函数,it和为输入门中两个小的神经网络的输出值;

更新细胞状态:

其中ft为遗忘门的输出值,ct-1为上一个cell的细胞状态,it为输入门中sigmoid层的输出值,为输入门中tanh层的输出值;

3)输出门:该层基于细胞状态,确定输出什么值,首先,cell运行一个sigmoid层来确定cell状态的那个部分将输出出去。

ot=σ(wo[ht-1,xt]+bo)

其中wo和bo作为参数是要进行训练学习的,ht-1表示的是上一个cell的输出,xt表示的是当前cell的输入,ot为输出门的sigmoid层输出值

接着,将细胞状态通过tanh进行处理(得到一个在-1到1之间的值)并将它和sigmoid门的输出相乘,最终cell仅会输出确定输出的那部分。

ht=ot*tanh(ct)

其中,ct为cell的细胞状态,ot为输出门的sigmoid层输出,ht为输出门的输出值。

本发明创建多个lstm网络(其个数与模糊聚类数相同),参见图4,将时间序列集s中的训练集输入至每个lstm网络,经过cell单元的多层映射至输出层,使用样本的隶属度即模糊划分时间序列集t作为每个lstm网络输出的权重,将这些权重与对应输出值加权作和,得到融合模型,融合模型输出最终的模型预测值。具体过程如下:假设模糊聚类有n个簇,第i样本的隶属度为(ui1,ui2,...,uin),n个lstm网络,其输出为(ai1,ai2,...,ain),则融合模型的输出为:

(五)目标函数

由于该问题属于回归问题,所以目标函数使用常规的均方误差作为融合模型的目标函数,目标函数的公式为:

其中m为样本数量,yi为样本真实值,为输出值。

(六)更新权重

参见图4,lstm网络可自动的反向传播误差,所以只需要在每次得到预测值后根据步骤(五)的目标函数,计算融合模型的总体误差,将融合模型的总体误差人工传递给各个lstm网络输出层,之后lstm网络可自动的将部分误差反向传递至输入层,从而自动更新cell单元之中的所有权重,得到已经训练好的融合模型。具体过程如下:根据式(3.1)可知,融合模型预测由隶属度和各lstm网络输出值加权得到,所以总体误差由各lstm网络的输出值权重占比反向传递各lstm网络。

其中,融合模型的总体误差为:

式中,yi为样本真实值,为输出值;式(3.2)为融合模型的总体误差。

部分误差如下:

式中,uik是样本xi隶属于类ck隶属度;式(3.3)为总体误差按隶属度比例向前传递的部分误差。

将式(3.3)中的部分误差反向传递给各lstm网络的输入层,之后各lstm网络根据传入的部分误差自动更新lstm网络cell单元中的权重。

(七)预测:

将时间序列集合s中的测试集传入步骤(六)中已经训练好的融合模型,融合模型输出即为最终预测值。

本发明设计了一种基于模糊聚类的lstm改进预测方法,以提升预测的可信程度和正确度。本发明通过引入模糊聚类算法,通过隶属度来确定聚类关系,得到样本属于各个类的不确定程度,使得聚类结果更加准确灵活,fcm算法引入模糊集合概念提高了预测方法的鲁棒性;本发明使用样本隶属度作为多个lstm网路模型输出的权重,以此将多个lstm模型融合得到最终的预测网络模型,模型融合集合了多个模型,使得预测结果更加可信,拟合了股票证券实际场景中的波动性,并且加强了模型预测效果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1