MLBP模型的应用实践及实验误差对比分析①
2019-07-23宫振华王嘉宁
宫振华,王嘉宁,苏 翀
1(南京机电职业技术学院,南京 211135)
2(江苏科技大学 电气与信息工程学院,张家港 215600)
3(南京邮电大学 管理学院,南京 210023)
随着经济改革开放初期[1],股份制开始诞生,我国股票发行市场随即开始萌芽.相比于美国市场,我国股票市场的起步较晚,但是经过三十多年经济的建设、证券制度和法规的逐步完善,市场已经越来越趋于成熟规范化发展.因此越来越多的人摇身变成"股民",投身于浩瀚的“股市”之中.
随着中国股票市场的不断发展,上市公司数量也在逐步递增,流通于证券市场的股票数量也随之增加[2].每只股票都拥有几十个不同的层面、维度上的数据,中小股民在面对多维度,数量巨大的数据时就加大了基于股票技术层面上分析的难度.投资者在处理过多的变量时,容易造成分析过程的混乱.
为了实现较为准确的股票预测,本文研究了MLP 和BP 神经网络模型,并结合两种模型构造了MLBP 模型,分别将爬取的股票历史数据作为神经网络的输入集,通过模型的调参处理,得出预测的结果.根据MSE 误差对比分析选取误差最小的作为股票预测的应用模型,并利用其找出每股变化所表现出来的动态运行规律,为股市中广大中小投资者等弱势群体服务,并指导其进行有效的价值投资[3].
1 模型建立
1.1 MLP 模型
MLP (Multi-Layer Perception)神经网络是一种结构为层层递进的人工神经网络,一组输入变量可以被映射、传递到一组输出变量.该网络输入层、隐藏层和输出层.除了输入节点之外,每个节点自身都带有一个非线性激活函数的神经元[4].隐藏层主要实现对输入空间的非线性映射,输出层则是实现结果的线性分类.
MLP 网络有输入层(最左边),隐藏层(中间两层),和输出层(最右边),MLP 只有向前传播过程.每个神经元上面都有对于一个输入的权值、一个偏置和一个激活函数.所以一个前向过程的流程就是input 输入,然后经过第一层神经元运算得到输出,然后第一层的输出作为第二层的输入运算,得到第二层的输出,直到输出层运算,最后得到结果.神经网络就是依靠这样一套机制来进行计算和预测的.神经网络模型图如图1.
图1 MLP 神经网络模型
1.2 BP 模型
BP(Back Propagation)前馈神经网络,是一种在MLP 神经网络基础上改进的反馈型学习网络.由两个阶段组成,第一阶段是将训练输入送入网络以获得激励响应;再将激励响应同训练输入对应的目标输出求差,获得最后两层的响应误差;第二阶段将输入激励和响应误差相乘获得权重的梯度;再将这个梯度乘上一个比例并取反后加到权重上.当整个训练网络输出层的误差缩小到期望值范围或训练次数超过阈值的时候,所有训练过程才最终结束,这就是BP 神经网络一次学习训练的全部过程.
BP 神经网络算法一般由三层或多层组成,是一种多层前馈神经网络.由输入层、输出层和隐含层组成[5].由于BP 模型具有误差反向传播,能够很好的改变网络的权值和阈值,因此其具有泛化能力.80%的人工神经网络中包含了BP 网络[6,7],所以是使用最广泛的神经网络模型[8],在股票预测分析系统中也会将BP 模型作为第一选择,BP 算法的模型如图2所示.
图2 BP 神经网络模型图
假设输入节点xj、隐层节点yi、输出节点O1分别表示BP 神经网络三层节点.隐节点与输入节点间的权值为Wij,输出节点与隐含层节点的网络权值为Tli.BP 算法的核心是对权值Wij,Tli的 调整和对阈值θ 的调整,使误差函数E沿梯度方向下降.假设在输出节点的期望输出为t1时,BP 模型的计算公式为:
(1)隐含节点输出公式:
(2)输出节点输出公式:
(3)输出节点误差的公式:
1.3 MLP 与BP 模型的结合
BP 和MLP 组合模型即为MLBP 模型,其是在BP 模型和MLP 模型的基础上进行改进的模型,将MLP 的多个隐含层放入到BP 模型中,因此MLBP 模型是有1 个输入层,2 个隐含层和1 个输出层的反向传播神经网络.
MLBP 模型的执行流程如下:
(1)首先获取股票的历史数据及待预测的数据,作为模型的输入集.
(2)对数据进行预处理,包括转置和归一化.
(3)构建MLBP 模型,并初始化参数.
(4)不断地进行调参进行训练,直到训练次数达到一定数值,保存训练数据训练出的模型(包括网络的层数、权值等参数).
(5)带入待测数据,进行预测,并进行误差分析.
主要MLBP 模型的流程图如图3所示.
图3 MLBP 模型流程
2 MSE 误差分析
MSE (Mean Square Error)均方误差[9]是衡量训练模型的输出值与真实值之间平方误差的总体期望偏差,如式(4)所示.
这里需要引入两个定义:
(1)估计的偏差bias
其中,期望作用在所有从随机变量采样得到的数据上,θ为真实值.如果bias为0,则称估计量是无偏的.
(2)方差Var
其中,µ是样本的均值.
此处,可以根据式(5)、式(6)将式(4)改写为:
MSE包含了偏差和方差,理想的估计具有较小的MSE或是在检查中会稍微约束它们的偏差和方差.
3 实验
3.1 实验过程与数据
实验包括数据爬取和模型对比两部分.首先通过Python 提供的Tushare 接口[10]爬取50 天的股票数据信息,对这些数据进行转置和归一化处理,并将数据分成训练数据集和测试数据集存入数据库.随后分别使用MLP、BP 和MLBP 模型对数据库中的股票数据进行训练和预测,并根据实验数据进行模型对比.
实验中的调参包括:Sigmoid 选取正切函数,初始权重的范围在[-0.1,0.1]之间,使用MSE计算误差.设训练次数记为T,T取值300 和500,学习速率记为N,N取值0.05、0.1 和0.15,动量因子记为M,M取值0.1,输入层记为I,隐含层记为H,输出层记为O,误差记为E.
实验内容是根据50 天的历史数据来预测未来3 天的股票信息.表1至表3分别是MLP、BP 和MLBP的预测数据.
3.2 实验结果分析
在这3 种算法中,BP 和MLBP 模型计算的误差要远远小于MLP 算法,而MLBP 模型相比BP 模型误差进一步降低.因为MLBP 在训练参数和权值时用了反向传播并更新的过程,所以能够更加准确的进行预测.模型误差对比如图4所示.
表1 50 天数据预测3 天数据表(MLP 模型)
表2 50 天数据预测3 天数据表(BP 模型)
表3 50 天数据预测3 天数据表(MLBP 模型)
三种模型的误差都非常均匀,因此预测的结果具有平稳性.但是三种算法的都有的缺点是当选取的数据量特别多时,会导致训练时间过长,而较少的数据量虽然能够加快运算速度,但预测的误差会变大,因此选择合适的数据规模可以权衡误差与效率.
图4 模型误差对比图
4 MLBP 模型的应用
4.1 股票分析平台
通过对股票数据的训练和预测实验,可证明MLBP模型更能够准确的对股票数据进行分析,因此其在股票分析方面具有潜在的应用价值[11].
为了能够极大地发挥该模型的作用,同时让用户更加方便的进行股票数据的分析和预测,本文将该模型应用于股票分析平台.该平台为Django 框架[12]的WEB 应用程序,以MLBP 模型作为平台的核心业务部分.另外增加了注册登录、上市公司信息、财务报表、行业分类等功能作为辅助部分.平台的用例图和功能模块图分别如图5、图6所示.
图5 平台用例图
4.2 平台功能设计
平台包括用户、股票、企业、企业报表等实体,各个实体之间具有一定关联性包括:
(1)每个用户可以查看所有股票基本信息、查看所有企业信息和所有企业报表信息.
(2)每只股票对应一个企业,并且每只股票的所有信息能被所有用户查询.
(3)每份企业报表都可以被所有用户查看,每份企业报表对应一个企业.
(4)每个企业对应一只股票,并且拥有许多企业报表,每个企业可以被所有用户查看.
实体关系(E-R)图如图7所示.
图6 平台功能模块图
图7 平台E-R 图
4.3 平台运行
平台部署在本地服务器上,通过访问项目网址可展示平台界面.平台首页如图8所示.
以股票行情预测模块为例,用户在头部输入框中输入查询的股票代码,系统后台调用财经数据接口获取交易数据,并将数据放入神经网络算法代码中处理,将各个算法的输出值使用MSE 误差估计模型进行比较,最后得出最佳的预测结果.后台将运行结果返回到前台页面展示,如图9所示.
图8 平台首页
图9 股票行情预测界面
5 结语
通过分析现今的股票市场发展,根据众多中小投资者对股市信息的预测需求,本文研究了MLP、BP和MLBP 模型,并通过实验和模型对比可知,MLP 和BP 组合模型可以进一步提高预测的准确度,降低误差率,从而使投资者可以根据预测的股票信息更清楚的进行投资决策.另外通过将MLBP 应用在WEB 程序中,更加方便了用户操作,提高了模型的应用价值.
在接下来的工作中,还会继续完善MLBP 模型,在降低误差的基础上进一步提高运行速率.同时广泛爬取不同种类的股票信息,拓展股票分析平台的功能,为不同需求的用户提供多方面服务.