APP下载

基于动量BP算法的神经网络房价预测研究

2015-04-02王雅楠孟晓景

软件导刊 2015年2期
关键词:BP神经网络

王雅楠 孟晓景

摘要:房地产价格近年来持续上涨,对于房价趋势的预测成为经济社会热点,但这些预测大都停留在定性分析阶段。从定量分析的角度入手,提出利用加入动量因子的BP神经网络算法建立数学模型,运用Matlab仿真实现房价预测。详细分析了BP神经网络学习算法过程,并加入动量因子以加快收敛、避免陷入局部最优。以山东济南为例,分析得出影响房价的7大主要因素,搜集2000-2012年数据,运用Matlab建立单隐含层的BP神经网络,通过训练网络,预测2014年该市房产均价。实验结果表明,该方法能在有限的数据条件下,对房价预测精准度达99.1%,为我国房地产业的可持续发展提供了科学的咨询和决策手段。

关键词关键词:BP神经网络;学习算法;动量因子;房价仿真预测

DOIDOI:10.11907/rjdk.1431015

中图分类号:TP3-05

文献标识码:A文章编号

文章编号:16727800(2015)002005903

0引言

房地产业属于基础性、先导性产业,其发展状况间接地反映了市场发展状况。伴随着我国经济的飞速发展,房地产业价格水涨船高,对于房地产价格的分析预测,一直是经济社会热点问题。房价受多个因素影响和制约,如国家宏观调控、地区经济发展水平、房地产业投资情况、居民收入水平、消费情况等,多种不同因素对房地产价格影响的方向和程度不尽相同,房价预测技术性强、难度大。

BP神经网络的概念由Rumelhart和McCelland所带领的科学家小组在1986年提出,是一种采用误差逆向传播算法进行有监督学习的多层前向网络,具备处理线性不可分问题的能力,相比于回归模型、AHP、灰色系统等方法,BP神经网络在容错性、精确性、自组织学习能力和不依赖固定数学模型方面表现优越\[1\],是目前应用最为广泛的神经网络之一。本文利用基于动量BP算法的神经网络建立模型,对房价未来趋势进行预测。

1BP神经网络建模

1.1BP神经网络算法

典型的 BP神经网络包括: 输入层、隐含层和输出层,层与层之间实行全连接, 同层内神经元之间无连接。它的学习规则是使用最速下降法, 通过反向传播不断调整神经网络的权值和阈值, 直到网络的误差平方和达到最小\[2\]。

在拥有单隐含层BP网络中,设Im、Hm、Om分别表示输入端,隐含层和输出端第m个神经元,从Im到Hm的连接权值矩阵记ωmm=(ω11,......ω1m;......;ωm1,......ωmm) ,从Hm到Om的连接权值矩阵记为 δmm=(δ11,......,δ1m;......;δm1,......,δmm)。用U和V分别表示每层输入和输出,如U2H表示隐含层第二个神经元的输入,n代表迭代次数。

1.1.1工作信号正向传播

输入层的输出等于输入: VmI(n)=Im(n),隐含层第m个神经元的输入等于VmI(n)的加权和:UmH(n)=∑Mm=1ωmm(n)VmI(n),其中M为输入向量长度。隐含层传递函数必须可微,本方法采用非线性作用Sigmoid函数:

Logsig(x)=11+e-x(1)

则隐含层第m个神经元的输出:

VmH(n)=LogsigUmH(n)(2)

输出层第m个神经元的输入等于VmH(n)的加权和:

UmO(n)=∑Mm=1δmm(n)VmH(n)(3)

根据经验,输出层传递函数采用线性purelin函数,则第m个神经元输出:

VmO(n)=purelinUmO(n)(4)

经过n次迭代后,网络的总误差表示为:

E(n)=12∑Mm=1Tm(n)-VmO(n)2(5)

其中Tm(n)是网络的期望输出。

1.1.2误差信号反向传播

设BP网络学习率为φ,根据梯度下降法,隐含与输出之间的权值δmm调整为:

△δmm(n)=-φE(n)δmm(n)(6)

由于E(n)是Tm(n)-VmO(n)的二次函数,梯度值为:

E(n)δmm(n)=-Tm(n)-VmO(n)×purelinUmO(n)×VmH(n)

权值修正量:

△δmm(n)=φ×Tm(n)-VmO(n)×VmH(n)(7)

类似地,对输入层与隐含层之间的权值ωmm调整,引入局部梯度βmH:

