李春生,李霄野,張可佳
(東北石油大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,黑龍江 大慶 163318)
近年來,國內(nèi)房地產(chǎn)行業(yè)高速發(fā)展,房價(jià)的走勢(shì)受到越來越多人的關(guān)注。研究房價(jià)的影響因素,并對(duì)未來房價(jià)進(jìn)行預(yù)測(cè),對(duì)于國家經(jīng)濟(jì)發(fā)展和改善民生具有重要的意義[1]。
國家每年都有相關(guān)的年鑒數(shù)據(jù),如何從大量且無規(guī)律的房地產(chǎn)統(tǒng)計(jì)數(shù)據(jù)中挖掘出房價(jià)的走向,成為當(dāng)今房地產(chǎn)行業(yè)的研究熱點(diǎn)。文中提出了一種基于遺傳算法改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)房價(jià)預(yù)測(cè)模型,以2005-2012年中國統(tǒng)計(jì)年鑒數(shù)據(jù)為基礎(chǔ),分析預(yù)測(cè)了2013年、2014年、2015年房價(jià),并與相關(guān)真實(shí)數(shù)據(jù)進(jìn)行比較,從而進(jìn)行誤差分析。
BP(back propagation)神經(jīng)網(wǎng)絡(luò)也稱反向傳播網(wǎng)絡(luò),是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò)[2],通常具有3層或3層以上結(jié)構(gòu)。圖1是一種簡單的3層BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),包括輸入層、輸出層和隱含層,各層神經(jīng)元與下層所有神經(jīng)元連接,而同層各神經(jīng)元之間無連接。圖1中x1、x2、x3為輸入信號(hào)值,y1、y2、y3為輸出信號(hào)值。
BP神經(jīng)網(wǎng)絡(luò)的基本原理是采用梯度下降法,通過反向傳播不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,直到誤差減小到最低[3]。其訓(xùn)練過程實(shí)質(zhì)上是對(duì)各連接權(quán)值的動(dòng)態(tài)調(diào)整,輸入信號(hào)的正向傳播與誤差的反向傳播過程循環(huán)進(jìn)行,一直到輸出的均方誤差達(dá)到要求的標(biāo)準(zhǔn)。
圖1 3層BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
目標(biāo)函數(shù)定義為:
(1)
BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程如下:
(1)隨機(jī)數(shù)初始化誤差函數(shù):假設(shè)網(wǎng)絡(luò)結(jié)構(gòu)為一個(gè)含有n個(gè)神經(jīng)元的輸入層,含有l(wèi)個(gè)節(jié)點(diǎn)數(shù)的隱含層,含有m個(gè)節(jié)點(diǎn)數(shù)的輸出層。輸入層與隱含層之間的連接權(quán)值為wij,隱含層與輸出層之間的連接權(quán)值為wjk,隱含層各神經(jīng)元的閾值為a={a1,a2,…,al},輸出層各神經(jīng)元的閾值為b={b1,b2,…,bm}。
(2)計(jì)算隱含層輸出hj。
(2)
其中,f為隱含層激勵(lì)函數(shù);xi為第i個(gè)輸入節(jié)點(diǎn)變量。
(3)計(jì)算輸出層函數(shù)vk。
(3)
(4)修正輸出層連接權(quán)值。
wij(t+1)=wij(t)+η[(1-mc)D(t)+
mc*D(t-1)],i=1,2,…,n
(4)
wjk(t+1)=wjk(t)+η[(1-mc)D'(t)+
mc*D'(t-1)]
(5)
其中,學(xué)習(xí)速率η>0,D(t)=-?J/?wij(t),D'(t)=-?J/?wjk(t),0 動(dòng)量因子mc的引入修正了神經(jīng)元的權(quán)值,使其具有慣性和震蕩能力,并根據(jù)反向傳播法來產(chǎn)生新的權(quán)值變化,進(jìn)而提高收斂速度[4]。 (5)修正隱藏層連接權(quán)值:根據(jù)網(wǎng)絡(luò)實(shí)際輸出vk和期望輸出yk之間的誤差更新aj,bk。 (6) bk(t+1)=bk(t)+(yk-vk) (7) (6)計(jì)算全局誤差,判斷迭代是否結(jié)束,若未結(jié)束,返回步驟2。 實(shí)驗(yàn)數(shù)據(jù)的選擇需要盡可能準(zhǔn)確地反映房價(jià)的變化規(guī)律,在該研究中,選取影響中國房價(jià)的7個(gè)主要影響因素:商品房平均銷售價(jià)格、住宅、居民消費(fèi)水平、城鎮(zhèn)單位就業(yè)人員平均工資、城鎮(zhèn)居民可支配收入、國內(nèi)生產(chǎn)總值GDP和城鎮(zhèn)單位就業(yè)人員數(shù)。數(shù)據(jù)來源于《2016年中國統(tǒng)計(jì)年鑒》中2005-2015年數(shù)據(jù),具體如表1所示。 表1 2005年-2015年中國房價(jià)及其相關(guān)影響因素?cái)?shù)據(jù) 原始數(shù)據(jù)由于各項(xiàng)指標(biāo)的數(shù)量級(jí)差別較大且量綱不同,為提高網(wǎng)絡(luò)的訓(xùn)練效率,采用Matlab的歸一化函數(shù)premnmx,將實(shí)驗(yàn)數(shù)據(jù)的輸入和輸出數(shù)據(jù)歸一化,把數(shù)據(jù)變換到[-1,1]的范圍之間[5]。假設(shè)原始數(shù)據(jù)的輸入樣本為i,輸出樣本為o,用premnmx函數(shù)分別求出輸入輸出樣本的最大值maxi和maxo,最小值mini和mino,利用式8和式9求出歸一化處理后的輸入樣本Pn和輸出樣本Tn: (8) (9) 在BP網(wǎng)絡(luò)訓(xùn)練結(jié)束后,對(duì)于得到的歸一化數(shù)據(jù),需要用postmnmx函數(shù)對(duì)其進(jìn)行反歸一化處理,還原成正常值[6]。 選取歸一化處理后的中國房價(jià)樣本數(shù)據(jù),前兩年數(shù)據(jù)作為輸入向量,兩年后的第一年數(shù)據(jù)作為目標(biāo)輸出,如用2005、2006年數(shù)據(jù)預(yù)測(cè)2007年房價(jià),用2006、2007年數(shù)據(jù)預(yù)測(cè)2008年房價(jià),以此類推,共得出9組數(shù)據(jù)。將2005-2012年數(shù)據(jù)作為訓(xùn)練樣本, 2013-2015年數(shù)據(jù)作為測(cè)試驗(yàn)證樣本。選定動(dòng)量因子mc=0.8,最大訓(xùn)練步數(shù)8 000次,誤差設(shè)定值0.001,建立仿真模型。 (10) 其中,Hn為隱含層節(jié)點(diǎn)數(shù);In為輸入層節(jié)點(diǎn)數(shù);Ot為輸出層節(jié)點(diǎn)數(shù);α為1~10之間的整數(shù)。 根據(jù)前面分析,輸入層神經(jīng)元個(gè)數(shù)為9,輸出層神經(jīng)元個(gè)數(shù)為1,經(jīng)過計(jì)算后得出隱含層神經(jīng)元個(gè)數(shù)Hn范圍大概在4~13之間;而隱含層神經(jīng)元個(gè)數(shù)的數(shù)值過大或過小都會(huì)導(dǎo)致網(wǎng)絡(luò)誤差震蕩或收斂時(shí)間長。綜合這兩個(gè)因素,最終選取隱含層神經(jīng)元個(gè)數(shù)Hn為8。 BP神經(jīng)網(wǎng)絡(luò)的各隱含層節(jié)點(diǎn)的激活函數(shù)選取Sigmoid函數(shù),輸出層節(jié)點(diǎn)的激活函數(shù)采用對(duì)S型Sigmoid函數(shù)[7]。 實(shí)驗(yàn)采用Matlab2011b中的神經(jīng)網(wǎng)絡(luò)工具箱實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)模型的構(gòu)建、訓(xùn)練和仿真,將2005-2012年各房價(jià)指標(biāo)數(shù)據(jù)輸入到設(shè)計(jì)好的BP神經(jīng)網(wǎng)絡(luò),得到網(wǎng)絡(luò)的輸出值,與實(shí)際值進(jìn)行比較,再不斷調(diào)整權(quán)值和閾值,直到計(jì)算的誤差值達(dá)到要求的范圍。再將2013-2015年房價(jià)數(shù)據(jù)作為檢驗(yàn)樣本輸入,以此判斷實(shí)驗(yàn)結(jié)果,對(duì)結(jié)果進(jìn)行還原和分析,得到實(shí)際值。預(yù)測(cè)值與真實(shí)值的對(duì)比如表2所示,可知訓(xùn)練的最低準(zhǔn)確度為96.89%。 表2 BP神經(jīng)網(wǎng)絡(luò)模型的房價(jià)預(yù)測(cè)結(jié)果 遺傳算法(GA)是受達(dá)爾文進(jìn)化論的啟發(fā),借鑒生物進(jìn)化過程而提出的一種啟發(fā)式搜索算法。它將要解決的問題模擬成一個(gè)生物進(jìn)化的過程,通過種群之間進(jìn)行選擇、交叉和變異等操作,逐步淘汰適應(yīng)度函數(shù)值低的個(gè)體,增加適應(yīng)度函數(shù)值高的個(gè)體[8]。經(jīng)過多代循環(huán),最終產(chǎn)生出符合條件的個(gè)體。BP神經(jīng)網(wǎng)絡(luò)在逼近預(yù)測(cè)值過程中耗時(shí)多,導(dǎo)致網(wǎng)絡(luò)收斂速度慢,且容易陷入局部最優(yōu)。而遺傳算法則具有高容錯(cuò)性、并行、全局擇優(yōu)的特點(diǎn)[9]。因此,文中利用遺傳算法來優(yōu)化BP神經(jīng)網(wǎng)絡(luò)大的初始權(quán)值和閾值,形成GA-BP神經(jīng)網(wǎng)絡(luò),提高BP神經(jīng)網(wǎng)絡(luò)的收斂速度,降低BP算法陷入局部最優(yōu)的可能性。 為了對(duì)比BP神經(jīng)網(wǎng)絡(luò)與GA-BP神經(jīng)網(wǎng)絡(luò),在訓(xùn)練GA-BP神經(jīng)網(wǎng)絡(luò)時(shí),參數(shù)選取與之前的BP神經(jīng)網(wǎng)絡(luò)一致。 (1)種群初始化。 將網(wǎng)絡(luò)中所有的權(quán)值和閾值進(jìn)行實(shí)數(shù)編碼,每個(gè)個(gè)體作為一組染色體[10],染色體形式為: w11,w12,…,wij,a1,a2,…,al,w11,w12,…,wjk,b1,b2,…,bm 其中,wij為輸入層與隱含層的連接權(quán)值;a={a1,a2,…,al}為隱含層閾值;wjk為隱含層與輸出層的連接權(quán)值;b={b1,b2,…,bm}為輸出層閾值。 遺傳算法的全局搜索性能很大程度上受種群數(shù)量的影響,種群的數(shù)量要根據(jù)具體問題來選取[11]。因此,此次實(shí)驗(yàn)初始種群的規(guī)模為100。 (2)選擇適應(yīng)度函數(shù)。 BP神經(jīng)網(wǎng)絡(luò)中的誤差絕對(duì)值和越小越好,而在遺傳算法中,適應(yīng)度值越大越好。因此,以BP神經(jīng)網(wǎng)絡(luò)目標(biāo)函數(shù)的倒數(shù)作為適應(yīng)度函數(shù),即: (11) (3)基因選擇。 采用輪盤賭法對(duì)種群中的個(gè)體進(jìn)行選擇操作,選擇適應(yīng)度高的個(gè)體遺傳到下一代[12],每個(gè)個(gè)體x被選擇的概率px為: (12) 其中,k為種群個(gè)體的數(shù)目;F(x)為個(gè)體x的適應(yīng)度值。 (4)交叉與變異操作。 交叉運(yùn)算是遺傳算法中產(chǎn)生新個(gè)體的主要操作過程,目的是通過使用交叉算子從全局的角度改善個(gè)體編碼結(jié)構(gòu)[13]。變異操作是對(duì)群體中的個(gè)體串的某些基因座上的基因值作變動(dòng),可以產(chǎn)生新的個(gè)體,使遺傳算法具有局部的隨機(jī)搜索能力[14]。 (5)循環(huán)操作。 當(dāng)個(gè)體的適應(yīng)度達(dá)到給定的閾值,或者個(gè)體和群體的適應(yīng)度不再上升時(shí),算法的迭代過程收斂、算法結(jié)束。否則,返回到第2步執(zhí)行循環(huán)。將遺傳算法優(yōu)化后的連接權(quán)值和閾值作為BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值,進(jìn)行GA-BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練,直到滿足誤差要求或達(dá)到最大訓(xùn)練次數(shù)為止[15]。 將改進(jìn)的GA-BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,對(duì)2013-2015年3組測(cè)試驗(yàn)證樣本進(jìn)行預(yù)測(cè)。利用仿真實(shí)驗(yàn)得出的預(yù)測(cè)結(jié)果與實(shí)際房價(jià)進(jìn)行比較,如表3所示。對(duì)比得出,GA-BP神經(jīng)網(wǎng)絡(luò)模型對(duì)2013-2015年房價(jià)預(yù)測(cè)的最低準(zhǔn)確度為99.20%。 表3 遺傳算法改進(jìn)BP神經(jīng)網(wǎng)絡(luò)模型的房價(jià)預(yù)測(cè)結(jié)果 經(jīng)過BP神經(jīng)網(wǎng)絡(luò)模型與GA-BP神經(jīng)網(wǎng)絡(luò)模型的實(shí)驗(yàn)結(jié)果對(duì)比,可以得出各房價(jià)預(yù)測(cè)模型的誤差統(tǒng)計(jì),如表4所示。BP神經(jīng)網(wǎng)絡(luò)和GA-BP神經(jīng)網(wǎng)絡(luò)的誤差曲線對(duì)比如圖2所示。 表4 BP神經(jīng)網(wǎng)絡(luò)與GA-BP神經(jīng)網(wǎng)絡(luò)的房價(jià)預(yù)測(cè)誤差對(duì)比 % 由表4得出,傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)的房價(jià)預(yù)測(cè)模型的誤差遠(yuǎn)高于GA-BP神經(jīng)模型;從圖2可以看出,當(dāng)最大訓(xùn)練步數(shù)為8 000次,目標(biāo)誤差設(shè)定為0.001時(shí),GA-BP神經(jīng)網(wǎng)絡(luò)經(jīng)過的訓(xùn)練次數(shù)明顯少于BP神經(jīng)網(wǎng)絡(luò),且誤差曲線趨勢(shì)較為平緩,更加貼近目標(biāo)曲線,收斂速度明顯加快。由此可得出,遺傳算法改進(jìn)后的GA-BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)值更接近于真實(shí)值。 圖2 BP神經(jīng)網(wǎng)絡(luò)模型(上)與GA-BP神經(jīng)網(wǎng)絡(luò)模型(下)誤差曲線對(duì)比 利用遺傳算法的全局搜索能力找出BP神經(jīng)網(wǎng)絡(luò)的最優(yōu)初始權(quán)值和閾值,進(jìn)而使BP神經(jīng)網(wǎng)絡(luò)具有更快的收斂速度和更高的精度。采用2005-2012年中國房價(jià)及其主要影響因素作為實(shí)驗(yàn)數(shù)據(jù),分別用BP神經(jīng)網(wǎng)絡(luò)和GA-BP神經(jīng)網(wǎng)絡(luò)對(duì)2013-2015年房價(jià)進(jìn)行了預(yù)測(cè)。結(jié)果表明,GA-BP神經(jīng)網(wǎng)絡(luò)具有預(yù)測(cè)精度高、收斂速度快的特點(diǎn),同時(shí)避免了陷入局部最優(yōu)的缺陷,可以作為房價(jià)預(yù)測(cè)的一種可靠的方法,同時(shí)也可以嘗試作為其他類型數(shù)據(jù)的預(yù)測(cè)方法。2 基于傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)的房價(jià)預(yù)測(cè)模型
2.1 實(shí)驗(yàn)數(shù)據(jù)準(zhǔn)備及數(shù)據(jù)預(yù)處理
2.2 建立訓(xùn)練模型
2.3 BP網(wǎng)絡(luò)的模型訓(xùn)練和結(jié)果
3 遺傳算法改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)模型
3.1 遺傳算法改進(jìn)BP神經(jīng)網(wǎng)絡(luò)的步驟
3.2 改進(jìn)遺傳算法的BP神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練結(jié)果
4 實(shí)驗(yàn)結(jié)果對(duì)比
5 結(jié)束語