基于鲸鱼算法优化LSTM的股票价格预测模型
2023-02-27李婧琦
李婧琦
(山东工商学院 统计学院, 山东 烟台 264005)
0 引 言
近年来,机器学习已被应用于金融、交通、医药等各个领域。股票作为金融产品的重要组成部分,不仅仅反映了人们的生活水平,也预示着市场经济,这就是为什么股票走势的预测在研究人员中越来越受关注的原因[1]。虽然历史股票信息为许多投资者和分析者提供了充裕的资源,但是对其分析与判断完全基于分析者的个人经验和直觉,显然是不可靠且效率低下的。因此,人们需要智能、科学、高效的股票研究方法,这将有助于指导股票交易[2]。早期,研究人员主要将各种传统的统计方法应用于时间序列模型。如:自回归条件异方差模型(GARCH)、自回归移动平均模型(ARMA)、差分整合移动平均自回归模型(ARIMA)[3]和多元线性回归模型[4]等等。然而,此类模型通常只能拟合股票价格与影响因素之间的线性关系,而面对复杂度高的股票价格预测,预测的准确性很难令人信服。在过去的几年里,机器学习算法,包括决策树、支持向量机、随机森林、改进的聚类算法和改进的神经网络[5],已被应用于股票预测,并已取得了较好的预测效果。虽然神经网络在股票预测方面取得了较好的效果,但更深层次的神经网络可能更适合这种非线性复杂系统[6]。LSTM神经网络就常用于预测时间序列数据,其本质上是循环神经网络(RNN)的一种变体。由于RNN训练中存在梯度消失和梯度爆炸的问题,即随着网络步长的增加,一些权重的梯度变得过小或过大。梯度爆炸问题可以通过逻辑函数等方法压缩梯度来解决,但梯度消失问题则不能用函数方法解决,导致梯度无法传播,模型无法训练,而LSTM 神经网络有效地解决了这个问题。现有研究表明,在股票价格预测中,LSTM神经网络是一个具有良好准确性的预测模型[7],且LSTM 神经网络天生适合于金融市场预测,并以显著的优势超越了其它预测模型[8]。
尽管在时间序列中LSTM是一个有用的工具,但 LSTM 网络仍然存在一些限制。 LSTM 网络属于高级计算过程,用于完成目标问题的解决方案,但其还没有准备好对其预测结果所使用的参数做出明确的说明,其中包括一些需要人为设置的部分参数(如:隐藏层神经元数量、迭代次数、学习率等)。不同参数训练的模型差距明显,因此选择最优的参数十分重要。目前,对于模型重要参数的确定往往靠研究者个人经验以及多次实验决定,浪费人力和时间。为此,提出将鲸鱼算法(WOA)优化长短期记忆神经网络(LSTM)的模型,来对股票进行预测。利用鲸鱼算法寻找LSTM关键参数的最优值,使得股票数据特征与 LSTM 神经网络拓扑结构之间相互匹配,以提高预测精度。与此同时,为了进一步改善模型性能、降低模型训练成本以及过拟合风险,使用以随机森林为分类器的递归特征消除算法进行特征选择,把相关性低及冗余的指标特征筛选掉,得到改进的指标体系进行预测。
1 相关工作
1.1 递归特征消除法
递归特征消除(Recursive feature elimination)是一种寻找最优特征子集的“贪心”算法,其算法的主要思想是经过不断循环迭代从而实现对特征变量的不断筛选。2017年吴辰文[9]提出将随机森林算法(Random forest)作为迭代分类器的递归特征消除法,并且验证了在选择特征子集方面,有着优异的表现。此处利用该方法处理输入新模型的多维特征,用于建立预测指标体系,从而降低预测误差。该算法基本实现步骤如下:
(1)建立以随机森林为基础的训练分类器。
(2)计算特征的重要性度量值。
(3)对其特征迭代,剔除重要性测度低的X个(一般为1)特征。
(4)剩余的特征继续构造子集,重复步骤1~3,直到选择出最佳特征子集。
1.2 LSTM神经网络
LSTM由 Hochreiter等[10]于1997 年提出。其设计之初,旨在使循环神经网络能够学习时间序列数据中的长期依赖关系。具体来说,传统的循环神经网络在理论上可以学习长时间间隔的数据相关性,但在实际应用中,循环神经网络只能有效地学习短时间间隔的数据相关性,而不能很好地学习长时间间隔的数据相关性。基于其隐层节点精细设计的LSTM神经网络则可以有效解决上述问题。
LSTM神经网络作为循环神经网络(RNN)的变体,具有RNN可以长时间记忆的特点,创造性地加入了遗忘门,解决了长期依赖长期信息的问题。通过调整遗忘门中的权重和偏差,可实现训练集数据的拟合。 LSTM的内部结构如图1所示,其工作原理通常分为以下步骤:
(1)通过观察ht-1和xt,使用sigmoid函数以一定的概率丢弃信息或保留信息。sigmoid函数的输出范围为[0,1],“0”表示完全丢弃该信息,“1”表示完全保留该信息。完成该功能的部分称为遗忘门,可表示为
ft=sigmoid(Wf·[xt,ht-1]+bf)
(1)
其中,ht-1为上个单元的输出;xt为当前单元的输入;Wf为遗忘门权重矩阵;bf为遗忘门偏置项。
(2)处理当前输入序列的输入,该功能由输入门完成。
it=sigmoid(Wi·[xt,ht-1]+bi)
(2)
(3)
其中,Wi、Wc分别为输入门、神经元状态的权重矩阵,bi、bc分别为对应的偏置项。
(3)根据输入门、遗忘门和之前的细胞状态,更新当前细胞状态。
(4)
其中,Ct-1为上个单元细胞状态。
(4)根据输出门公式得到输出值。
ot=sigmoid(Wo·[xt,ht-1]+bo
(5)
ht=ot·tanh(Ct)
(6)
其中,Wo为输出门权重矩阵;bo为输出门偏置项;ht为当前单元输出。
(5)根据反向传播算法计算梯度变化,然后根据梯度下降法调整权重和偏差。
LSTM神经网络通过上述精心设计,使其能够有效挖掘时间序列数据中间隔较长数据之间的相关性,从而更有效地预测未来的股票价格和波动。
图1 LSTM网络单元结构
1.3 WOA鲸鱼算法
鲸鱼优化算法(WOA)是由 Mirjalili等人提出的一种模拟座头鲸泡泡网喂食的算法[11]。该算法本质上是一种基于群体智能模拟的元启发式算法。
1.3.1 包围猎物
WOA将猎物位置视为最优目标或近似最优解,其它种群中的个体以此为基础更新自己的位置。此过程的数学模型可用以下公式表示:
(7)
其中:t表示迭代次数;A、C表示系数向量;X*是当前的最佳鲸鱼位置;X是当前鲸鱼位置;a在迭代过程中从2线性减小到0;r表示区间[0.1]内的随机数。
1.3.2 泡泡网攻击方式
泡泡网攻击可以分为两种策略:收缩包围和螺旋更新位置。
(1)收缩包围:该方式是通过公式中的a值来实现的。a在迭代过程中从2减少到0,而A是区间(-a,a)内的随机数,即A为(-2,2)中的一个随机值。当A设置为从-1~1 时,鲸鱼的新位置可以定义为原始位置和猎物位置之间的任何位置。
(2)螺旋更新位置:首先计算鲸鱼与猎物位置之间的距离,然后在两个位置之间建立螺旋方程,来模拟鲸鱼的螺旋运动:
(8)
其中:D表示鲸鱼与猎物的距离;b表示螺旋形状常数;l为区间[-1,1]上的随机数。
在收缩包围猎物的同时,鲸鱼在螺旋轨道上捕猎猎物。为了模拟这种同时发生的行为,假设有0.5的概率可以在收缩包围猎物和螺旋模型之间做出选择,以更新鲸鱼位置,则数学模型如下:
2015年,宿州农资市场出现剧烈震动,依靠价格优势起家的谭凤明依然停留在抓行情、拼价格的经营模式上,结果导致公司的销量出现明显下滑。对此,谭凤明坦言:“由于从业时间久,形成了思维定势,最初在应对竞争压力时的主要手段还是价格战,但拼价格对于正规经营的企业来说是个两败俱伤的选择,时间一久就难以承受。”越发激烈的价格战和假冒伪劣产品的冲击,迫使谭凤明不得不认真思考企业的出路。通过对厂家、零售商、农户的大量走访调研,他逐渐认识到,肥料市场风起云涌的背后是中国农业转型升级这一不可逆转的趋势在推动,市场需求和行业发展逻辑发生了根本的改变。
(9)
(3)寻找猎物:鲸鱼根据彼此的位置寻找猎物。当|A|>1 时,鲸鱼位置是通过随机选择来更新的。数学模型如下:
(10)
其中,Xrand(t)表示随机鲸鱼的位置。
1.4 基于鲸鱼算法的 LSTM 参数优化
LSTM模型的关键参数通常依赖于研究人员的经验设置,随机性大、预测精度不理想,甚至可能陷入局部最佳解决方案。为解决上述问题,使用鲸鱼算法优化长短期记忆神经网络。将长短期记忆神经网络的隐藏层神经元个数、学习率、训练迭代次数作为鲸鱼算法的寻优目标。优化模型的工作主要分为4部分:
(1)确定LSTM网络拓扑结构并初始化网络里所有参数。
(2)根据待优化参数所确定的随机值,选择参数搜索范围。
(3)计算个体鲸鱼对应的适应度值。适应度值设置为模型验证数据集的均方根误差(RMSE)。若计算的适应度是最小值,则将其设为本次的最优结果,并且与全局最优适应度值对比大小。若该值小于全局最优适应度值,则进行替换。
(4)开始迭代。用鲸鱼算法不断更新需要优化的3个超参数,重复步骤3~4,直到达到最大迭代次数。
1.5 基于鲸鱼算法优化的LSTM预测模型
构建鲸鱼算法优化LSTM预测模型的核心是优化工作,图2展示了预测模型的具体算法流程。通过对样本数据的训练过程,寻找关键参数最优值。具体步骤如下:
(1)数据集预处理。首先丢弃异常值、补全缺失值,并把数据按时间排序;其次,将数据集进行归一化处理;最后,用递归特征消除法进行特征选择。
(2)鲸鱼算法参数初始化。确定鲸鱼算法中的最大迭代次数(t_max)、鲸鱼数量n、搜索范围的最大值(ub)和最小值(lb)。
(3)鲸鱼位置初始化。随机生成种群鲸鱼Xi,0(l,e,a),其中l为训练迭代次数,e为学习率,a为隐藏层神经元个数。
(4)鲸鱼算法通过包围猎物、泡泡网攻击和搜索猎物,不断优化网络参数,直到迭代结束,得到最优的训练迭代次数、学习率和隐藏层神经元个数。
(5)将测试数据集输入到利用最优参数构建好的LSTM模型中,输出预测值。
图2 WOA-LSTM预测模型
2 实验结果与分析
实验选取上证指数(SH000001)为例,采用上证指数的交易指标和技术指标作为数据集,各指标见表1。数据通过python的Tushare财务接口包获得,时间段为 2012年 6月 7日至2022年 3月 17日,其中包括上证指2 378条数据。实验前删除掉因停盘等操作造成的缺失数据,并将数据进行时间排序。为了更好地评估模型性能,选用LSTM模型、PSO-LSTM模型和 SSA-BP模型与WOA-LSTM模型进行对比实验。
表1 股票价格预测指标
2.1 模型评价标准
为了显示各模型预测效果,采取均方根误差(RMSE) 、平均绝对百分比误差(MAPE) 、平均绝对误差(MAE) 和决定系数R2等4个评价指标,来评估每个模型的预测效果。其中,RMSE、MAPE、MAE数值越小,说明模型预测结果越准确,与实际值偏差越小; 决定系数R2越接近 1,说明模型的拟合优度越高,预测效果越好。具体公式定义为:
(11)
(12)
(13)
(14)
2.2 实验分析
2.2.1 构建预测指标体系
利用基于随机森林为分类器的递归特征消除法,将不重要的特征从数据子集中剔除。
对初始32个特征进行算法迭代,直至达到所需要的特征数量。在重复交叉验证的实验中,最终得到最佳特征数量为13个。交叉验证所选的特征数量如图3所示,选取的最终最佳预测指标,见表2。
图3 RFE最佳特征数量
表2 特征子集
2.2.2 模型参数选择及优化结果
构建的鲸鱼算法优化LSTM 模型是由输入层、隐藏层和输出层组成的循环神经网络,且使用 Adam 优化器进行梯度下降优化权值,初始鲸鱼数量为30,最大迭代次数为100。利用鲸鱼算法对股票预测模型的参数寻优,上证指数数据训练所得最优参数,分别为迭代次数167、学习率为0.02、隐藏层神经元个数为128。
各模型在寻优过程中不断收敛的适应度曲线如图4所示。从图中对应的曲线可见, WOA-LSTM 的收敛速度和准确性均优于 PSO-LSTM、SSA-BP。
图4 适应度值收敛曲线图
2.2.3 股票价格预测
将经过特征选择的股票数据代入预测模型,验证模型的有效性,并与LSTM模型、PSO-LSTM模型、SSA-BP模型进行对比分析。各个模型的预测结果如图5~图8所示。在对应图中可以明显看出,经过鲸鱼算法优化LSTM的预测曲线更加接近真实曲线,即预测值与真实值最为接近,拟合优度最高。说明该模型预测性能以及弱化滞后能力都表现最佳。
图5 LSTM模型真实值与预测值对比
图6 PSO-LSTM模型真实值与预测值对比
图7 SSA-BP模型真实值与预测值对比
图8 WOA-LSTM模型真实值与预测值对比
为了进一步准确地验证模型的预测性能,表3给出了各个模型的4种评价指标计算结果。从表3可知,通过鲸鱼算法优化的LSTM模型对应RMSE、MAPE、MAE值分别为21.763 1、0.007 2、26.290 7,均低于其它3种预测模型,并且该模型的决定系数为0.931 6,结果比其它预测模型更接近1,说明模型的拟合效果更佳。
表3 各模型评价指标比较
其中,WOA-LSTM的RMSE指标比LSTM低47.87%,比PSO-LSTM低45.42%,比SSA-BP低14.71%;MAPE指标比其它3种模型分别低25.00%、20.00%、19.10%;MAE指标则分别减少了11.53%、8.31%、7.19%。综上所述,通过鲸鱼算法优化的LSTM模型预测性能有着显著提高。
3 结束语
为了提高股票价格预测模型的预测性能,本文提出了使用鲸鱼算法(WOA)优化LSTM的股票价格预测模型。利用鲸鱼算法对LSTM网络的重要参数寻优,使得人为因素的影响降低,模型预测的准确性提高。本文选取了上证指数股票数据进行实验。验证了鲸鱼算法在寻优过程时的收敛速度以及准确性方面都有着显著的优势。并且在预测性能方面,相较于单一神经网络模型与其它被优化的神经网络模型,经鲸鱼算法优化的LSTM模型具有更好的预测精度。同时,考虑到股票时间序列数据具有冗余性,筛除与预测值负相关以及相关性低的特征,用最佳特征子集训练新的模型,使得模型的预测精度得到了进一步的提高。面对庞大而复杂的股票市场,通过鲸鱼算法优化的LSTM模型能够实现更快、更准确地进行预测,可以在一定程度上降低投资者的风险。该模型可以有效地处理时间序列,在时间序列问题上具有一定应用前景。