教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

基于神经网络的股票价格走势预测及其MATLAB实现 - 论文(5)

来源:网络收集 时间:2026-08-23
导读: 3.交叉验证(Cross-Validation)原则:训练误差曲线与确认误差曲线相背离,停止。 四. 神经网络算法 BP神经网络在数据预测中的算法流程图如下: 开始 导入并归一化数据 样本数据分类 训练数据 初始化网络给定神经

3.交叉验证(Cross-Validation)原则:训练误差曲线与确认误差曲线相背离,停止。

四. 神经网络算法

BP神经网络在数据预测中的算法流程图如下:

开始 导入并归一化数据 样本数据分类 训练数据 初始化网络给定神经元个数 测试数据 N 训练网络 网络收敛代入测试数据

仿真结果评价 合格 Y 结束 4.1 输出输入变量的选取

每日股票价格变化涉及的变量众多,有开盘价,收盘价,最高价,最低价,成交量,成交额,还有众多技术指标。采用什么作为输入量,什么作为输出量是一个必须考虑的问题,好的输入量配合好的模型和算法,就会给出很好的结果。

考虑到股票价格中收盘价是最重要的,其是衡量每日股价涨跌的唯一价格,所以这里我

21

们只选择和股票收盘价的量作为输出变量,这些量有:每日涨跌(即布尔量涨或跌,可将平盘看作上涨),每日涨跌幅度(-10%左右到10%左右),每日收盘价。

至于输出量可选择前几日股票的开盘价,收盘价,最高价,最低价,成交量,成交额等量,例如选择前五日的股票的这些数据作为输入量。但是这样会有一个问题—输入变量维数会很高,会有30个输入变量。如此多的输入变量,需要的训练样本将会是十分庞大的。机器学习领域已经证明需要的训练样本是随输入变量的维数成指数增加的,也就是说输入变量每增加一维,所需要的训练样本的个数要在原来的基础上翻几倍,这也就是所谓的“维数灾难”。所以选取这么多输入量明显是不可取的,因为训练样本的规模将无法满足,得到的结果必然会是过拟合的,没有泛化能力,也就没有实用价值。所以变量的维数必须减小,可以通过两个方面减小维数:第一,减少需要数据的天数,将前五日改为前三日或者前两日;第二,减小每天的输入变量,比如去掉最高价,最低价等。我们采用第二种只考虑股票的收盘价和成交量,原因是股票的收盘价最重要,而成交额可以通过成交价和成交量估算出来,所以只用成交量。另外股票一般以五天为一周期即五个工作日,所以采用前五天的每天收盘价和每天的成交量作为输入量。

4.2数据归一化处理

数据的预处理和后处理是有效训练神经网络的很重要的步骤,常见的方法是将原始数据进行归一化处理,即通过一定的线性变换将输入和输出数据统一限制在[0,1]或者[-1,1]区间内。归一化的数据消除了输入量之间的数量级差别,比如股票价格和成交量之间存在很大的数量级差别,若不归一化,在神经网络计算权值和阈值的时候,可能使成交量相关的权值和阈值变得很小,这样在计算机存在舍入误差时很有可能被去掉或者改变,影响到训练后神经网络的性能。

我们可以采用Matlab的代码premnmx,将数据归一化到[-1,1]区间;采用postmnmx代码将归一化后的数据还原。

4.3数据样本分类

样本数据的分类一般是将样本数据分为训练数据和测试数据,训练数据用来训练网络,测试数据用来测试网络的预测能力。这样的话就可以通过测试数据代入训练后的网络,来访真测试数据的输出值,和真实的输出值做比较便可以看出网络的优劣。测试数据和训练数据规模的比例不宜太高,太高的话训练的网络使用的训练数据少,测试数据多,测试结果一般都会很差,这是可想而知的,用少量的数据来表示大量的数据显然是不好的。我们选择样本数据的前4/5做训练样本,后1/5来做测试样本。

4.4网络初始化

