资源描述
2009年集美大学数学建模选拔题
选拔题目: 未来5年厦门楼盘走势预测
所属学校: 集美大学诚毅学院
参赛队员:1. 朱文宏 信息工程系电子 0793
2. 林建辉 信息工程系电子 0793
3. 蔡秀丽 信息工程系自动化 0791
日期: 2009 年 8 月 4 日
基于BP神经网络的厦门楼盘走势预测
摘要:本文基于BP神经网络应用于预测的原理,提出预测步骤及预测可行性,探讨建立基于BP神经网络的预测模型的关键技术,包括样本的选取与预处理、输入输出变量的选取、隐层节点数的确定、初始权值和阈值的选取、激活函数、训练算法与参数的选取,最后建立合理的网络模型;结合住宅市场的实际情况,建立两类BP 神经网络预测模型:基于时间序列的趋势预测模型以及基于影响因素的回归预测模型,即分别采用神经网络趋势预测和回归预测的思路,把住宅市场的供给、需求与房价的历年数据以及其影响因素的数据分别作为学习样本,建立预测模型,进行预测。
关键词:BP 神经网络;住宅市场;时间序列;回归预测;
一:问题的提出与重述
华尔街金融风暴越演越烈,日本、欧洲一些国家都出现了经济衰退,世界经济增速放缓,悲观的情绪在市场上蔓延,国际经济环境的剧烈变化使中国经济正经受着严峻的挑战和重大考验。
随着金融危机对国内的影响的不断加深,物价,粮食,原油价格不断上升,股市处于低迷状态。过去这两三年里,楼价节节攀升的消息不断传来,到2008年厦门楼市均价10000元/m2。今年以来,厦门楼市由冷转暖,高性价比楼盘大受欢迎,商品住宅总成交量出现暴涨,楼市再现排队抢房现象,这或许是深度调整后的集中爆发。结合当前国际国内金融形势,通过2001年-2008年实际数据,预估未来五年厦门楼市走势,并给购买者一个建议。
二:模型的符号约定与说明
zi: 神经元的第i个输入;
: 神经元的阈值;
Y1: 人均居住使用面积(平方米);
Y2: 市区人口总数(万人);
Y3: 人均可支配收入(元);
Y4 : 人均消费性支出(元);
Y5 : 住宅平均售价(元/平方米);
Y6 : 房地产开发投资(亿元);
Y7 : 地区生产总值(亿元);
Y8 : 贷款利率(%);
Y9 : 住宅销售面积(平方米);
E: 测试集网络输出和目标的误差;
: 输出层第k个神经元与隐含层第j个关联度
: 输出层第j个神经元与隐含层第i个关联度
: 输入量
: 输出量
: 隐含层节点数
: 输入层节点数
m : 输出层节点数
: 隐含层激活函数
Mse: 均方误差
η : 学习率;
a : 动量因子
goal: 收敛误差界值;
三:模型的分析
BP 神经网络是目前神经网络中使用最为广泛的网络模型,它无论在网络理论还是网络性能方面都已经非常成熟,其突出的优点就是具有很强的非线性映射能力和柔性的网络结构。现实世界中的许多问题,如模式识别、图像处理、系统辨识、函数拟合、优化计算、最优预测等,都可以转换成这种神经元网络来处理,因而BP 网络的应用范围较为广泛。
3. BP 神经网络应用于预测的原理及步骤
3.1 BP 神经网络应用于预测的原理
BP 神经网络用于预测的基本原理是:建立一个神经网络,用历史数据来训练神经网络,通过神经网络的自学习、自适应来调整网络的连接权的权值去逼近预测对象与预测变量之间的非线性关系,各因子的权重隐含在神经网络的权值中而无需人工干预。经过训练的神经网络提取了蕴藏在样本中的非线性映射关系,并以权值的分布形式储存起来。在预测阶段,当向神经网络输入与训练集数据(非样本)相似的预测变量数据时,它便能完成从输入的预测变量到输出的预测对象的任意非线性映射,从而正确描述无法用数学关系来描述的预测变量与对象之间的规律。在一定的误差容限内,还可以处理非完全的数据。
3.2 BP 神经网络应用于预测的步骤
BP 神经网络用于预测有三种方式:趋势预测、回归预测和组合预测。本研究的目的就是在现有的数据条件下,采用BP 神经网络趋势预测和回归预测的思路,把厦门市房地产住宅市场的供给、需求与房价的历年数据以及其影响因素的数据分别作为学习样本,通过BP神经网络分析厦门市房地产住宅市场的供给、需求、房价与其影响因素之间的关联关系,然后预测厦门市房地产住宅市场未来的发展情况。具体步骤如下:
3.2.1 输入变量的分析与预处理
一般将一个具有多个输出的网络模型转化为多个具有一个输出的网络模型效果会更好,训练也更方便。为使网络训练更加有效,对神经网络的输入、输出数据进行一定的预处理可以加快网络的训练速度。Matlab提供的预处理方法有归一化处理、标准化处理和主成分分析。常采用的是归一化处理,即将输入、输出数据映射到[ - 1, 1 ]范围内,训练结束后再反映射到原数据范围。
3.2.2.BP 神经网络结构设计
(1)网络层数的确定
理论上证明:具有偏差和至少一个S 型隐层加上一个线性输出层的神经网络,能够逼近任何有理函数。本文预测模型采用三层神经网络,即输入层—隐层—输出层结构。大多数通用的神经网络都预先预定了网络的层数,而BP网络可以包含不同的隐层。但理论上已经证明,在不限制隐含节点数的情况下,两层(只有一个隐层)的BP网络可以实现任意非线性映射。在模式样本相对较少的情况下,较少的隐层节点,可以实现模式样本空间的超平面划分,此时,选择两层BP网络就可以了; 当模式样本数很多时,减小网络规模,增加一个隐层是有必要的,但是BP网络隐含层数一般不超过两层。
(2)隐层单元数的确定
有关研究证明,网络训练精度的提高,可以采用一个隐层,而增加其神经元数量的方法来实现,这比增加网络隐含层数的方法简单的多。
(3)初始权值的选取
置隐层节点的初始值为均为分布在零附近的很小的随机值。置输出层节点所连的权值数的一般为+1,另一半为-1。网络节点的偏置(θ)统一设置为零。
(4)响应函数(传输函数)的选取
由于Sigmoid 函数的可微性,且微分式简单,易于表示,同时它又有很好的非线性映射能力,所以多作为映射函数。本研究采用了Sigmoid 激活函数。
对于每个节点 :
隐含层激活水平 :
隐层输出 :
输出层激活水平 :
输出层输出 :
则 :
3.3 训练算法及训练参数的选择
针对不同的应用,BP网络提供了多种训练,学习方法,通常对于包含数百个权值的函数逼近网络,训练函数trainlm收敛速度最快。将RPROP算法的训练函数trainrp 应用于模式识别时,其速度是最快的。用变梯度算法的训练函数traincgf,在网络规模比较大的场合,其性能都很好。
(1)训练算法的选择
LM 算法适用于解决大、中规模问题,尤其在解决大规模问题时,LM 算法有着突出的优点:一次迭代能使误差大幅度下降。本研究采用了LM 算法。
(2)训练方式的选择
神经网络的训练模式有两种:逐变模式和批变模式。在逐变模式中,网络输入每提交一次,梯度计算一次并更新权重。在批处理模式中,当所有的样本输入并计算其总的误差后网络权值才被更新。[使用批变模式不需要为每一层的权重和阈值设定训练函数,而只需为整个网络指定一个训练函数,使用起来相对方便,而且许多改进的快速训练算法只能采用批变模式,在这里我们只讨论批变模式,以批变模式来训练网络的函数是train.]
(3)训练参数的选取
BP 算法中几个常用的参数,包括学习率η,动量因子a 及收敛误差界值goal 等,这些参数对训练速度的影响很关键。
3.4 网络训练与预测
把输入样本输入到神经网络,计算网络输出值,然后与实际输出相比较,使用选定的网络训练算法,以一定的规则修改网络的连接权值。反复计算误差和修改权值,直到误差达到一定的范围以内,输入检验样本,判断检验结果;还原处理及结果分析,对样本结果进行还原处理得到实际值,如果训练误差在允许范围内,而且网络泛化能力较好,就可以利用训练好的BP 神经网络来预测房地产住宅市场的未来发展情况。
四:模型的建立与求解
4.1基于历年厦门住宅平均售价数据的 BP 网络预测模型
4.1.1 预测步骤
由于激活函数一般为 sigmoid 函数,当自变量大于一定值后,函数将趋近于 1 或者 0,随着自变量的增大或减小,函数值将变化不大。如果直接将实际数据作为神经网络的输入参数计算,将会使学习一开始就处于饱和状态,看不出不同样本的差别,无法进行调整。
为了使输入样本对神经元的刺激有可比性,在学习之前,需要对样本数据作预处理,通常使把样本值换成[0, 1]或者[-1,1]范围内的数据,这一过程就是前面讲的归一化处理。使 BP 网络的输入输出值限制在区间[0.2,0.9]之间,然后在输入网络进行计算。
具体算法如下:
(1)归一化处理,使所有数据的值处于[0.2,0.9]之间。
原始数据表如表 1 所示,归一化后的数据表如表 2 所示。
表 1 2001年—2008年厦门市住宅实际平均售价数据表
年份
平均售价(元/m2)
年份
平均售价(元/m2)
2001
2558
2005
4744
2002
2595
2006
6601
2003
3137
2007
8907
2004
3768
2008
10000
表 2 2001年—2008年厦门市住宅实际平均售价归一后数据表
年份
平均售价
年份
平均售价
2001
0.2
2005
0.4056
2002
0.2035
2006
0.5803
2003
0.2545
2007
0.7972
2004
0.3188
2008
0.9
4.1.2 住宅平均售价预测结果分析
预想达成以下目的:
(1)考察 BP 网络对住宅平均售价的预测效果。
(2)考察是否能够用一个训练好的网络来根据历年住宅实际平均售价数据来预测住宅平均售价。如果能,那么说明历年收入数据具有一定的相关性。
A:预测网络输入节点的确定
依据 2001年到 2008 年获得的住宅实际平均售价数据,拟建一个有 2个输入节点的三层网络。这 2个节点依次为历年住宅实际平均售价。
B:隐含层的考虑
根据Hornik 提出的公式:求得。其中,n 为输入层节点数,m 为输出层节点数。根据公式,确定隐层节点数的取值范围为2~5,但是最佳的隐节点数要通过实验测试。本文采用Matlab6.5 的BP 神经网络工具箱进行仿真实验,实验中参数取值:goal=0.1,epochs=5000,η=0.6。通过多次实验确定隐含层最佳个数为3。
C.训练及结果分析
在训练时训练函数设为 trainlm,学习函数设为 learngdm,传递函数设为purelin。训练步数为 5000 步,训练精度为 0.1。训练收敛的极快,多次训练过程中保持网络训练函数、学习函数、传递函数均不变。训练的最佳效果收敛图以及预测图如图3、图4所示。
图3 预测收敛图
图4 结果预测图
训练多个网络后, 从图中可以看到能够达到预期的预测效果。 当训练好一个网络,该网络能较准确的预测农民收入。分析能够训练好网络有以下两种可能:
A: BP网络数据拟合能力强,不需要采取其他方法增强网络的数据拟合能力。
表3 真实值与预测值的比较
年份
预测值
真实值
误差
误差率
2005
3900.8
4744
843.2
0.178
2006
6836.9
6601
235.9
0.036
2007
10486.8
8907
1579.8
0.177
2008
10494
10000
494
0.049
从上表可看出,误差都在允许的误差范围内,这样的网络结构获得了较好的拟合效果,预测值和实际值之间的误差也比较小。从某种程度上依然可以预测 2009年、2010年、2011年、2012年、2013年厦门住宅平均售价情况。
B:历年厦门住宅平均售价相关性强。
根据历年厦门住宅平均售价变动趋势,可预测 2009年、 2010年、2011年、2012年、2013年厦门住宅平均售价。所得预测结果见表4。
表4 预测结果
年份
预测值(元/m2)
年份
预测值(元/m2)
2009
10494
2012
10494
2010
10494
2013
10494
2011
10494
从预测结果表明,在不考虑其他因素的影响,未来5年厦门住宅平均售价处于一个比较平稳的趋势,不会发生很大的变动。
4.1.3 预测程序的编写过程
用 MATLAB 建立模型,实现预测的程序见附录一。
4.2 基于影响厦门住宅销售平均价格因素的 BP 网络预测模型
4.1.1 预测步骤
(1) 指标的选取
由于影响住宅市场的因素众多,同时部分影响因素具有不可量化的特性。该模型在使用 BP 神经网络对住宅市场进行预测时,选取输入变量时充分考虑了其代表性以及指标之间的相关性,同时结合可量化的原则,选用的影响因素指标为人均居住使用面积、市区人口总数、人均可支配收入、 一年贷款利率利率、人均消费性支出、房地产开发投资、地区生产总值、住宅销售面积这八大指标。
(2)预测模型的网络结构图如下图5所示。
图5 预测模型网络结构图
原始样本数据如表 5 所示
表 5 原始数据表
年份
2001年
2002年
2003年
2004年
2005年
2006年
2007年
2008年
住宅平均售价(元/平方米)
2558
2595
3137
3768
4744
6601
8907
10000
人均居住使用面积(平方米)
18.47
18.31
19.59
21.49
21.36
22.93
23.94
24.1
市区人口总数(万人)
134.36
137.16
137.16
141.76
146.77
153.22
160.38
167.78
人均可支配收入(元)
11364.96
11767.68
12915.16
14442.67
16402.75
18513.17
21502.58
23948
人均消费性支出(元)
8490.24
8503.8
9458.71
10738.68
11848.93
14162.26
16380.23
17117
住宅平均售价(元/平方米)
2558
2595
3137
3768
4744
6601
8907
10000
房地产开发投资(亿元)
56.63
62.33
79.27
91.48
114.07
213.93
345.74
323.96
地区生产总值(亿元)
558.33
648.36
759.69
887.71
1006.58
1168.02
1387.85
1560.02
贷款利率(%)
5.33
5.31
5.31
5.58
5.58
5.985
6.93
7.065
住宅销售面积(平方米)
2153073
1867448
2171255
2550452
2723155
2094978
3695570
1696400
资料来源:2001—2007 年《厦门经济特区统计年鉴》,2008年数据来自中经网。
经过归一化处理后的数据表如表 6 所示。
表 6 归一化后的数据表
年份
2001年
2002年
2003年
2004年
2005年
2006年
2007年
2008年
人均居住使用面积
-0.9447
-1.0000
-0.5579
0.0984
0.0535
0.5959
0.9447
1.0000
市区人口总数
-1.0000
-0.8324
-0.8324
-0.5572
-0.2573
0.1287
0.5572
1.0000
人均可支配收入
-1.0000
-0.9360
-0.7536
-0.5108
-0.1993
0.1362
0.6113
1.0000
人均消费性支出
-1.0000
-0.9969
-0.7755
-0.4787
-0.2213
0.3150
0.8292
1.0000
房地产开发投资
-1.0000
-0.9606
-0.8434
-0.7589
-0.6026
0.0882
1.0000
0.8493
地区生产总值
-1.0000
-0.8202
-0.5980
-0.3424
-0.1050
0.2173
0.6562
1.0000
贷款利率
-0.9772
-1.0000
-1.0000
-0.6923
-0.6923
-0.2308
0.8462
1.0000
住宅销售面积
-0.5431
-0.8289
-0.5249
-0.1456
0.0272
-0.6013
1.0000
-1.0000
4.1.2 厦门住宅销售平均价格预测结果分析
(1)输入层和输出层的设计
在本模型中,取输入数据的维数为 8,可以表示为一个 8 维的向量,即 Y=(人均居住使用面积,市区人口总数,人均可支配收入, 一年贷款利率利率,人均消费性支出,房地产开发投资,地区生产总值,住宅销售面积), 因而网络的输入节点数确定为 8。 输出层的维数可根据使用者的要求,在本文中输出层的维数为 1。
(2)根据Hornik 提出的公式:求得。其中,n 为输入层节点数,m 为输出层节点数。根据公式,确定隐层节点数的取值范围为4~17,但是最佳的隐节点数要通过实验测试。本文采用Matlab7.0 的BP 神经网络工具箱进行仿真实验, 实验中参数取值:goal= 1e-4,epochs=500,α=0.9,η = 0.05。通过多次实验确定隐含层最佳个数为12。
(3)训练及结果分析
训练时训练函数设为 trainlm,学习函数设为 learngdm,传递函数设为
purelin。 训练步数为 500 步, 训练精度为 0.0001。 训练收敛的极快。
图 6、 7为训练结果和预测图。
图6 效果收敛图
图7 结果预测图
(4) BP 模型的训练与测试
BP 网络中隐含层神经元的变换函数通常采用 sigmoid 型函数 tansig, 本文中采用具有一个隐含层的 BP 网络. 选取 8 个样本作为学习样本. 网络的输入层神经元为8个, 输出神经元为一个. 设定 BP 网络的各训练参数为: 隐含层神经元的个数为 12个, 最大训练步数efochs= 500, 误差指标 goal=0.0001, 学习率η= 0.05.
随机抽取2001、2004、2008年三组数据作为网络训练完毕后的检验样本。通过检验结果如表7所示,通过该表可以发现误差在允许的误差范围内,所以该网络可用于预测。
表7 实际值与真实值比较
实际值与预测值
年份
实际值(元)
预测值(元)
误差
误差率
2001年
2558
2519.2
38.8
1.5%
2005年
4744
4733.9
10.1
0. 2%
2008年
10000
9999.6
0.4
0.04%
(5)预测与结果分析
由房地产市场的历史数据可得知各个影响要素随着时间的变化遵循着某种确定的发展规律, 所以可以利用线性回归模型初步预测各个影响要素的发展状况:(表8)(见附录3一元线性回归方程程序)
表8 各参数模型与预测数据
回归方程
(复)相关系数
2009
2010
2011
2012
2013
人均居住使用面积(平方米)
Y1=-1788.475+0.903*X
0.973
25.652
36.555
27.458
28.361
29.264
市区人口总数(万人)
Y2=-9474.992+4.8*X
0.967
168.202
173.008
177.808
182.608
187.408
人均可支配收入(元)
Y3=-3694590.194+1851.308*X
0.979
24687.578
26538.886
28390.194
30241.502
32092.81
人均消费性支出(元)
Y4=-2731938.67+1368.936*X
0.976
18253.754
19622.69
20991.626
22360.562
23729.498
住宅平均售价(元/平方米)
Y5=-2262230.286+1131.214*X
0.955
10378.64
11509.854
2641.068
13772.282
14903.496
房地产开发投资(亿元)
Y6=-88488.802+44.225*X
0.916
359.223
403.448
447.673
491.898
536.123
地区生产总值(亿元)
Y7=-286628.158+143.49*X
0.991
1643.252
1786.742
1930.232
2073.722
2217.212
贷款利率(%)
Y8=0.07714285*x^2-309.0439*x+309522.5389
0.963
8.11
9.1
10.25
11.55
13
住宅销售面积(平方米)
Y9=-39627.4*x.^2+158936382.1*x-159361662021
无
2133398.5
1807260
1401866.7
917218.6
353315.7
(6)将预测的样本值作为网络的输入, 并和以前的样本和并再重新训练更新网络权值, 得到
2009 年至 2013 年的住宅销售平均价格的预测值如表9:
表9 预测值
年份
预测值(元)
年份
预测值(元)
2009年
7949.76
2012年
10059.44
2010年
8681.1
2013年
10429.35
2011年
9459.66
五:模型的比较及优缺点分析
从模型的建立原理来考虑,第一种模型是在在不考虑其他因素的影响,未来5年厦门住宅平均售价处于一个比较平稳的趋势,不会发生很大的变动。第二种模型是在充分考虑各方面因素影响条件下得出的未来5年的厦门住宅平均售价出现从2001年到2008年来首次的下降,之后几年逐渐上升。
通过分析厦门住宅市场的具体情况分析,建立了采用一个隐层的预测楼市需求的BP神经网络模型,并用trainlm函数实现反传算法。采集、处理厦门市2001-2008年人口数据,并利用matlab6.5软件进行训练和模拟,经反复学习确定了网络参数,并对2009-2013年的住宅销售平均价格进行预测。阐述了BP神经网络应用于住宅销售平均价格预测的可行性。
优点:
(1)本文把BP神经网络技术应用到厦门住宅需求预测中,对影响住宅市场的主要因素进行了分析和量化处理,并运用MATLAB的神经网络工具箱建立了厦门住宅BP神经网络预测模型,经过训练仿真预测,结果证明了BP神经网络应用于住宅住宅销售面积具有可行性和应用价值。
在建立模型的过程中,对遇到的实际问题找到了相应的解决方法,主要有两个方面。
(2)在数据的预处理过程中,对影响住宅销售面积的数据,用归一化处理后来体现农民收入的数据规律。
(3)本文对BP神经网络存在着收敛速度慢,容易陷入局部极小值的问题进行了改进。函数trainlm()使用了Levenberg-Marquardt优化方法,从而使得学习时间更短,提高收敛速度。
(4) 本文的模型可以延续到其他各省的预测,用于扩大模型的应用范围。还可以用于农民收入预测等。
缺点:
(1) 本文的研究还存在不足之处,也是以后的工作中需要改进的,并做进一步的研究。在实际应用中,没有具体考虑到厦门各个地方的影响因素的差异,比如岛内和岛外。
(2) 本文由于条件限制,所采集的样本数据有限,因而预测结果的精度受到了一定程度的限制,还需要进一步的完善。
六:给购房者的建议书
自08年开始救市以来,所有政策以稳定房地产、促进成交为目的,最终造成当前房价暴涨,价格更加脱离百姓购买力,连每月8000元的厅级官员都无能为力。
当前所谈的房价以商品房住宅为主,顾名思义住宅的消费群体为居住需求群体,而当前房价远高于市场需求平均购买力,超8成人买不起房已经是公认的事实,在长达近二十年的商品房市场化时间里,所剩的2成人基本已经解决了居住需求,将不再是本轮房产市场的参与者,由此可见,当前房价的房产市场基本上已经没有市场支撑。收入的收入也无力购房,供需之间明显断层。
金融危机影响到人民币的贬值,利率、信贷的变化,从而造成人民生活,造成人均可支配收入降低,从而影响人们的消费欲望。从今年来看,房市惨淡。虽然房价有所降低,可是由于上述原因,导致购房减少。
从预测结果来看,依照厦门市现有的住宅市场价格发展态势,厦门市住宅市场价格在预测期内将存在先下滑再上升趋势最后趋于平缓。这说明厦门市住宅市场发展空间很大可以为拉动消费市场,推动城市经济发展做出贡献住宅市场的发展要与城市经济发展相协调,否则会造成整个住宅市场发展的不平稳。因此应重视对住宅需求市场的政策性调节,正确的引导住宅需求市场的发展。本文由于受到条件限制,所收集的样本数据有限,因而预测结果的精度受到一定程度的限制,还需进一步的完善
七:参考文献
[1] 国家信息中心 中经网数据有限公司. 中经网统计数据库 金融机构法定贷款利率[M]. 北京,2009.
[2] 厦门网: .
[3]《厦门经济特区年鉴》编辑委员会. 厦门经济特区年鉴[M]. 厦门.
[4] 洪世勤.房地产市场供需影响因素分析与预测[J].对策与战略, 2007(05).
[5] 孙志娟.城市住房价格的供给与需求分析[D],东北财经大学.2007(11).
[6] 常引, 基于BP人工神经网络的陕西省农民收入预测研究[D].西北农林大学,2008(05).
[7] 黄晓静.基于BP神经网络的南京市房地产住宅市场预测模型的构建[J].中国科技论文在线,2009(02).
[8] 熊晓炼.长沙市城镇住宅需求预测模型与分析.消费经济,第22卷第4期,2006(08).
[9] 沙 磊,韩丽川.BP神经网络在上海住宅市场需求预测的应用[J].数学的实践与认识,第33卷第11期,2003(11).
[10] 闫惠兰,宋 戈,张大龙.基于BP神经网络的哈尔滨住宅市场预测研究[J].东北农业大学报(社会科学版),第5卷第四期,2007(08).
[11] 闫惠兰,宋 戈,张大龙.基于BP神经网络的哈尔滨住宅市场预测研究[J].东北农业大学报(社会科学版),第5卷第四期,2007(08).
[12] 桂现才.BP神经网络在MATLAB上的实现与应用[J].湛江师范学院学报,第25卷第三期,2004(06).
[13] 高兴培.用MATLAB语言防真设计人工神经网络[J].广东广播电视大学学报,第13卷第49期,2004(01).
附录
模型1程序(基于历年厦门住宅平均售价数据的 BP 网络预测模型)
clear;
%按年份排列的原始均 价 数据
p0=[2558 2595 3137 3768 4744 6601 8907 10000];
%绘制 住宅 均 价 随年份的变化曲线
year=2001:2008;
plot(year,p0,'b+')
hold on
plot(year,p0,'b-.')
pause
%将原始数据归一化到[0.2 0.9]
p1=[ 0.2000 , 0.2035 , 0.2545 , 0.3138 , 0.4056 , 0.5803 , 0.7972 , 0.9000];
%按每2年为一期组织样本,作为训练集,p为输入,t为目标。从第2001年人均纯收入开始。
p=[0.2000,0.2035; 0.2035 ,0.2545; 0.2545 ,0.3138 ; 0.3138 , 0.4056 ]';
t=[0.2545,0.3138,0.4056,0.5803]';
%按每2年为一期组织样本,作为测试集,testp为输入,testt为目标。从2001年人均纯收入开始。
testp=[0.2035,0.2545;0.2545,0.3138;0.3138,0.4056;0.4056,0.5803]';
testt=[ 0.3138,0.4056,0.5803, 0.7972 ]';
%建立BP网络,可以设计为一个隐含层的BP网络,隐层神经元数为
net = newff(minmax(p),[3,1],{'logsig', 'logsig',},'trainlm');
%设置训练参数
net.trainParam.lr=0.6; %学习率
net.trainParam.epochs = 5000;%最大训练次数
net.trainParam.goal = 0.1; %目标误差
net = train(net,p,t');
%仿真
y = sim(net,testp); %将2001起的2组测试数据输入网络进行测试
%预测2005年人均纯收入
p05=p1(3:4)' ; %取预测数据,2003-2004共2年,转置成列矢量
y05=sim(net,p05) ; %用sim仿真,计算2005年人均纯收入(规一化值)
y2005=2558+(y05-0.2)*(10000-2558)/0.6 %求出人均纯收入实际值
E05=y2005-4744 %计算误差
%预测2006 年人均纯收入
p06=p1(4:5)';
y06=sim(net,p06);
y2006=2558+(y06-0.2)*(10000-2558)/0.6
E06=y2006-6601
%预测2007 年人均纯收入
p07=p1(5:6)';
y07=sim(net,p07);
y2007=2558+(y07-0.2)*(10000-2558)/0.6
E07=y2007-8907
%预测2008 年人均纯收入
p08=p1(6:7)';
y08=sim(net,p08);
y2008=2558+(y08-0.2)*(10000-2558)/0.6
E08=y2008-10000
%预测2009 年人均纯收入
p09=p1(7:8)';
y09=sim(net,p09);
y2009=2558+(y09-0.2)*(10000-2558)/0.6
%预测2010年人均纯收入
p1=[p1,y2009];
p10=p1(8:9)';
y10=sim(net,p10);
y2010=2558+(y10-0.2)*(10000-2558)/0.6
%预测2011 年人均纯收入
p1=[p1,y2010];
p11=p1(9:10)';
y11=sim(net,p11);
y2011=2558+(y11-0.2)*(10000-2558)/0.6
%预测2012 年人均纯收入
p1=[p1,y2011];
p12=p1(10:11)';
y12=sim(net,p12);
y2012=2558+(y12-0.2)*(10000-2558)/0.6
%预测2013 年人均纯收入
p1=[p1,y2012];
p13=p1(11:12)';
y13=sim(net,p13);
y2013=2558+(y13-0.2)*(10000-2558)/0.6
p2=[p0 y2009 y2010 y2011 y2012 y2013];
figure
plot(year,p0,'g-.')
hold on
plot(year,p0,'g+')
hold on
plot(2005,y2005,'ro')
plot(2006,y2006,'ro')
plot(2007,y2007,'ro')
plot(2008,y2008,'ro')
plot(2009,y2009,'ro')
plot(2010,y2010,'ro')
plot(2011,y2011,'ro')
plot(2012,y2012,'ro')
plot(2013,y2013,'ro')
year=[year 2009 2010 2011 2012 2013];
plot(year,p2,'g-.')
展开阅读全文