遗传算法优化BP神经网络的股价预测研究
2020-04-09隋金城
◎隋金城
一、引言
最近几年,越来越多的专家学者利用神经网络算法进行股票预测,但普遍存在选取的输入属性过少,预测天数普遍过短的问题。因此,本文在选择输入属性时,不仅仅使用所选股票金陵药业自身的指标,还增加了深证成指和中国生物医药指数连续5天共计135个输入属性,预测金陵药业接下来5天的收盘价。使用遗传算法优化BP神经网络的初始权值和阈值,构建遗传算法优化BP神经网络的股票预测模型。不仅提高了预测的准确度,而且缩短了模型的运行时间。
二、GA-BP神经网络预测模型
1.BP神经网络。
BP神经网络由多个网络层构成,分别是输入层、隐含层和输出层。它的运行过程包含前馈传播和反向传播两个部分。在前馈传播中,信息从输入层,经过隐含层,到达输出层。每一层的状态只能影响其下一层的状态,而不能对其它层产生任何影响。若输出层没有获得理想的输出,则开始反向传播,误差信号将沿着原网络返回,每一层的连接权值和阈值会逐一修改。该过程不断迭代,直到误差信号满足标准。
由于BP神经网络初始神经元之间的权值和阈值是随机选择的,容易陷入局部最小值。因此本文使用遗传算法对初始神经元之间的权值和阈值进行优化。
2.遗传算法。
遗传算法是一种特殊的进化算法,包含了遗传、变异等生物学知识。可以说,遗传算法是一种优化技术,它试图找出产生最佳输出的输入值。
首先要产生初始种群。编码长度为输入属性的数量,用二进制方法编码,编码值为“0”或“1”。随机产生 n个个体,即 n 个初始种群。
然后计算适应度函数。适应度函数是遗传算法获得最佳结果的关键,适应度越大,则个体遗传进入下一代的概率也就越高。本文选择误差平方和作为适应度函数。
选择运算选用轮盘赌方法,个体适应度越大,被选择的可能性就越大。交叉运算使用算术交叉算子,将个体两两随机配对获得新个体。变异运算采用非均匀变异算子,随机产生变异点,防止陷入局部最优,维持种群丰富性。
3.遗传算法优化BP神经网络。
遗传算法优化BP神经网络的步骤如下:
(1)初始化种群。
(2)计算适应度函数。
(3)用轮盘赌方法选择个体。
(4)交叉、变异,获得新个体。
(5)计算新个体的适应度。
(6)如果获得符合预期的个体或超过设置的最大迭代次数,继续下一步。否则,返回(2)继续执行。
(7)解码,获得优化的权值和阈值。
三、实验与结果分析
1.实验数据。
利用Python从开放金融大数据平台Tushare获取金陵药业(000919)、深证成指(399001)和生物医药指数(399441)的股票数据。使用2013年1月17日到2019年3月20日共计1500个交易日的数据进行训练。共选择135个输入属性(金陵药业、深证成指和中国生物医药指数连续5天的开盘价、收盘价、最高价、最低价、涨跌幅、成交额、成交量、5日均值及5日均量)。用GA-BP模型预测2019年3月21日到2019年3月27日期间5个交易日的股票收盘价。
本文特别选择将深证成指(深圳证券交易所成份股价指数)和中国生物医药指数加入到训练数据。深证成指代表了所有深圳证券交易所上市公司的股票价格波动;而生物医药指数是一个行业指数,它可以衡量中国生物医药行业股票的表现。考虑这两个指数是因为深证成指提供了中国股市的总体情况,而生物医药指数则提供了中国生物医药行业的特定情况。
2.评价指标。
使用平均绝对误差(MAE)、平均绝对百分比误差(MAPE)和均方根误差(RMSE)来衡量模型预测股价的性能。
它们的计算公式如式(1)-(3)所示。
其中,xi代表第 i个样本预测值,ti代表第i个样本实际值,N为样本数目。
3.实验结果分析。
共有135个输入属性,预测未来5天收盘价,隐藏层为1层,神经元个数为50个,建立3层BP神经网络,拓扑结构为135-50-5。传递函数方面,隐藏层使用S型正切函数tansig,输出层使用线性函数purelin。为了消除不同数据间量级差异大而造成的预测误差,需要对原始数据进行归一化处理,使用matlab中的premnmx函数将网络的输入数据和输出数据归一化到[-1,1]。训练算法选择 Levenberg-Marquardt算法,可以获得更快的训练速度。神经网络的学习速率设为0.1,最大训练次数1000,目标误差0.00001。利用遗传算法进行优化,染色体长度设置成135,种群大小40,最大迭代次数100。对比分析BP神经网络模型和遗传算法优化BP神经网络模型,得到股价预测图如图3所示。预测性能的优劣通过MAE、MAPE、RMSE及模型的运行时间评判,对比结果如表1所示。
?
相比BP神经网络模型,遗传算法优化BP神经网络模型预测准确度更高,建模时间也更短。
四、结语
本文用遗传算法优化BP神经网络的初始权值和阈值,构建了遗传算法优化BP神经网络的预测模型,预测中国生物医药公司金陵药业连续5天的股价,相较BP神经网络获得了更好的预测效果。数据准备和初步分析是提高股票价格预测模型准确性的一个有效方法。在以后的研究中,可以尝试加入更多相关的输入属性进行预测,以求获得更好的预测效果。