网络初始化是给定网络的一些基本参数包括隐层个层数,隐层神经元的个数,还有网络阈值和权值的初始选择,已经训练函数的选择等。这里的参数主要指的是BP神经网络中的隐层层数和隐层神经元的个数。由于单隐层的BP网络可以解决大多数的数据预测问题,理论上也证明了单隐层的BP网络有着很强的插值能力和拟合能力,其可以以任意精度逼近L2函数空间的任意函数。多隐层的BP网络有着某些特殊的用途,在数据预测方面一般的数据输出量和输出量的关系用单隐层BP网络来刻画已经足够了。 关于隐层神经元个数的选取是预测问题中一个很重要的问题,其直接关系到模型结果的好坏。太少的隐层神经元个数会导致得到的结果拟合能力比较差,预测误差较大;太多的隐层神经元会导致模型过拟合,缺乏泛化能力,预测结果难以令人信服。

一般采用交叉验证法来确定隐层神经元数,该方法将数据分为训练数据和验证数据,选取不同的神经元个数利用训练数据训练网络,再将网络用在验证数据上验证,求误差,之后

22

将训练数据和验证数据交换,同样求误差,两次误差求平均。哪种神经元个数对应的误差最小就选择那个神经元。这种方法有一个确点就是要不断的代入不同的神经元个数进行训练,当样本数据较大时,耗时将相当多。当然对于股票数据来说,样本数据的量也不小,这样一次次的训练将会很浪费时间。

我们回想到普通的数据拟合问题当中,当待估计参数的个数较多并很接近训练样本的个数时,将会出现过拟合现象,根本原因是待求参数过多,而样本数据过少,简单的说就是方程组的变量很多,而方程组的个数却很少。这时数据的拟合程度会非常好,而预测能力却非常差,原因是过多的参数,过少的样本会导致每一组样本的作用会变得很大,这样求解方程时将会把每一组样本里的一些误差和个性的东西带入模型当中,而预测数据的误差是随机的,原来的模型就无法应对这些误差了。欠拟合现象刚好相反,即样本数据很多,而模型参数却很少,使得给出的模型对数据的可解释性很差,模型考虑到数据的共性成分很多,而对每组样本数据的个性很少,这样同样使得模型预测能力很差。对于某些样本数据比较规范,规律比较明显有时采用比较少的参数,模型的泛函依然会很强。说以对于模型参数个数的选择不仅依赖于样本数据的多少还依赖于样本数据的分布规律。

那么和BP神经网络中的待求参数是什么呢?答案是网络的权值和阈值,也就是说一个网络中权值和阈值的个数就是该神经网络中待求参数的个数,换句话说一个BP神经网络中的所有权值和阈值都给定了这个网络就给定了。 隐层神经元的个数决定着这些权值和阈值个数。简单的说n的隐层神经元,m个输入量一个输出变量的单隐层前馈网络对应的权值数是(m?n?n)和阈值的个数是(n+1)个,一共是(m?n?2n?1)个,也就是说一共有这么多待求参数,如果假设样本的个数为k个的话,要不过拟合的必要条件是

k?1,这样我们就给了隐层神经元个数的一个上界估m?2k?1计。但仅仅满足这个条件是不够的,一般情况n要不小的多,才能不过拟合。一般来

m?2m?n?2n?1?k,也就是说n?说样本数据规律比较明显,映射关系比较简单所需要的神经元个数也就越少,但股票的量价关系复杂,股价的波动也很难用简单的函数关系表示,所以股票预测问题中神经元个数的选择不会太少。我们可以选择神经元个数在[k?1]之内选取,采用交叉验证法来确定神经

2(m?2)元个数。

可以采用Matlab代码

net=newff(PR,[S1,S2,…,Sn],{TF1,TF2…TFn},BTF) 对神经网络进行初始化配置

其中,PR为R×2维矩阵,表示R维输入矢量中每维输入的最小值和最大值之间的范围;[S1,S2,…,Sn]中各元素分别表示从第一层隐层开始到输出层的各层神经元的数目;{TF1,TF2…TFn}中各元素表示各层神经元采用的传递函数;BTF表示神经网络训练时所用的训练函数;net为生成的BP网络对 …… 此处隐藏:2885字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于神经网络的股票价格走势预测及其MATLAB实现 - 论文(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/443741.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)