基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测

这是一篇科研论文的实证模仿求解,由于数据量不是很大,可能存在过拟合的情况,过拟合的处理就比较麻烦了,嘿嘿,我们暂时忽略这个,后期出一个专门处理过拟合与欠拟合处理,欢迎大家浏览,大家一起进步学习,*源码和源数据这我这里,需要可以留言。*

一、数据的选择
1.数据来源—-取值国泰安或者同花顺
训练样本与检验样本的选取(检验样本需要包括10月30日数据)
二、数据预处理
在科学研究中,经常要将多变量样本提供的信息进行相关研究,但在许多情况下,各个变量之间不是独立的,它们之间存在或大或小的相关性。这不仅使研究变得复杂,还可能使研究结果不理想。在这一点上,我们需要一个减少变量个数的降维方法,不能使用盲目的主观的消除,主成分分析是分散的一组变量的数据,关注几个综合指标统计数据的探索性分析方法。利用降维的思想,多个变量为少数几个不相关的主成分,从而描述数据集的内部结构,所以都达到降维的目的,并可以在更大程度上保持数据完整性。
1.主成分分析(分别对交易类指标和基本面指标进行降维再综合)
主成分分析(principal component analysis)是1901年Pearson对非随机变量引入的,1933年Hotelling将此方法推广到随机向量的情形,主成分分析和聚类分析有很大的不同,它有严格的数学理论作基础。
主成分分析的主要目的是希望用较少的变量去解释原来资料中的大部分变异,将我们手中许多相关性很高的变量转化成彼此相互独立或不相关的变量。通常是选出比原始变量个数少,能解释大部分资料中的变异的几个新变量,即所谓主成分,并用以解释资料的综合性指标。所以,主成分分析实际上是一种很好降维方法。
1.1输入向量的确定
本文拟将19个交易指标和12个基本面指标运用SPSS做主成分分析,分析步骤和结果如下:
(l)输入原始数据至SPSS,将其标准化。
(2)将标准化后的数据做主成分分析,输出的部分结果如下表:

表1.1 交易指标主成分分析表
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

表1.2 基本面指标主成分分析表
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

上表中第一列数据为各主成分对应的特征值,第三列为各主成分的累积方差贡献率。
为保证原始数据的完整性,本文在选取主成分个数时不拘泥于特征值大于1和累积方差贡献率大于80%的一般准则。由此我们从交易指标数据中提取4个主成分,从基本面指标数据中提取7个主成分。

A.碎石图

表 19个交易指标碎石图
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

表 12个基本面指标碎石图
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

B.主成分系数表
将以上数据带入SPSS中,将每一列的数据除以主成分相对应的特征值的平方根便可得到各主成分中每个指标所对应的系数。系数矩阵如表1.3:

表1.3交易面指标主成分系数表
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

表1.4 因子得分
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

将表中每个指标所对应的系数与各指标相乘后求和即得到主成分月
11个主成分的函数表达式。

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

上述式中表示原始变量经标准化后的数据,

2.数据归一化处理
归一化的方法是什么,公式,MATLAB的实现代码 本文采用的数据归一法为最大最小法,函数形式如下:
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》
式中,xmin为序列中的最小数;xmax为序列中的最大数。
在案例中,归一法函数采用Matlab自带函数mapminmax实现,其代码表达式为:
%% 归一化
% 训练集
[Pn_train,inputps] = mapminmax(input_train);
Pn_test = mapminmax(‘apply’,input_test,inputps);
% 测试集
[Tn_train,outputps] = mapminmax(output_train);
Tn_test = mapminmax(‘apply’,output_test,outputps);
三、训练过程与模型的确定
1.隐含层数确定
选取一个隐含层的原因:
1989年,RoberHecht-Nielsen证明了对于任何闭区间内的一个连续函数都可以用一个隐含层的BP网络来逼近。因而,一个3层的BP网络可以完成任意的n维的映射。只有学习不连续函数时才需要两个隐含层,故一般情况下最多需要两个隐含层。并且,为了更加与实际生活接轨,我们选取单隐含层,多一层网络复杂度会增加很多,运行时间加长,代码效率下降,当运用调试好的网络时候,达不到高效的目的,在保证预测精确度的前提下,选用单隐含层网络。

