卜鈺家
(澳門大學協(xié)同創(chuàng)新研究院,澳門 999078)
由于房地產行業(yè)近年的迅速發(fā)展,房價也連年增長,這讓很多想要買房的人感到十分頭疼,所以房價的走勢日益受到人們的重視。因此,通過對房價走勢的研究,能夠為我國的經(jīng)濟發(fā)展、人民生活水平的改善提供科學依據(jù)。我國每年都會發(fā)布相應的統(tǒng)計資料和數(shù)據(jù),所以如何把房價走勢從眾多的房地產統(tǒng)計數(shù)據(jù)中發(fā)掘出來,就成了人們關注的焦點以及研究熱點。
文中提出了一種基于遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡房價預測模型,以2006—2017年國家統(tǒng)計局以及成都市政府發(fā)布的國民經(jīng)濟和社會發(fā)展概況的統(tǒng)計信息為基礎,對2018年至2020年的成都市房價進行預測,將預測的房價與實際的房價進行分析。
BP神經(jīng)網(wǎng)絡通常有三層或三層以上結構[1],包括輸入層、輸出層,以及一個或多個隱含層,圖1是一種三層BP神經(jīng)網(wǎng)絡結構。
圖1 三層BP神經(jīng)網(wǎng)絡結構
BP神經(jīng)網(wǎng)絡采用梯度下降法,通過反向傳播不斷調整網(wǎng)絡的權值和閾值,使網(wǎng)絡的實際輸出值和期望輸出值之間的均方誤差最小。其訓練過程包括輸入信號正向傳播和誤差信號反向傳播。這兩個過程循環(huán)進行,不斷計算輸出誤差和調整權值,直到均方誤差達到設定標準[2]。
選取實驗數(shù)據(jù)十分關鍵,這一步驟會直接影響模型最終的準確度。能夠合理準確地反映房價走勢,且有針對性和代表性是選取實驗數(shù)據(jù)的標準。按照這個標準,本文的研究選取七個房價相關影響因素,包括地區(qū)生產總值、年末總人口、職工平均工資、居民儲蓄年末余額、開發(fā)住宅投資額、開發(fā)企業(yè)住宅竣工房屋面積、人均可支配收入。實驗數(shù)據(jù)來自國家統(tǒng)計局2006—2020年成都市的數(shù)據(jù)以及成都市政府發(fā)布的國民經(jīng)濟和社會發(fā)展概況的統(tǒng)計信息,其數(shù)據(jù)如表1所示。
表1 2006-2020年中國房價及其相關影響因素數(shù)據(jù)
為了解決初始數(shù)據(jù)中的因素數(shù)據(jù)的數(shù)量級有明顯差別的問題,也為提高模型的訓練效率,選取mapminmap函數(shù)對初始數(shù)據(jù)的輸入和輸出進行歸一化處理。Matlab內部將此變化為[ymin,ymax],其公式為
然后將數(shù)據(jù)轉化到[ ]-1,1 ,在Matlab中通過以下步驟:
將數(shù)據(jù)X歸一化到區(qū)間[Ymin,Ymax]內,Ymin和Ymax為調用mapminmap函數(shù)時設置的參數(shù),若不設置這兩個參數(shù),會歸一化到[-1,1]內。在模型訓練結束后,再用mapminmap函數(shù)對輸出數(shù)據(jù)進行反歸一化處理,將其還原。
對數(shù)據(jù)進行預處理后,接下來就是確認模型的輸入和輸出。本文建立三層結構的BP神經(jīng)網(wǎng)絡。將前兩年的影響因素作為輸入值,用第三年的房價作為輸出值,這樣可以得到13組樣本數(shù)據(jù)。模型的輸入層和輸出層的神經(jīng)元數(shù)分別為14和1。將樣本數(shù)據(jù)分為兩個部分:訓練樣本為2008—2017年的9組數(shù)據(jù),測試樣本為2018—2020年的3組數(shù)據(jù)。
2.2.1 確定隱含層節(jié)點數(shù)
采用試湊法選取網(wǎng)絡的隱含層節(jié)點。用經(jīng)驗公式得到一個估計值作為初始值,再用試湊法來確定最佳節(jié)點數(shù)。常用的經(jīng)驗公式為[3]
其中,m為隱含層節(jié)點數(shù);n為輸入層節(jié)點數(shù);l為輸出層節(jié)點數(shù);α為1~10之間的整數(shù)。本文設定輸入層神經(jīng)元個數(shù)為14,輸出層神經(jīng)元個數(shù)為1,經(jīng)過公式得出隱含層神經(jīng)元個數(shù)大致5~15之間,最后確定隱含層神經(jīng)元個數(shù)為6。制定訓練次數(shù)為1000,不同的隱含層節(jié)點數(shù)在訓練后得到的均方誤差如表2所示。
表2 不同隱含層節(jié)點網(wǎng)絡訓練后的均方誤差
2.2.2確定轉移函數(shù)
本文建立的BP神經(jīng)網(wǎng)絡中,隱含層的傳遞函數(shù)為tansig函數(shù),輸出層的傳遞函數(shù)為purelin函數(shù)[4]。
基于Matlab2018b中的神經(jīng)網(wǎng)絡工具箱構建BP神經(jīng)網(wǎng)絡模型,將2018—2020年的3組數(shù)據(jù)作為測試樣本。從表3可以看出,對2018—2020年房價預測的誤差情況。
表3 BP神經(jīng)網(wǎng)絡模型的房價預測結果
遺傳算法(Genetic Algorithm,GA)是模擬生物進化的一種有很好全局搜索能力的算法。通過適應度函數(shù)的過濾以及類似自然界中的選擇、交叉、變異等操作產生新的種群,這樣循環(huán)來提高群體中個體的適應度,直到滿足一定條件。BP神經(jīng)網(wǎng)絡容易陷入局部最優(yōu)[5]。因此,用遺傳算法改進BP神經(jīng)網(wǎng)絡(以下簡稱GA-BP神經(jīng)網(wǎng)絡),可以增強模型全局搜索的能力。
遺傳算法可以優(yōu)化BP神經(jīng)網(wǎng)絡的權值和閾值[6]。為實現(xiàn)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡,需要如下操作:
(1)種群的初始化
個體由各層權值和閾值組成。本文用實數(shù)編碼的方式對個體進行編碼[7]。編碼長度:
其中,m為隱含層節(jié)點數(shù);n為輸入層節(jié)點數(shù);l為輸出層節(jié)點數(shù)。遺傳算法的全局搜索能力容易因為種群數(shù)量的改變而改變,所以要針對特定問題來確定種群的規(guī)模。此次實驗初始種群的規(guī)模為40。
(2)選擇適應度函數(shù)
將神經(jīng)網(wǎng)絡誤差平方和的倒數(shù)作為適應度函數(shù)。BP神經(jīng)網(wǎng)絡預測誤差越小,對應的適應度函數(shù)就越大,適應性越好。
其中,SE為神經(jīng)網(wǎng)絡的預測輸出與期望輸出之間的誤差平方和。
(3)個體選擇
選擇normGeomSelect方法對種群中的個體進行選擇,概率設置為0.6。
(4)交叉與變異操作
交叉運算是遺傳算法中產生新個體的方法之一,通過使用交叉算子從全局的角度改善個體編碼結構[8]。變異算子具有局部搜索能力,它進一步擴展了種群的多樣性。變異操作是對群體中的個體串的某些基因座上的基因值作變動,從而產生新個體,使遺傳算法具有局部的隨機搜索能力[9]。
(5)循環(huán)操作
循環(huán)步驟(2)至步驟(4),直到滿足誤差要求或達到最大訓練次數(shù)為止[10]。
將遺傳算法優(yōu)化后得到的權值和閾值帶入原模型,再次訓練,對測試樣本進行預測。比較預測得到的房價與真實房價,從表4可以看出,對2018—2020年房價預測的誤差情況。
表4 GA-BP神經(jīng)網(wǎng)絡模型的房價預測結果
將BP神經(jīng)網(wǎng)絡模型和GA-BP神經(jīng)網(wǎng)絡模型所得到的預測值進行比較,如表5所示。由表5可得出,GA-BP神經(jīng)模型平均相對誤差要低于BP神經(jīng)模型,由此能夠看出經(jīng)過遺傳算法優(yōu)化后的BP神經(jīng)模型能夠更好地預測出房價。
表5 兩種模型的房價預測誤差統(tǒng)計
在設定的目標誤差為0.001,最大訓練步數(shù)為10000次的情況下,BP神經(jīng)網(wǎng)絡的訓練誤差曲線如圖2所示,GA-BP神經(jīng)網(wǎng)絡的訓練誤差曲線如圖3所示。BP神經(jīng)網(wǎng)絡在第6817步時收斂,GA-BP模型在第3179步時收斂,可得GABP神經(jīng)網(wǎng)絡的收斂速度快于BP神經(jīng)網(wǎng)絡的收斂速度。結合兩個模型的誤差曲線和平均相對誤差,可知GA-BP神經(jīng)網(wǎng)絡加快了網(wǎng)絡的收斂速度,提高了模型預測精度。
圖2 BP神經(jīng)網(wǎng)絡訓練誤差曲線
圖3 GA-BP神經(jīng)網(wǎng)絡訓練誤差曲線
BP神經(jīng)網(wǎng)絡容易陷入局部最優(yōu),而遺傳算法有良好的全局搜索能力,提升BP神經(jīng)網(wǎng)絡的收斂速度和預測精度。選取2006—2017年成都市房價及其相關影響因素作為訓練數(shù)據(jù),用BP神經(jīng)網(wǎng)絡和GA-BP神經(jīng)網(wǎng)絡這兩種模型來預測2018—2020年的房價。分析得知,GA-BP神經(jīng)網(wǎng)絡在預測精度和收斂速度方面都優(yōu)于BP神經(jīng)網(wǎng)絡,可以更好地預測房價。但是影響房價的因素是多元的,并且分析影響房價的所有因素是不現(xiàn)實的。一些突發(fā)事件會讓房價突然上漲而導致預測值和真實值偏差較大,所以在預測房價的時候還需要考慮多方因素。