基于CS-AGA-BP神經(jīng)網(wǎng)絡(luò)的房價預(yù)測分析
摘要:經(jīng)過MATLAB編程對GA-BP神經(jīng)網(wǎng)絡(luò)、PSO-BP神經(jīng)網(wǎng)絡(luò)、RBF神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)進行精度對比;另外經(jīng)過計算發(fā)現(xiàn)CS-AGA-BP神經(jīng)網(wǎng)絡(luò)預(yù)測精度得到提升,多次運行均方差要低于GA-BP神經(jīng)網(wǎng)絡(luò),可以認為模型優(yōu)化取得良好的效果。
1 算法基本原理
1.1 BP神經(jīng)網(wǎng)絡(luò)簡介
BP(back propagation)神經(jīng)網(wǎng)絡(luò)是一種多層前饋型神經(jīng)網(wǎng)絡(luò),其具有三層及三層以上的多層結(jié)構(gòu),每層均由若干神經(jīng)元組成,相鄰層間的神經(jīng)元均實現(xiàn)全連接,而上下層各神經(jīng)元間無連接。BP 神經(jīng)網(wǎng)絡(luò)分為輸入層、隱含層和輸出層,輸入層和輸出層均為一層結(jié)構(gòu),節(jié)點數(shù)目分別為自變量與因變量的數(shù)目,隱含層數(shù)不設(shè)限制,依據(jù)Kolrnogorov 定理,所有3 層的BP 神經(jīng)網(wǎng)絡(luò)均可以趨近于任意的非線性函數(shù),因此隱含層一般取1 層,節(jié)點數(shù)目由經(jīng)驗函數(shù)確定。BP 神經(jīng)網(wǎng)絡(luò)按有導(dǎo)師的學習方式進行訓(xùn)練,當一對學習模式提供給網(wǎng)絡(luò)后,網(wǎng)絡(luò)神經(jīng)元將按“輸入層- 隱含層- 輸出層”路徑傳播,輸出層輸出網(wǎng)絡(luò)響應(yīng),信號誤差沿“輸出層- 隱含層-輸入層”路徑傳播以逐層修正各連接權(quán)和閾值,此過程被稱為“誤差逆?zhèn)鞑ニ惴ā?,隨著修正次數(shù)的增加,網(wǎng)絡(luò)對輸入模式響應(yīng)的正確率不斷提高,輸出值逐步逼近期望輸出。BP 神經(jīng)網(wǎng)絡(luò)示意圖如圖1 所示。
圖1 BP神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
有監(jiān)督的BP 神經(jīng)網(wǎng)絡(luò)機器學習步驟:BP 神經(jīng)網(wǎng)絡(luò)共有輸入層、隱含層和輸出層3 層結(jié)構(gòu),設(shè)輸入層有m個變量,隱含層有l(wèi) 個變量,輸出層有n 個變量。輸入層、隱含層和輸出層的節(jié)點分別用下標g、h、j 表示;用ω gh 表示輸入層和隱含層節(jié)點間的權(quán)值,用ah 表示閾值;用ω hi 表示隱含層和輸出層節(jié)點間的權(quán)值,用bi 表示偏置;學習速率設(shè)置為θ 。對于輸入的因變量數(shù)據(jù)x,設(shè)其目標輸出值為y* ,實際輸出值為y 。將選定的數(shù)據(jù)組作為樣本進行網(wǎng)絡(luò)訓(xùn)練,根據(jù)目標輸出值與實際輸出值間的誤差進行正、反向傳遞處理。
計算正向反饋:當輸入第j 個數(shù)據(jù)時,由輸入層節(jié)點g 到隱含層節(jié)點h 的總輸入(加權(quán)和)為:
輸入值和隱含層之間的關(guān)系通過激勵函數(shù)——Sigmoid 函數(shù)處理,隱含層節(jié)點h 的輸出值為:
則輸出層節(jié)點i 的輸出值為:
因為Sigmoid 激勵函數(shù)連續(xù)可微,所以訓(xùn)練指標函數(shù)也連續(xù)可微。
反向傳遞調(diào)整各層權(quán)值:為使誤差盡量減小,進行網(wǎng)絡(luò)訓(xùn)練時需要逐步對網(wǎng)絡(luò)結(jié)構(gòu)進行優(yōu)化,采用梯度下降法對權(quán)值 ωgh 、ωhi 和閾值ah 、bi 進行更新以優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)。
多次對權(quán)值和閾值進行修正后網(wǎng)絡(luò)達到預(yù)先設(shè)定的目標誤差或者最大學習次數(shù)則結(jié)束算法,網(wǎng)絡(luò)訓(xùn)練成功。
1.2 遺傳算法簡介
遺傳算法(genetic algorithms,GA)是一種基于達爾文進化論中的自然選擇原理和自然遺傳機制的搜索(尋優(yōu))算法,其通過模擬自然界中的生命進化機制在人工系統(tǒng)中的特定目標進行逐步優(yōu)化。遺傳算法實質(zhì)類似于粒子群算法和模擬退火等智能算法,屬于群體搜索技術(shù),其中的種群會依據(jù)適者生存的原則逐代進化,最終得到最優(yōu)解或準最優(yōu)解。其必備步驟包含以下幾種:初始群體的產(chǎn)生、計算群體中個體的適應(yīng)度、依據(jù)適者生存的原則選擇適應(yīng)度較大的優(yōu)良個體、被選出的優(yōu)良個體兩兩配對,隨機交叉染色體基因并隨機變異某些基因生成新群體,按此方法逐代進化,直至達到迭代次數(shù)或滿足精度時終止進化,找出最優(yōu)解。
生物中的遺傳概念在遺傳算法中的對應(yīng)關(guān)系如表1所示。
1.3 GA-BP神經(jīng)網(wǎng)絡(luò)簡介
傳統(tǒng)BP 神經(jīng)網(wǎng)絡(luò)存在收斂速度慢且不利于尋求全局最優(yōu)解的缺點,而利用遺傳算法對原始BP 神經(jīng)網(wǎng)絡(luò)進行優(yōu)化可以對BP 神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進行更加精確的修正與優(yōu)化,遺傳算法的加入可以有效克服BP 神經(jīng)網(wǎng)絡(luò)容易陷入局部最優(yōu)且收斂速度慢的缺陷。遺傳算法部分參數(shù)需要根據(jù)經(jīng)驗進行設(shè)定,本研究涉及的遺傳算法參數(shù)如下。
進化終止代數(shù):進化終止代數(shù)即最大迭代次數(shù),進化終止代數(shù)過小可能不會得到收斂的結(jié)果,過大則會造成過擬合現(xiàn)象。本研究選取最大迭代次數(shù)為20。種群規(guī)模:種群規(guī)模過小會造成病態(tài)基因的出現(xiàn)概率增大,不利于種群的進化,過大則會造成難以收斂且會浪費資源。本研究選取種群規(guī)模為10。交叉概率:交叉概率關(guān)系到種群的更新速率,過大會破壞已有的較好的種群,捕捉不到最優(yōu)解,過小則不能有效更新種群。本文選取交叉概率為20%,后續(xù)采用自適應(yīng)更新公式自行確定交叉概率。變異概率:變異概率關(guān)系到種群的多樣性變化,變異概率過小會造成種群多樣性下降過快,部分缺陷基因迅速丟失且不易修補,過大則會造成高階模式的破壞概率增大。本研究選取變異概率為10%,后續(xù)采用自適應(yīng)更新公式自行確定變異概率。利用遺傳算法對BP 神經(jīng)網(wǎng)絡(luò)進行優(yōu)化的具體流程如下。
1)遺傳算法參數(shù)初始化:對遺傳算法中的迭代次數(shù)、種群規(guī)模、交叉概率和變異概率進行初始化,迭代次數(shù)取20,種群規(guī)模取10,交叉概率取20%,變異概率取10%。
2)種群初始化:將種群的信息定義為一個結(jié)構(gòu)體,存儲10 個個體的適應(yīng)度值和染色體的編碼信息。
3)染色體編碼和適應(yīng)度計算:遍歷10 個種群的循環(huán),通過對各種群中每個個體的染色體隨機賦值并測試其取值是否位于變量邊界限制內(nèi),只保留符合條件的編碼;將編碼后的染色體分段,分為輸入層與隱含層連接的權(quán)值、隱含層神經(jīng)元閾值、隱含層與輸出層連接的權(quán)值和輸出層神經(jīng)元閾值,將編碼作為神經(jīng)網(wǎng)絡(luò)權(quán)值的賦值,設(shè)置網(wǎng)絡(luò)的進化參數(shù),迭代次數(shù)為20,學習率為10%,最小目標值誤差為0.000 1,訓(xùn)練網(wǎng)絡(luò)并進行模擬預(yù)測,將預(yù)測值與實際值之差的絕對值作為染色體對應(yīng)的適應(yīng)度值。
4)確定最優(yōu)染色體:根據(jù)適應(yīng)度值挑選出最好的染色體適應(yīng)度。
5)優(yōu)良個體的選擇:將個體適應(yīng)度值取倒數(shù)得到的數(shù)值作為其被選中的可能,將所有個體的可能值歸一化處理作為概率,該值越大說明適應(yīng)度值越小,該個體越優(yōu)良,越容易作為父代經(jīng)歷交叉變異的過程,采用輪盤賭算法隨機產(chǎn)生選擇值,根據(jù)其落在哪個個體的概率區(qū)間內(nèi),將該個體作為父代并儲存信息。輪盤賭規(guī)則的算法流程和轉(zhuǎn)盤概率分布示意如圖2 所示。
6)交叉和變異:對種群所有個體進行遍歷,依據(jù)交叉概率隨機選取2 條染色體并隨機選擇交叉位進行交叉,如果2 條染色體均可行則進行交叉,然后對新的種群信息進行存儲;依據(jù)變異概率隨機選取2 條染色體并進行變異,如果2 條染色體均可行則進行變異,然后對新的種群信息進行存儲。
7)最優(yōu)初始閾值和權(quán)值的賦值:將進化了20 代的種群的最優(yōu)的基因賦值給神經(jīng)網(wǎng)絡(luò)用來預(yù)測。
8)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練與測試:得到最優(yōu)權(quán)值和閾值以及輸入層、隱含層和輸出層的數(shù)值后,利用訓(xùn)練數(shù)據(jù)對網(wǎng)絡(luò)進行訓(xùn)練,然后利用后面較少的數(shù)據(jù)進行預(yù)測以及誤差檢驗。
圖2 輪盤賭規(guī)則的算法流程和轉(zhuǎn)盤概率分布示意圖
1.4 CS-AGA-BP神經(jīng)網(wǎng)絡(luò)的改進簡介
為更大程度地增強BP 神經(jīng)網(wǎng)絡(luò)的優(yōu)化效果,本文最終采用CS-AGA-BP 神經(jīng)網(wǎng)絡(luò)對原模型進行改進。改進分為兩個方向:①交叉概率和變異概率采用自適應(yīng)算法確定;②通過Logistic 混沌序列對交叉位置進行確定,并進行多基因變異。
普通遺傳算法中的交叉率和變異率是人為給定的,其對遺傳算法的行為和性能有著關(guān)鍵影響。交叉率過大,新個體產(chǎn)生的速度就越快,但是很容易破壞遺傳模式,一些高適應(yīng)度的個體結(jié)果很快就會被破壞,如果交叉率過小,個體間不能傳遞信息產(chǎn)生新個體,搜索過程會變得緩慢甚至停滯不前;變異率過大,遺傳算法就變成了隨機搜索算法,變異率過小就不易產(chǎn)生新個體。基于此,Srinvivas 等人提出用自適應(yīng)遺傳算法來控制交叉率和變異率的大小,使其隨適應(yīng)度自動改變,適應(yīng)度越接近最大適應(yīng)度值,交叉率和變異率就越小,為防止進化初期最優(yōu)個體不發(fā)生交叉和變異,對其交叉率和變異率進行初始化,同時為了防止每一代的最優(yōu)個體被破壞,通過精英選擇策略將它們直接復(fù)制到下一代。交叉率和變異率的調(diào)整公式為:
其中, fmax 為全體中最大的適應(yīng)度值, favg 為全體的平均適應(yīng)度值, f ′ 為交叉的2 個個體中較大的適應(yīng)度值, f為變異個體的適應(yīng)度值。該式中Pc1 取值為0.2, Pm1 取值為0.1。
遺傳算法跳出局部最優(yōu)解尋求全局最優(yōu)解時依賴于交叉和變異操作,在交叉操作中,單點交叉(段交叉)、多點交叉和均勻交叉使用較多;變異操作一般使用Guassian 分布的隨機變異來實現(xiàn)。許多學者采用不同方法進行變異操作以優(yōu)化遺傳算法,但改進效果并不明顯。而混沌系統(tǒng)可以對交叉和變異操作同時進行改進,在交叉操作中,以“門當戶對”原則進行個體配對,通過混沌序列確定交叉點,確保算法收斂精度,削弱和避免尋優(yōu)抖振問題;在變異操作中,混沌序列可以對染色體中多個基因進行變異,以避免算法早熟。本文采用Logistic 混沌序列進行遺傳改進,如式所示:
x(n +1) = 4x(n)[1? x(n)] (6)
CS-AGA-BP 神經(jīng)網(wǎng)絡(luò)優(yōu)化過程如圖3 所示。
圖3 CS-AGA-BP神經(jīng)網(wǎng)絡(luò)流程設(shè)計
2 算法的基本算例
2.1 數(shù)據(jù)來源與處理
本文采用數(shù)據(jù)是數(shù)據(jù)挖掘領(lǐng)域常用的美國波士頓房價數(shù)據(jù)集,格式為506?14,取前 500 行數(shù)據(jù),前80% 行用作訓(xùn)練數(shù)據(jù),后20% 行用作測試數(shù)據(jù)。以前13 個指標作為模型自變量,以MEDV 作為模型因變量。
為便于將輸入樣本矩陣的輸入范圍控制在(-1,1)內(nèi)以消除量綱影響,需運用MATLAB 軟件中的mapminmax 函數(shù)對所有數(shù)據(jù)進行歸一化處理,即:
其中, α 是歸一化前的變量; αmax 和αmin分別為α 的最大值和最小值;是歸一化后的變量。
2.2 隱含層節(jié)點確定
神經(jīng)網(wǎng)絡(luò)隱含層節(jié)點數(shù)的選擇相當重要,其對神經(jīng)網(wǎng)絡(luò)的性能影響很大,如果隱含層節(jié)點數(shù)過少,神經(jīng)網(wǎng)絡(luò)很難建立復(fù)雜的判斷界,達不到合適的訓(xùn)練精度,容錯性差;隱含層節(jié)點數(shù)過多,雖然會降低誤差,提高精度,但是神經(jīng)網(wǎng)絡(luò)會趨向于復(fù)雜,從而造成訓(xùn)練時間增加和過擬合的情況。為確保在滿足精度的前提下降低網(wǎng)絡(luò)復(fù)雜性,即選取合適的隱含層節(jié)點數(shù)目,本研究采取以下經(jīng)驗函數(shù)來確定BP 神經(jīng)網(wǎng)絡(luò)隱含層的節(jié)點數(shù)目:
其中, hiddennum 是隱含層節(jié)點的數(shù)目, inputnum 是輸入層節(jié)點的數(shù)目,outputnum 是輸入層節(jié)點的數(shù)目,α是1~10 之間的取整調(diào)節(jié)常數(shù)。本研究中inputnum =13 ,outputnum = 1 , hiddennum 取值范圍為5~14。為了挑選出最優(yōu)的隱含層節(jié)點數(shù),此處采用均方差誤差(RMSE)進行衡量,其計算公式如下所示:
其中,n 表示樣本數(shù)目, yi 表示實際房價, y?i 表示預(yù)測的房價。
將hiddennum 從5~14 共10 個值分別代入MATLAB程序中獨立運行,最后選取RMSE 最小時的10 作為隱含層節(jié)點數(shù)。
2.3 訓(xùn)練函數(shù)的選取
本文運用MATLAB 中newff 函數(shù)構(gòu)建前饋型神經(jīng)網(wǎng)絡(luò),newff 函數(shù)中的訓(xùn)練方法有基本梯度下降法(traingd)、帶有動量項的梯度下降法(traingdm)和帶有動量項的自適應(yīng)學習算法(traingdx)等。本研究選取適用于遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù)train 進行訓(xùn)練。網(wǎng)絡(luò)進化參數(shù)分別設(shè)置最大迭代次數(shù)為100,學習率為0.1,最小目標值誤差為0.000 1。
3 算例的MATLAB計算結(jié)果與解析
為了便于探究GA-BP 神經(jīng)網(wǎng)絡(luò)的優(yōu)化效果,本文選取PSO-BP、傳統(tǒng)BP 和RBF 神經(jīng)網(wǎng)絡(luò)與GA-BP 神經(jīng)網(wǎng)絡(luò)的預(yù)測效果進行對比。神經(jīng)網(wǎng)絡(luò)的學習率為0.1,迭代次數(shù)為100,隱含層節(jié)點數(shù)為10。針對后100 組數(shù)據(jù)進行預(yù)測,并將預(yù)測數(shù)據(jù)與實際數(shù)據(jù)進行對比分析誤差,如圖4 所示。
圖4 四種神經(jīng)網(wǎng)絡(luò)預(yù)測的誤差
通過MATLAB 計算可以看出GA-BP 神經(jīng)網(wǎng)絡(luò)和PSO-BP 神經(jīng)網(wǎng)絡(luò)預(yù)測精度較高,但是經(jīng)多次運算發(fā)現(xiàn)PSO-BP 神經(jīng)網(wǎng)絡(luò)預(yù)測精度并不穩(wěn)定。RBF 神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)誤差較大,但是RBF 神經(jīng)網(wǎng)絡(luò)的優(yōu)點是輸出結(jié)果非常穩(wěn)定。
通過CS-AGA-BP 神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)進行訓(xùn)練與預(yù)測,與原始GA-BP 神經(jīng)網(wǎng)絡(luò)誤差百分比進行對比,如圖5 所示。
圖5 GA-BP神經(jīng)網(wǎng)絡(luò)和ACS-GA-BP神經(jīng)網(wǎng)絡(luò)的誤差百分比
經(jīng)過MATLAB 此次計算,精度提升14.97%,雖然遺傳算法對神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值的更新具有隨機選擇性,但經(jīng)過多次計算對比取平均數(shù),CS-AGA-BP 神經(jīng)網(wǎng)絡(luò)的均方差要低于GA-BP 神經(jīng)網(wǎng)絡(luò)的均方差,誤差百分比也有所減小,因此可以認為模型優(yōu)化取得良好的效果。
參考文獻:
[1] GEN?AY R,YANG X.A forecast comparison of residential housing prices by parametric versus semiparametric conditional mean estimators[J].Economics Letters,1996,52(2):129-135.
[2] 王宇星,黃俊,潘英杰.GA-BP神經(jīng)網(wǎng)絡(luò)在老人負性情緒預(yù)測中的應(yīng)用[J].小型微型計算機系統(tǒng),2020,41(8):1702-1706.
[3] 羅博煒,洪智勇,王勁屹.多元線性回歸統(tǒng)計模型在房價預(yù)測中的應(yīng)用[J].計算機時代,2020(6):51-54.
[4] 楊再宋,謝菊芳,胡東,等.基于AW-GA-BP算法的配電網(wǎng)設(shè)備運行環(huán)境相對濕度的預(yù)測方法及應(yīng)用[J].重慶師范大學學報(自然科學版),2019,36(6):104-109,2.
[5] 惠天宇,杜尚勉,陳樂至,等.基于GA-BP神經(jīng)網(wǎng)絡(luò)的手足口病疫情預(yù)測[J].教育教學論壇,2020(38):133-134.
[6] 魯明.基于PCA-GA-BP模型對污水BOD的預(yù)測[J].湖北汽車工業(yè)學院學報,2019,33(4):57-61,76.
[7] 羅成.基于SVD-GA-BP神經(jīng)網(wǎng)絡(luò)模型的股價預(yù)測[J].佳木斯大學學報(自然科學版),2019,37(6):988-991.
[8] 趙銘生,劉守強,紀潤清,等.基于遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的華北型煤田礦壓破壞帶深度預(yù)測[J].礦業(yè)研究與開發(fā),2020,40(6):89-93.
[9] 司守奎,孫兆亮.數(shù)學建模算法與應(yīng)用[M].北京:國防工業(yè)出版社,2015.
[10] 閔江濤,楊杰,馬晨原.基于改進GA-BP網(wǎng)絡(luò)算法的邊坡力學參數(shù)反演分析[J].水電能源科學,2019,37(11):152-155.
[11] NING M,GUAN J,LIU P,et al.GA-BP air quality e v a l u a t i o n m e t h o d b a s e d o n f u z z y t h e o r y [ J ] .Computers,materials & continua,2019,58(1):215-227.
[ 1 2 ] TANG T , Y u a n S, T a n g Y, e t a l .Op t i m i z a t i o n o f impulse water turbine based on GA-BP neural network a r i t h m e t i c [ J ] . J o u r n a l o f m e c h a n i c a l s c i e n c e a n d technology,2019,33(1):241-253.
(本文來源于《電子產(chǎn)品世界》雜志2021年12月期)
評論