2.误差与迭代次数设定
初始设定 目标迭代次数10000,训练目标最小误差0.001
3.隐含层节点数确定
隐层节点数的确定是神经网络设计中非常重要的一个环节,一个具有无限隐层节点的两层BP网络可以实现任意从输入到输出的非线性映射。但对于有限个输入到输出的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,使得至今为止尚未找到一个很好的解析式,隐层节点数往往根据前人设计所得的经验和自己进行试验来确定。一般认为,隐层节点数与求解问题的要求、输入输出单元数多少都有直接的关系。而且,隐层节点数过少,则无法产生足够的连接权组合数来满足若干样本的学习;隐层节点数过多,则学习以后网络的泛化能力变差。
先根据隐含层公式求解出最有隐含层范围,先采用经验公式求出最佳隐含层的大致范围,然后,在保证网络结构,学习效率=0.1的前提下,每个隐含层训练6次求出每个隐含层下的网络性能,比较得到最优隐含层

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

表 不同隐含层数网络的性能
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

从表中 通过比较每个隐含层的训练均方误差,训练误差百分比,测试均方误差及测试百分比误差这4个指标,综合考虑以后,选取最优隐含层数3
4.学习率的确定
在保证网络结构,隐含层节点数=3,初始权重及阀值相同的前提下不同学习率的表性能比较如下表:不同学习率的性能比较,(表)

不同学习效率网络的性能
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

从表中 通过比较每个学习效率的训练均方误差,训练误差百分比,测试均方误差及测试百分比误差这4个指标,综合考虑以后,选取最优学习率0.15
5.节点转移函数的确定
在保证网络结构,学习效率=0.15,隐含层节点数=3,初始权值及阀值相的 前提下不同转移函数的表性能比较如下

表 不同转移函数对应的误差
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

从表中 通过比较每个学习效率的训练均方误差,训练误差百分比,测试均方误差及测试百分比误差这4个指标,综合考虑以后,选取最优节点转移函数purelin, purelin
隐含层:函数表达式y=x、MATLAB代码purelin函数
输出层:函数表达式y=x、MATLAB代码 purelin涵数

6.训练函数的确定
在网络的隐含层节点数为3,学习效率为0.15,初始权值阀值相同,节点转移函数为purelin ,purelin

表 不同训练函数对应的误差
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

从表 中 通过比较每个学习效率的训练均方误差,训练误差百分比,测试均方误差及测试百分比误差这4个指标,综合考虑以后,选取训练函数trainlm
7算法改进
取思维进化算法:(优点、权值调整过程、公式、有哪些参数,具体参数如何确定、)

优点:思维进化算法具有搜索全局寻优的能力,可有效的提高神经网络收敛速度和精度,提高故障诊断成功率,为弥补神经网络的不足创造了条件,

代码参数设置:
popsize = 180; % 种群大小
bestsize = 3; % 优胜子种群个数
tempsize = 3; % 临时子种群个数
SG = popsize / (bestsize+tempsize); % 子群体大小
S1 = size(Pn_train,1); % 输入层神经元个数
S2 = 3; % 隐含层神经元个数
S3 = size(Tn_train,1); % 输出层神经元个数
iter = 20; % 迭代次数

趋同过程的图如下

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

从上面4个图,可以知道思维进化算法迭代了2次就终止了,优胜子种群相对应的种群得分都高于临时子种群的,满足了基本要求。

思维进化算法产生的最优初始权值及阀值
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

四、实证结果分析与检验
1.神经网络预测效果评价指标(误差与误差幅度取绝对值的平均值,)
评价指标,采用误差百分比和误差的均方误差
2.以上神经网络的预测结果(降维改进)(8月31日数据检验结果)
图 网络结构
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

图 预测输出的值与期望输出
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

3.从图 可以看出网络预测效果良好,拟合精度高

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

网络训练误差图

从图 经过3次迭代训练,验证数据集的误差达到0.001637,训练集的误差小于0.001637,测试集的误差为 0.001637<测试集的误差<0.01,他们3者的误差都接进目标误差0.001。网络精度特别高,表明网络训练很好。

