基于PCA和IFOA-BP神经网络的股价预测模型

2020-01-14 06:33綦方中林少倩俞婷婷
计算机应用与软件 2020年1期
关键词:股票价格果蝇权值

綦方中 林少倩 俞婷婷

1(浙江工业大学管理学院 浙江 杭州 310023)2(杭州国信大数据应用研究院 浙江 杭州 310023)

0 引 言

随着我国改革开发的推进,我国的股票市场在快速发展。股票市场的运行影响着国民经济的发展,对未来的股票走势进行准确的预测能够降低投资者的风险,同时在适当时引导金融市场经济,使得我国经济更健康的发展。

股票预测的基本思想一般是利用股票价格的历史数据对股票未来的价格进行预测判断[1]。最初,技术分析法被用于股票的价格预测,通过长期观察股票价格的日线图、周线图,归纳总结股价的波动规律。后来,国内外学者建立时间序列预测模型实现预测。李丽莎[2]建立ARCH模型验证了上海股市的可预测性,并得出上海股市具有杠杆效应、波动集群性和波动持续性的结论。冯盼等[3]通过建立ARMA模型,对招商银行的股票历史数据进行分析,并预测出未来三天的股价情况。

但是,由于股票价格(指数)具有非线性的波动,在股票价格(指数)原有趋势发生反转时,时间序列模型难以应对。此时,人工智能技术开始兴起,给股票价格的预测带来新的方向。其中,BP神经网络由于其强大的噪声数据承受能力和非线性映射能力而受到了广泛的应用。王莎[4]运用改进的BP神经网络实现了湖南三一重工的股价预测。李杰等[5]利用神经网络并结合主成分分析对中国石化天股票历史指标数据的收盘价进行了预测,并通过图像仿真拟合验证了该方法的准确性。但是,传统BP神经网络在股票价格预测时,存在容易陷入局部、训练时间过长、预测数据不准确的问题。针对上述问题,本文构建了基于PCA和IFOA-BP神经网络的股票预测模型。

主成分分析(PCA)是一种广泛应用的无监督线性数据转换技术,其作用是实现有效的数据降维,并从最大程度上保留原始数据信息[5]。在实际的应用中,PCA经常应用于数据的预处理,其能够降低由于影响因素过多而造成的信息冗余。

果蝇优化算法(FOA)是2011年潘文超教授受果蝇觅食行为的启发而推演出的一种群体智能算法[6]。与其他群智能算法相比,FOA算法容易理解,参数设置较少,程序代码易于实现且运行效率高,有较强的寻优能力[6]。本文首先将采用PCA对预处理后的样本数据进行降维,并利用改进的果蝇算法(IFOA)优化BP神经网络,得到最优的初始权值和阈值,接着建立PCA-IFOA-BP神经网络股票预测模型,最后实现股票价格预测,并与其他模型的对比,从而验证模型的有效性。

1 PCA-IFOA-BP预测模型

1.1 主成分分析法

PCA是一种广泛应用的无监督线性数据转换技术,其作用是实现有效的数据降维。在实际的股票价格预测中,通过使用PCA来对数据进行预处理,能够降低由于股票因素较多而造成的信息冗余,最大程度上反映原始数据信息。

以下是PCA算法的主要流程[5]:

假设有一个样本集,样本数为n,变量维数为d,将其用数据矩阵表示为:

(1)

(1) 对原始d维数据做标准化处理,假定标准化后的矩阵为Z。

(2)

(2) 构造样本的协方差矩阵。

(3)

(3) 求解协方差矩阵R的特征向量u1,u2,…,ud,特征根λ1,λ2,…,λd。

(4) 选择与前k个最大特征值对应的特征向量,其中k为新特征空间的维度(k≤d)。前k个主成分的累积贡献率为:

(4)

(5) 通过前k个特征值构建映射矩阵W。

(6) 通过映射矩阵W将d维的输入数据矩阵Z转换到新的k维特征子空间,假定映射后的主成分矩阵为Y。

Y=ZW

(5)

1.2 改进果蝇优化算法(IFOA)