βmH=-E(n)VmHLogsigUmH(n)=∑Mm=1βmIδmm(n)(8)

故有:

△ωmm(n)=φβmHVmI(n)(9)

1.2加入动量因子算法

典型的最速下降法易陷入局部极小值,而不能达到想要的全局最优解。我们要求权值更新的方向和幅度不但与该次计算所得梯度相关,还与上次所得方向和幅度相关[3]。因此,当误差反向传播时,在每一权值的变化上引入一个动量因子mc(0

△ω(n)=-φ(1-mc)×E(n)+mc×△ω(n-1)(10)

使权值修正具有惯性和震荡能力,并根据反向传播法来产生新的权值变化,提高收敛速度。具体应用中,动量因子取值一般为0.1~0.9。

2房价预测BP网络仿真

2.1样本数据准备

神经网络应用于房价预测的过程包括:样本数据准备、神经网络设计、网络的训练与仿真、预测与验证。

样本数据对网络预测效果的影响至关重要,本文选取与房价关系密切且影响稳定的7个指标:地区GDP、居民CPI、地区居民人均可支配收入、地区从业人数、月均工资、常住人口、房地产开发投资作为输入变量,房价作为输出变量。参考济南市统计局历史数据,选取济南市2000-2012年度,共13组数据作为训练组(见表1)训练神经网络,2012-2013年度数据作为检验组验证网络性能,最后用训练完成的网络预测2014年度房价。

2.2数据预处理

由于各项指标数量级和单位不统一,为提高算法训练速度和灵敏性,现将13组输入数据用mapminmax函数归一化,最终输出结果也是经过归一化的数据,原理是线性函数转换将其映射在[0,1]上:

X=(Xi-Xmin)(Xmax-Xmin)(i=1,2,3...7)(11)

2.3网络结构设计

输入、输出层节点数:输入层神经元为7,输入数据构成7×13矩阵,其中向量按列存放,包含13个7维列向量,输出为1×13的行向量,每个元素代表房价。理论证实,在不限制节点数的情况下,单隐含层 BP神经网络可以实现任意非线性映射[6],因此我们选择单隐含层BP网络,网络结构见图1。

0引言

房地产业属于基础性、先导性产业,其发展状况间接地反映了市场发展状况。伴随着我国经济的飞速发展,房地产业价格水涨船高,对于房地产价格的分析预测,一直是经济社会热点问题。房价受多个因素影响和制约,如国家宏观调控、地区经济发展水平、房地产业投资情况、居民收入水平、消费情况等,多种不同因素对房地产价格影响的方向和程度不尽相同,房价预测技术性强、难度大。

BP神经网络的概念由Rumelhart和McCelland所带领的科学家小组在1986年提出,是一种采用误差逆向传播算法进行有监督学习的多层前向网络,具备处理线性不可分问题的能力,相比于回归模型、AHP、灰色系统等方法,BP神经网络在容错性、精确性、自组织学习能力和不依赖固定数学模型方面表现优越\[1\],是目前应用最为广泛的神经网络之一。本文利用基于动量BP算法的神经网络建立模型,对房价未来趋势进行预测。

1BP神经网络建模

1.1BP神经网络算法

典型的 BP神经网络包括: 输入层、隐含层和输出层,层与层之间实行全连接, 同层内神经元之间无连接。它的学习规则是使用最速下降法, 通过反向传播不断调整神经网络的权值和阈值, 直到网络的误差平方和达到最小\[2\]。

在拥有单隐含层BP网络中,设Im、Hm、Om分别表示输入端,隐含层和输出端第m个神经元,从Im到Hm的连接权值矩阵记ωmm=(ω11,......ω1m;......;ωm1,......ωmm) ,从Hm到Om的连接权值矩阵记为 δmm=(δ11,......,δ1m;......;δm1,......,δmm)。用U和V分别表示每层输入和输出,如U2H表示隐含层第二个神经元的输入,n代表迭代次数。

1.1.1工作信号正向传播

输入层的输出等于输入: VmI(n)=Im(n),隐含层第m个神经元的输入等于VmI(n)的加权和:UmH(n)=∑Mm=1ωmm(n)VmI(n),其中M为输入向量长度。隐含层传递函数必须可微,本方法采用非线性作用Sigmoid函数:

Logsig(x)=11+e-x(1)

则隐含层第m个神经元的输出:

VmH(n)=LogsigUmH(n)(2)

输出层第m个神经元的输入等于VmH(n)的加权和:

UmO(n)=∑Mm=1δmm(n)VmH(n)(3)

根据经验,输出层传递函数采用线性purelin函数,则第m个神经元输出:

VmO(n)=purelinUmO(n)(4)

经过n次迭代后,网络的总误差表示为:

E(n)=12∑Mm=1Tm(n)-VmO(n)2(5)

其中Tm(n)是网络的期望输出。

1.1.2误差信号反向传播

设BP网络学习率为φ,根据梯度下降法,隐含与输出之间的权值δmm调整为:

△δmm(n)=-φE(n)δmm(n)(6)

由于E(n)是Tm(n)-VmO(n)的二次函数,梯度值为:

E(n)δmm(n)=-Tm(n)-VmO(n)×purelinUmO(n)×VmH(n)

权值修正量:

△δmm(n)=φ×Tm(n)-VmO(n)×VmH(n)(7)

类似地,对输入层与隐含层之间的权值ωmm调整,引入局部梯度βmH:

βmH=-E(n)VmHLogsigUmH(n)=∑Mm=1βmIδmm(n)(8)

故有:

△ωmm(n)=φβmHVmI(n)(9)

1.2加入动量因子算法

典型的最速下降法易陷入局部极小值,而不能达到想要的全局最优解。我们要求权值更新的方向和幅度不但与该次计算所得梯度相关,还与上次所得方向和幅度相关[3]。因此,当误差反向传播时,在每一权值的变化上引入一个动量因子mc(0

△ω(n)=-φ(1-mc)×E(n)+mc×△ω(n-1)(10)

使权值修正具有惯性和震荡能力,并根据反向传播法来产生新的权值变化,提高收敛速度。具体应用中,动量因子取值一般为0.1~0.9。

2房价预测BP网络仿真

2.1样本数据准备

神经网络应用于房价预测的过程包括:样本数据准备、神经网络设计、网络的训练与仿真、预测与验证。

样本数据对网络预测效果的影响至关重要,本文选取与房价关系密切且影响稳定的7个指标:地区GDP、居民CPI、地区居民人均可支配收入、地区从业人数、月均工资、常住人口、房地产开发投资作为输入变量,房价作为输出变量。参考济南市统计局历史数据,选取济南市2000-2012年度,共13组数据作为训练组(见表1)训练神经网络,2012-2013年度数据作为检验组验证网络性能,最后用训练完成的网络预测2014年度房价。

2.2数据预处理

由于各项指标数量级和单位不统一,为提高算法训练速度和灵敏性,现将13组输入数据用mapminmax函数归一化,最终输出结果也是经过归一化的数据,原理是线性函数转换将其映射在[0,1]上:

X=(Xi-Xmin)(Xmax-Xmin)(i=1,2,3...7)(11)

2.3网络结构设计

输入、输出层节点数:输入层神经元为7,输入数据构成7×13矩阵,其中向量按列存放,包含13个7维列向量,输出为1×13的行向量,每个元素代表房价。理论证实,在不限制节点数的情况下,单隐含层 BP神经网络可以实现任意非线性映射[6],因此我们选择单隐含层BP网络,网络结构见图1。

0引言

房地产业属于基础性、先导性产业,其发展状况间接地反映了市场发展状况。伴随着我国经济的飞速发展,房地产业价格水涨船高,对于房地产价格的分析预测,一直是经济社会热点问题。房价受多个因素影响和制约,如国家宏观调控、地区经济发展水平、房地产业投资情况、居民收入水平、消费情况等,多种不同因素对房地产价格影响的方向和程度不尽相同,房价预测技术性强、难度大。

BP神经网络的概念由Rumelhart和McCelland所带领的科学家小组在1986年提出,是一种采用误差逆向传播算法进行有监督学习的多层前向网络,具备处理线性不可分问题的能力,相比于回归模型、AHP、灰色系统等方法,BP神经网络在容错性、精确性、自组织学习能力和不依赖固定数学模型方面表现优越\[1\],是目前应用最为广泛的神经网络之一。本文利用基于动量BP算法的神经网络建立模型,对房价未来趋势进行预测。

1BP神经网络建模

1.1BP神经网络算法

典型的 BP神经网络包括: 输入层、隐含层和输出层,层与层之间实行全连接, 同层内神经元之间无连接。它的学习规则是使用最速下降法, 通过反向传播不断调整神经网络的权值和阈值, 直到网络的误差平方和达到最小\[2\]。

在拥有单隐含层BP网络中,设Im、Hm、Om分别表示输入端,隐含层和输出端第m个神经元,从Im到Hm的连接权值矩阵记ωmm=(ω11,......ω1m;......;ωm1,......ωmm) ,从Hm到Om的连接权值矩阵记为 δmm=(δ11,......,δ1m;......;δm1,......,δmm)。用U和V分别表示每层输入和输出,如U2H表示隐含层第二个神经元的输入,n代表迭代次数。

1.1.1工作信号正向传播

输入层的输出等于输入: VmI(n)=Im(n),隐含层第m个神经元的输入等于VmI(n)的加权和:UmH(n)=∑Mm=1ωmm(n)VmI(n),其中M为输入向量长度。隐含层传递函数必须可微,本方法采用非线性作用Sigmoid函数:

Logsig(x)=11+e-x(1)

则隐含层第m个神经元的输出:

VmH(n)=LogsigUmH(n)(2)

输出层第m个神经元的输入等于VmH(n)的加权和:

UmO(n)=∑Mm=1δmm(n)VmH(n)(3)

根据经验,输出层传递函数采用线性purelin函数,则第m个神经元输出:

VmO(n)=purelinUmO(n)(4)

经过n次迭代后,网络的总误差表示为:

E(n)=12∑Mm=1Tm(n)-VmO(n)2(5)

其中Tm(n)是网络的期望输出。

1.1.2误差信号反向传播

设BP网络学习率为φ,根据梯度下降法,隐含与输出之间的权值δmm调整为:

△δmm(n)=-φE(n)δmm(n)(6)

由于E(n)是Tm(n)-VmO(n)的二次函数,梯度值为:

E(n)δmm(n)=-Tm(n)-VmO(n)×purelinUmO(n)×VmH(n)

权值修正量:

△δmm(n)=φ×Tm(n)-VmO(n)×VmH(n)(7)

类似地,对输入层与隐含层之间的权值ωmm调整,引入局部梯度βmH:

βmH=-E(n)VmHLogsigUmH(n)=∑Mm=1βmIδmm(n)(8)

故有:

△ωmm(n)=φβmHVmI(n)(9)

1.2加入动量因子算法

典型的最速下降法易陷入局部极小值,而不能达到想要的全局最优解。我们要求权值更新的方向和幅度不但与该次计算所得梯度相关,还与上次所得方向和幅度相关[3]。因此,当误差反向传播时,在每一权值的变化上引入一个动量因子mc(0

△ω(n)=-φ(1-mc)×E(n)+mc×△ω(n-1)(10)

使权值修正具有惯性和震荡能力,并根据反向传播法来产生新的权值变化,提高收敛速度。具体应用中,动量因子取值一般为0.1~0.9。

2房价预测BP网络仿真

2.1样本数据准备

神经网络应用于房价预测的过程包括:样本数据准备、神经网络设计、网络的训练与仿真、预测与验证。

样本数据对网络预测效果的影响至关重要,本文选取与房价关系密切且影响稳定的7个指标:地区GDP、居民CPI、地区居民人均可支配收入、地区从业人数、月均工资、常住人口、房地产开发投资作为输入变量,房价作为输出变量。参考济南市统计局历史数据,选取济南市2000-2012年度,共13组数据作为训练组(见表1)训练神经网络,2012-2013年度数据作为检验组验证网络性能,最后用训练完成的网络预测2014年度房价。

2.2数据预处理

由于各项指标数量级和单位不统一,为提高算法训练速度和灵敏性,现将13组输入数据用mapminmax函数归一化,最终输出结果也是经过归一化的数据,原理是线性函数转换将其映射在[0,1]上:

X=(Xi-Xmin)(Xmax-Xmin)(i=1,2,3...7)(11)

2.3网络结构设计

输入、输出层节点数:输入层神经元为7,输入数据构成7×13矩阵,其中向量按列存放,包含13个7维列向量,输出为1×13的行向量,每个元素代表房价。理论证实,在不限制节点数的情况下,单隐含层 BP神经网络可以实现任意非线性映射[6],因此我们选择单隐含层BP网络,网络结构见图1。

隐含层节点数:隐含层节点的个数对神经网络性能起很大作用。较多的节点数将逼近真实函数,网络性能更好,但会导致训练时间过长。目前还没有一个确定隐含节点数的理想算法。可先根据经验公式得到一个粗略估计[7]:

NL=I+O+α(12)

其中NL为隐含层节点数, I为输入层节点数, O为输出层节点数。 α为1~10之间的常数。得出节点初始值范围[4,13],由最小值逐渐增加隐含层节点数,使用样本集进行多次训练发现,数值过大或过小都会导致网络误差震荡或收敛时间长,综合这两个因素,最终选取隐含层节点数为8。

2.4BP网络的Matlab仿真

读入样本数据和期望输出数据,数据作归一化处理:\[P,PS\]=mapminmax(P,0,1),本实验采用Matlab2011b,因此建立BP神经网络:netP=feedforwardnet(8),确定传递函数:netP.layers{1}.transferFcn=logsig,使用加入动量最速下降法函数:netP.trainFcn=traindm,设置动量因子:netP.trainParam.mc = 0.9,根据经验确定最大迭代次数为100:netP.trainParam.epochs=100,以均方误差衡量的网络性能指标:netP.trainParam.goal=1e-5,学习率过大会导致学习不稳定,学习率过小又将延长训练时间,因此设定学习率:LP.lr=0.01。训练网络: netP=train(netP,P,T),结果如图2所示。

图2仿真结果

2.5实验结果分析

从仿真结果分析可知 ,迭代进行到14次的时候,误差达最小值, 当迭代20次时,误差达到稳定值而结束。

Y=sim(netP , P);(13)

T_test = \[4812.68 102.4 32570 379.3 3349 695.0 663.31\];(14)

Y_test = sim(netP , T_test);(15)

将运行结果反归一化得到:Results: 2012:T_test = 8904.10

同理2013:T_test = 9126.76;

2014: T_test = 9256.08

2012、2013年的房价数据已经公布,我们可以据此比

较预测值与真实值,见表2,从中可以看出训练误差都在允许的误差范围内,因此本文提出的BP网络算法有推广价值。在已知2014年度相关经济民生数据的基础上,可以用该法预测得到济南市2014年的房屋均价为9 256元/m2。

表2济南市房价预测值与真实值比较

年份[]预测值(元)[]实际值(元)

2012[]8 904[]8 985

2013[]9 127[]9 210

2014[]9 256[]

3结语

从仿真结果分析可知,基于动量BP算法的神经网络对济南市房价预测精确度达到99.10%,在房价预测上有很高的参考价值。由于房价走势不仅受到本文选取的7个因素影响,还受到包括历史、国家政策、宏观经济大环境、调控手段等一些不可量化的因素干预\[810\],在一定程度上影响了算法模型的客观性,加之所能利用的原始数据有限,因此算法在精度和稳定性方面有待进一步提高。

参考文献参考文献:

\[1\]占梅芳.基于BP神经网络的温州市商品房价格趋势预测\[D\].杭州:浙江工业大学,2011.

\[2\]邱启荣,于婷.基于主成分分析的BP神经网络对房价的预测研究\[J\].湖南文理学院学报:自然科学版,2011,23(3):2426.

\[3\]陈明. MATLAB神经网络原理与实例精解\[M\]. 北京:清华大学出版社, 2013:156195 .

\[4\]MARK HUDSON BEALE, MARTIN T HAGAN, HOWARD B DEMUTH. Neural network toolBox reference\[EB/OL\]. http://bbs.pinggu.org/thread157111411.html

\[5\]济南市统计局,国家统计局济南调查队. 济南统计年鉴\[M\].北京:中国统计出版社,2013.

\[6\]陆丽丽,胡斌,李辉,等.中国房价构成与预测的仿真分析\[J\].计算机仿真,2014,31(3):230238.

\[7\]夏克文,李昌彪,沈钧毅.前向神经网络隐含层节点数的一种优化算法\[J\].计算机科学,2005,32(10):143145.

\[8\]高玉明,张仁津.基于遗传算法和BP神经网络的房价预测分析\[J\].计算机工程,2014,40(4):187191.

\[9\]周学君,陈文秀.基于人工神经网络算法的黄冈市房价预测\[J\].黄冈师范学院学报,2014,34(3):1316.

\[10\]崔庆都. 基于BP神经网络的房价预测\[D\]. 成都:西南石油大学,2011.

责任编辑(责任编辑:杜能钢)

猜你喜欢

BP神经网络
基于神经网络的北京市房价预测研究
提高BP神经网络学习速率的算法研究