表 预测输出的值与实际值比较
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

4.采用10月30日数据检验的结果
在10月30的数据用前面主成分方法分别对交易面指标和基本面指标降维以后得到的11个综合主成分,然后将他们分别输入到最优神经网络里面,随机选取13个样本来验证,结果如下图
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

从图 可以看见前面训练的最优网络非常适合,数据预测与实际值相差很小,能达到给人们购买股票的指导效果

期望输出与期望输出、表
期望 实际 绝对误差 相对误差
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

五、不同结果之间的比较:
为了验证最优网络,分别作了余下4个网络,它们4个网络的期望输出都与最优网络的期望输出一样,网络结构都一样,预测结果如下
1.无降维有改进的预测结果——预期降维结果好(图、表)

               图 期望输出与预测输出的值

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

从图 可以看出网络预测效果良好,拟合精度高。

表 期望输出与预测输出的值
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

2.降维无改进的预测结果——预期改进结果好(图、表)

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

图 期望输出与预测输出的值

从图 可以看出网络预测效果良好,拟合精度高

表 期望输出与预测输出的值

期望 预测 绝对误差 相对误差
35.5500 33.8565 1.6935 0.0476
5.1600 7.3655 2.2055 0.4274
7.8500 4.9707 2.8793 0.3668
11.1500 11.9161 0.7661 0.0687
24.2300 23.4318 0.7982 0.0329
58.5000 61.1872 2.6872 0.0459
17.6400 17.9737 0.3337 0.0189
13.7500 10.3040 3.4460 0.2506
13.0800 13.4535 0.3735 0.0286
21.8200 22.4277 0.6077 0.0279
10.0400 10.3238 0.2838 0.0283
16.6700 16.6497 0.0203 0.0012
8.0500 6.6511 1.3989 0.1738

同上
3.只考虑交易类指标的结果(需改进)——预期综合指标好(图、表)

图 期望输出与预测输出的值
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》
从图 可以看出网络预测效果良好,拟合精度高

表 期望输出与预测输出的值比较

期望 预测 绝对误差 相对误差
35.5500 33.9627 1.5873 0.0446
5.1600 4.7286 0.4314 0.0836
7.8500 7.5361 0.3139 0.0400
11.1500 12.0587 0.9087 0.0815
24.2300 24.3671 0.1371 0.0057
58.5000 59.3181 0.8181 0.0140
17.6400 17.8031 0.1631 0.0092
13.7500 10.6984 3.0516 0.2219
13.0800 13.0473 0.0327 0.0025
21.8200 22.0069 0.1869 0.0086
10.0400 10.5395 0.4995 0.0498
16.6700 16.5581 0.1119 0.0067
8.0500 6.7125 1.3375 0.1662

4.只考虑基本面类的指标的结果(需改进)——预期综合指标好(图、表)
图 期望输出与预测输出的值
《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》
从图 可以看出网络预测效果太差。不宜采用基本面来训练网络。

表 期望输出与预测输出的值比较
期望 预测 绝对误差 相对误差
35.5500 25.1393 10.4107 0.2928
5.1600 7.0530 1.8930 0.3669
7.8500 13.6198 5.7698 0.7350
11.1500 19.0249 7.8749 0.7063
24.2300 25.8150 1.5850 0.0654
58.5000 19.7365 38.7635 0.6626
17.6400 15.0662 2.5738 0.1459
13.7500 27.7619 14.0119 1.0191
13.0800 9.4915 3.5885 0.2744
21.8200 18.5523 3.2677 0.1498
10.0400 15.7382 5.6982 0.5675
16.6700 18.3354 1.6654 0.0999
8.0500 25.2275 17.1775 2.1339

表 5个网络预测特性比较

《基于主成分(pca)与思维进化(mea)优化神经网络算法的股票预测》

从表可以得出 综合指标里面的PCA-BP-MEA组合方式的预测值均方误差 ,预测值百分比误差都是这5个网络里面最小的,表明网络预测效果最好,即是最优网络。
也就是综合指标降维以后的预测效果是最好的。

    原文作者:神经网络算法
    原文地址: https://blog.csdn.net/u014356002/article/details/53144700
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