果蝇算法是一种基于果蝇觅食行为推演出的寻求全局优化的新方法[7]。果蝇在视觉与嗅觉上的先天优秀特性能够帮助其找到远距离的食物[8],果蝇在搜寻食物时,先用灵敏的嗅觉寻找空气中的各种气味,捕捉食物源的大致位置,然后飞往那个位置,接近食物时,再利用敏锐的视觉确定同伴聚集的位置,直到找到食物,觅食过程如图1所示[9]。

图1 果蝇觅食过程

FOA作为一种新型群智能算法,具有结构简单、优化过程易于理解的优点[8]。但是果蝇算法也存在以下的缺陷:果蝇算法取得的最优值均为正数;对于极值点为零点的优化问题,果蝇算法难以解决;果蝇算法极易陷入局部极值点。为了使FOA的优化性能得到提高,在本文中将引入以下的改进策略:

(1) 在味道浓度判定值中加入一个逃逸参数[10],使得候选集Si能够取到负值。

(2) 将果蝇个体的搜索半径改为自适应值[11]来平衡算法的全局搜索能力和局部搜索能力,提高算法执行效率。

(3) 将细菌觅食算法中的细菌迁徙操作自适应地引入到果蝇算法[12]中来提高算法跳出局部极值的能力。

改进果蝇算法的迭代寻优步骤如下[10-14]:

Step1设定初始参数,包括果蝇种群规模Sizepop,迭代次数Maxgen,可行阈值范围内随机设定果蝇群体的初始位置。

Step2设定果蝇个体利用嗅觉器官寻找食物的随机方向和距离。

Xi=X_axis+L

Yi=Y_axis+L

Zi=Z_axis+L

(6)

Step3计算个体果蝇到原点(0,0)的距离Di,将Di的倒数赋值给味道浓度判定值Si。

(7)

式中:δ是[0,1]之间的随机数。

Step4求解味道浓度Smelli。将上个步骤中求得的Si代入到味道浓度判定函数Function中进行计算,求得Smelli。

Smelli=Function(Si)

(8)

Step5根据个体果蝇对应的味道浓度值,得到味道浓度的最小值、最大值以及最小值、最大值所在的位置。

[bestSmellbestIndex]=min(Smell)

[worstSmellworstIndex]=min(Smell)

(9)

Step6将味道浓度最小的值及其位置分别赋值给相应的变量,其余的果蝇利用视觉飞向该位置。

Smellbest=bestSmell

Smellworst=worstSmell

X_axis=X(bestIndex)

Y_axis=Y(bestIndex)

Z_axis=Z(bestIndex)

(10)

Step7记录并保留最佳味道浓度值bestSmell,更新进化停滞步数t,记录并且保留最差味道浓度值worstSmell。

if(bestSmell

{Smellbest=bestSmell;t=0}

else{t=t+1;Smellworst=worstSmell}

(11)

Step8判断t

P(i)=(Smellbest-Smell(i))/

((Smellbest-Smellworst)×P)

(12)

计算得到每个果蝇个体的迁徙概率P(i),并根据遗传算法中的轮盘赌方式来选择需要迁徙的个体,将需迁徙的个体重新分配至寻优空间,而未迁徙的个体转向Step 9。

Step9更新果蝇个体位置Xi、Yi、Zi。

Xi=XbestIndex+L

Yi=YbestIndex+L

Zi=ZbestIndex+L

(13)

Step10进入迭代寻优,重复执行Step 3-Step 7。判断最佳味道浓度是否达到精度要求。若是,结束算法;否则,判断当前迭代次数小于最大迭代数Maxgen,若是则执行Step 8-Step 9。

1.3 基于IFOA的BP神经网络参数优化

BP神经网络是基于误差反向传播的多层前馈神经网络,利用BP神经网络的非线性和动态性,可以通过调整网络连接的权值和阈值,以任意精度逼近任何一个连续函数[13]。因此可应用BP神经网络学习和模拟股票市场的交易模式,发现股票的内在运行规律,从而得到股票价格随时间的变化的函数关系[15]。

然而,BP神经网络在训练时容易出现以下问题:BP神经网络对隐含节点、初始的权重和阈值十分敏感,一旦初始权值和阈值选取不当,可能导致在搜索全局最小值时陷入局部极小值;在训练数据集较大的情况下,由于学习速率值较小导致系统收敛速度下降和训练周期延长。上述的问题在一定程度上都将影响模型的预测精度,为改善上述问题,引入改进果蝇算法,通过改进果蝇算法在一定范围内搜索出一组使得味道浓度判定值(适应度值)最小的网络连接权值和阈值作为BP神经网络的初始值[15],降低BP神经网络的预测误差,提高预测精度。

采用改进果蝇算法优化BP神经网络的计算流程如图2所示。

图2 IFOA优化BP神经网络流程图

采用IFOA对BP神经网络进行优化的过程包括BP神经网络结构的确定、果蝇算法优化和BP 神经网络的训练预测。首先,为了实现IFOA对BP神经网络的优化,必须确定BP神经网络的结构。其次,采取改进的果蝇算法对BP神经网络的权值和阈值迭代寻优,得到IFOA优化后的最优权值和阈值。最后,通过对样本数据的训练建立BP神经网络预测模型并实现股票价格的预测。

2 股票价格预测步骤

基于PCA-IFOA-BP神经网络的股票价格预测算法步骤如下:

(1) 选取股票历史数据,确定股票价格影响指标,并归一化处理样本数据。

(2) 对归一化处理后的样本数据进行主成分分析,根据各主成分解释总方差的占比,选择主成分的个数。根据主成分的个数,确定 BP神经网络的输入变量、输出变量以及输入层、隐含层以及输出层的各层神经元个数。

(3) 初始化模型参数。确定IFOA的种群规模Sizepop,最大迭代次数Maxgen,初始步长L1,细菌迁徙概率P,进化停滞步数T。确定改进果蝇算法浓度判定函数为:

(14)

(4) 采用改进的果蝇算法优化BP神经网络。通过计算果蝇味道浓度值的大小,寻找使得浓度判定函数值最小的最优果蝇个体,记录其位置及最优果蝇味道浓度值,并根据果蝇群体进化停滞情况,判断是否进行迁徙操作[12]。迭代循环,直至最优味道浓度值小于指定值或达到最大迭代次数,即找到最优的权值和阈值。

(5) 利用得到的最优的权值和阈值对样本数据进行训练,得到BP神经网络预测模型后,对测试样本数据进行测试。

3 实验仿真

3.1 数据选取

本文选取了2014年9月24日至2017年2月24日之间的共605天的上证指数交易数据作为实验数据。输入变量中包括股票价格历史数据以及技术指标,分别为股票的开盘价、收盘价、最高价、最低价、涨跌、涨跌幅、成交额、成交量MACD(平滑异同移动平均线)、KDJ(随机指数)、RSI(相对强弱指数)、W&R(威廉指标)、DMI(动向指标)、BIAS(乖离率)、OBV(能量潮)、CCI(顺势指标)、ROC(变动速率指标)、CR(中间意愿指标)、BOLL(布林线)。部分股票交易数据如表1所示。

选取原始数据前550天的股票历史数据作为训练样本,后55天的数据作为测试样本。股票预测可选取5天、10天、15天等作为一个预测周期,为实现较为精确的预测,将选取5天为一个周期实现股票价格的分析预测,即通过前五天的股票数据来预测后一天的收盘价格,所以最终形成的训练样本为545组,测试样本为50组。

表1 股票交易数据表

3.2 归一化处理

BP神经网络所输入的初始值可能会影响模型的收敛速度以及预测精度。所以,在采用BP神经网络建立模型前,需要对输入数据进行归一化处理。针对每一个输入变量采用如下归一化处理公式进行处理,从而将数据转化成[0,1]之间的数字。

(15)

式中:x′是归一化后数据,x为样本数据,xmax和xmin分别为x的最大值和最小值。

3.3 PCA

按照主成分分析的步骤对归一化后的19个输入变量进行主成分分析,表2是经过PCA提取后,各个主成分总共能解释原始变量总方差的百分比。

表2 主成分分析结果表

由表2可以看出,前5个主成分的累积百分比达到了92.474%,即共能解释原始变量的总方差占比达到90%以上,可以概括原始数据的大部分信息,故只采用前面5个主成分进行后续实验。

3.4 改进果蝇算法优化BP神经网络

采用改进果蝇算法对BP神经网络的初始阈值和权值进行迭代寻优,使用Python3.6编程实现模型算法。算法相关参数的设置如下:

改进果蝇算法的参数设置为:果蝇群体随机初始化位置为[-5,5],最大迭代次数Maxgen=500,果蝇群体初始规模Sizepop=50,初始步长L1=4,迁徙概率P=0.25,进化停滞步数T=5。

BP神经网络算法的参数设置为:采用3层结构,由PCA输出的主成分为5个,以5天为一周期实现价格预测结果可知输入层神经元个数设置为25个;通过误差计算,求得最佳隐藏层神经元个数为8个;输出层神经元个数为1个,表示收盘指数。设置隐含层和输出层的激活函数分别为tanh和purelin,系统训练误差为1e-5,学习率为0.4,最大训练次数为1 000次。

为了更好地说明本文提出的PCA-IFOA-BP神经网络模型具备有更好的预测性能,本文还将采用传统BP神经网络,PCA-BP神经网络以及PCA-FOA-BP神经网络三种模型对股票价格进行预测。

图3为训练集在果蝇寻优过程中适应度值随着迭代次数变化的情况。

图3 适应度值变化图

由图3可知,在迭代初期,相比于FOA,采用IFOA时,适应度值能够快速收敛到一个较小值,随着迭代次数的增加,改进的果蝇算法能够在一定程度上跳出局部最优,搜寻全局最优。此外,IFOA的最优适应度值(收敛值)明显优于FOA的最优适应度值(收敛值)。综上,IFOA较FOA有着更快的收敛速度和更好的全局寻优能力。

3.5 股票价格预测

在采用IFOA和FOA分别对BP神经网络的权值和阈值参数优化后,得到了最优的初始权值和阈值,将权值和阈值代入到BP神经网络中进行模型训练,并对股票价格进行预测。BP神经网络、PCA-BP神经网络、PCA-FOA-BP神经网络以及PCA-IFOA-BP神经网络四种算法的训练曲线和预测结果分别如图4和图5所示。

图4 BP网络训练曲线

图5 预测结果图

由图4可以看出,经过IFOA优化后的BP神经网络的收敛速度最快,且IFOA优化后的BP神经网络具有更小的训练误差。由图5可以看出,采用PCA-IFOA-BP神经网络的股票预测结果的总体趋势与实际股票价格趋势基本一致,且相较于PCA-FOA-BP神经网络模型、 PCA-BP神经网络模型、BP神经网络模型的预测结果,PCA-IFOA-BP神经网络模型的预测结果更加接近实际值,具有更小的预测误差,其更好地实现了股票价格的预测。

3.6 模型预测性能对比分析

本文将采用均方误差MSE(Mean Square Error)和平均绝对误差(Mean Absolute Error)作为评价指标来评价模型的有效性。MSE和MAE的定义分别为:

(16)

(17)

式中:fi表示模型的预测结果,yi表示真实值。各个模型的预测误差值如表3所示。

表3 均方误差和平均绝对误差结果表

由表3可知,从MSE和MAE两个评价指标来看,BP、PCA-BP、PCA-FOA-BP、PCA-IFOA-BP的预测误差均逐渐降低。故相比于BP、PCA-BP、PCA-FOA-BP,本文提出的PCA-IFOA-BP具有更高的预测精度。

4 结 语

本文提出了一种基于PCA和IFOA-BP神经网络的股价预测模型。首先,采用主成分分析法对样本数据进行降维处理,有效减少BP神经网络的输入个数。其次,通过改进的FOA算法优化BP神经网络的结构参数,相比于FOA,IFOA的收敛速度和求解精度均有明显的提升。将基于PCA和IFOA-BP神经网络模型应用于股票价格预测,同时将该模型与BP神经网络模型、PCA-BP模型、PCA-FOA-BP模型进行了对比。从仿真结果可知,PCA-IFOA-BP神经网络模型较其他模型具有更快的收敛速度和更高的预测精度,能够较好地反映股票价格的涨跌情况,为投资者提供合理有效的参考。

猜你喜欢
股票价格果蝇权值
一种融合时间权值和用户行为序列的电影推荐模型
果蝇遇到危险时会心跳加速
2021年大樱桃园果蝇的发生与防控
小果蝇助力治疗孤独症
果蝇杂交实验教学的改进策略
上市公司财务指标与股票价格的相关性实证分析
人民币汇率与上证指数互动的实证研究
员工持股计划对股票价格的影响
实证分析会计信息对股价的影响
财务风险跟踪评价方法初探