宋堯
(北京十一學(xué)校,北京,100039)
隨著第四次工業(yè)革命浪潮的來(lái)臨,一大批科技前沿技術(shù)逐漸興起,人工智能、大數(shù)據(jù)、5G、物聯(lián)網(wǎng)等技術(shù)不斷滲透到各個(gè)領(lǐng)域,給各行各業(yè)帶來(lái)巨大的改變。而隨著技術(shù)的飛速發(fā)展,我們的衣食住行正在悄然變化,在追求精神滿足的情況下,人們正在不斷完善自身的生活條件。房子是每個(gè)家庭的必需品,在購(gòu)買(mǎi)房子時(shí)人們總是希望用較低的價(jià)格買(mǎi)到理想的房子,然而隨著市場(chǎng)的變化,房?jī)r(jià)時(shí)高時(shí)低,大眾很難捕捉到很好的購(gòu)房時(shí)機(jī),因此房?jī)r(jià)預(yù)測(cè)就成為人們普遍關(guān)心的事情。很多學(xué)者在該領(lǐng)域進(jìn)行了深入研究,有的通過(guò)引入數(shù)學(xué)模型,結(jié)合數(shù)據(jù)分析來(lái)預(yù)測(cè)房?jī)r(jià)的走勢(shì);有的通過(guò)市場(chǎng)分析,結(jié)合國(guó)家宏觀政策調(diào)控等,來(lái)預(yù)測(cè)房?jī)r(jià)的變化趨勢(shì)。
本文著重從數(shù)學(xué)模型角度來(lái)探究房?jī)r(jià)變化的影響因素,以波士頓的房?jī)r(jià)數(shù)據(jù)為著手點(diǎn),通過(guò)引入隨機(jī)森林[1]回歸模型和全連接回歸模型,來(lái)預(yù)測(cè)該市的其他房屋價(jià)格,進(jìn)而幫助大眾了解房?jī)r(jià)變化的真正影響因素。
本章將要對(duì)研究過(guò)程中遇到的一些方法做相關(guān)介紹,包含隨機(jī)森林(RandomForest)和全連接模型介紹,旨在從理論基礎(chǔ)上對(duì)工作做基礎(chǔ)調(diào)研。
隨機(jī)森林采用了多個(gè)弱學(xué)習(xí)器組合形成了強(qiáng)學(xué)習(xí)器,組合采用了bagging的方式,最終將多個(gè)弱學(xué)習(xí)器計(jì)算的結(jié)果采用投票或者加權(quán)平均的方式得到最終結(jié)果,這種方法能夠較好的降低方差,使整體結(jié)果泛化性較好[3]。
2.1.1 算法思想
由于常見(jiàn)的簡(jiǎn)單機(jī)器學(xué)習(xí)方法例如決策樹(shù),支持向量機(jī)都可以在一定程度上達(dá)到預(yù)測(cè)的目的,但是在某些數(shù)據(jù)上預(yù)測(cè)效果不能夠保證,所以可以在限定場(chǎng)景內(nèi)將這類(lèi)的簡(jiǎn)單機(jī)器學(xué)習(xí)方法成為弱學(xué)習(xí)器,弱學(xué)習(xí)器具有一定準(zhǔn)確性,而且多個(gè)弱學(xué)習(xí)器之間關(guān)注點(diǎn)不同,是包含有差異性的。
一般將弱學(xué)習(xí)器采用bagging[5]或者boosting[6]的方式集成學(xué)習(xí),其中隨機(jī)森林就是采用bagging的方式合并。Bagging是并行式集成學(xué)習(xí)方法的代表,它的基本流程是,采用自助采樣法,得到多個(gè)基學(xué)習(xí)器,其中分類(lèi)任務(wù)采用簡(jiǎn)單投票法,而回歸任務(wù)采用簡(jiǎn)單平均法。
隨機(jī)森林是bagging集成算法的一種,隨機(jī)森林的弱分類(lèi)器采用決策樹(shù),并且在訓(xùn)練過(guò)程中加入了隨機(jī)屬性,也就是說(shuō)先抽選k個(gè)屬性,然后選擇最佳屬性。加入了屬性擾動(dòng),這使得最終的模型泛化性較強(qiáng)。
2.1.2 RandomForest模型介紹
本文中采用的隨機(jī)森林模型采用的是決策樹(shù)[4]作為基礎(chǔ)模型,而且由于本文所做的工作為預(yù)測(cè)房?jī)r(jià),所以屬于回歸模型,最終在多個(gè)弱模型訓(xùn)練時(shí),采用的是多個(gè)分類(lèi)器的簡(jiǎn)單平均作為最終的結(jié)果。本文共采用了500棵決策樹(shù)聚集成為隨機(jī)森林模型。而且由于數(shù)據(jù)量不足,訓(xùn)練時(shí)采用了15折的策略。
在遇到使用機(jī)器學(xué)習(xí)難以解決的問(wèn)題,深度學(xué)習(xí)可以較好擬合數(shù)據(jù)分布,例如圖像識(shí)別,翻譯等技術(shù),現(xiàn)在大都是由深度學(xué)習(xí)完成的。本文將要使用全連接方式來(lái)對(duì)數(shù)據(jù)做回歸訓(xùn)練,旨在探索深度學(xué)習(xí)的優(yōu)勢(shì)。全連接算法即使用神經(jīng)元的連接并加上非線性激活函數(shù)來(lái)擬合最終數(shù)據(jù)。
2.2.1 算法思想
在深度學(xué)習(xí)中,每一個(gè)基本計(jì)算單位被稱(chēng)為神經(jīng)元,在滿足一定條件下,神經(jīng)元將會(huì)把自身攜帶的信息傳遞給下游,這個(gè)過(guò)程叫做信息傳輸。在全連接中,神經(jīng)元是按照分層的方式做信息傳輸?shù)?,首先從基本?shù)據(jù)中將信息傳遞給第一層神經(jīng)元,神經(jīng)元經(jīng)過(guò)信息加工處理后,結(jié)果將進(jìn)入激活函數(shù),然后從激活函數(shù)中得到最終信息值,這個(gè)信息值將會(huì)把結(jié)果發(fā)布到下一層的全部神經(jīng)元中,下一層神經(jīng)元再次處理并向下游傳遞信息。在訓(xùn)練過(guò)程中,采用反向傳播的方式來(lái)對(duì)每一個(gè)神經(jīng)元的參數(shù)做調(diào)整,經(jīng)過(guò)訓(xùn)練后,將會(huì)得到多層的神經(jīng)元參數(shù),預(yù)測(cè)時(shí)便可以根據(jù)已經(jīng)訓(xùn)練完成的神經(jīng)元參數(shù)來(lái)對(duì)數(shù)據(jù)做分類(lèi)或回歸預(yù)測(cè)。
2.2.2 本項(xiàng)目模型介紹
在本項(xiàng)目中,采用了四層全連接層,還有一層為輸出層,分別的維度為[特征維度,256],[256,128],[128,128],[128,1],訓(xùn)練的損失函數(shù)采用了均方誤差,優(yōu)化器采用了rmsprop。在每一層中間采用了dropout[7]率為0.4,這個(gè)策略能夠一定程度上緩解模型的過(guò)擬合,每一層的激活函數(shù)采用了Relu[2],激活函數(shù)在神經(jīng)元輸出值為正時(shí)信息不會(huì)衰減,能夠有效的將結(jié)果傳遞給下游,隱藏層中采用了L2正則化,這個(gè)策略同樣能夠減緩模型過(guò)擬合。
本章將要介紹整個(gè)實(shí)驗(yàn)過(guò)程,包括數(shù)據(jù)預(yù)處理過(guò)程,隨機(jī)森林實(shí)驗(yàn)過(guò)程和全連接的實(shí)驗(yàn)過(guò)程,以及最終兩個(gè)模型的實(shí)驗(yàn)效果。
3.1.1 數(shù)據(jù)預(yù)處理
3.1.1.1 數(shù)據(jù)獲取
我們采用Python中的Pandas來(lái)加載數(shù)據(jù),并做數(shù)據(jù)展示,訓(xùn)練數(shù)據(jù)展示如表1所示。
表1中每一列表示的是房屋的屬性或者價(jià)格,共有79列;而每一行代表一個(gè)房屋的相關(guān)數(shù)據(jù)。在對(duì)房?jī)r(jià)價(jià)格進(jìn)行數(shù)據(jù)描述時(shí),我們發(fā)現(xiàn)其大致符合高斯分布[5],所以在此進(jìn)行了數(shù)據(jù)的平滑處理,最終得到訓(xùn)練集的特征大小為1460×79,其中房屋數(shù)目為1460,特征數(shù)目為79,另外還有一列對(duì)應(yīng)的房屋價(jià)格label的數(shù)據(jù)。
3.1.1.2 數(shù)據(jù)處理
本文首先對(duì)預(yù)測(cè)結(jié)果(房屋價(jià)格)取了對(duì)數(shù)結(jié)果,使價(jià)格區(qū)間大致符合正態(tài)分布。具體如圖1所示。
圖1 房屋價(jià)格取對(duì)數(shù)
然后對(duì)于缺失的列查看了其有效性,如果某些列缺失數(shù)據(jù)較多且與價(jià)格之間無(wú)明顯關(guān)聯(lián),本文中將會(huì)把這類(lèi)的特征去除。
接著,對(duì)所有類(lèi)型參數(shù)采用獨(dú)熱編碼方式,對(duì)所有數(shù)值參數(shù)采用歸一化處理,最終得到了訓(xùn)練和測(cè)試的特征數(shù)據(jù)。
3.1.2 訓(xùn)練模型
此次研究采用了兩種不同的模型,形成了兩種方案。第一種方案使用了隨機(jī)森林模型,將相關(guān)特征作為輸入,目的是使用多棵決策樹(shù)來(lái)擬合最終房?jī)r(jià);第二種方案為采用深度學(xué)習(xí)全連接來(lái)做回歸預(yù)測(cè),目的在于嘗試使用深度學(xué)習(xí)解決生活問(wèn)題,直接擬合房?jī)r(jià)。
3.1.2.1 隨機(jī)森林
隨機(jī)森林使用了15折的方式訓(xùn)練,在15折的結(jié)果中,最優(yōu)結(jié)果的RMSE達(dá)到了0.115,在全量預(yù)測(cè)結(jié)果后,RMSE為0.12。具體15折效果如圖2所示。
與此同時(shí),使用隨機(jī)森林的結(jié)果來(lái)對(duì)特征做重要性評(píng)估,與直覺(jué)相似,房屋面積算是比較重要的特征。
圖2 隨機(jī)森林15折訓(xùn)練效果與樣本重要性示例
最終使用隨機(jī)森林對(duì)測(cè)試集做預(yù)測(cè),得到的結(jié)果RMSE為0.12,屬于較好的結(jié)果。
3.1.2.2 FNN
全連接使用的訓(xùn)練輪數(shù)采用了300輪,最終RMSE達(dá)到了0.09,其中訓(xùn)練過(guò)程如圖3所示。在經(jīng)過(guò)100輪左右后,模型逐漸學(xué)習(xí)到了數(shù)據(jù)信息,然后繼續(xù)經(jīng)過(guò)50輪的RMSE快速減少,最終在200輪左右?guī)缀踹_(dá)到平衡,此時(shí)模型已經(jīng)能夠擬合到數(shù)據(jù),繼續(xù)訓(xùn)練下去可能會(huì)帶來(lái)過(guò)擬合,所以最終我們采用了300輪作為最終訓(xùn)練輪數(shù)。
表1 數(shù)據(jù)展示
圖3 全連接訓(xùn)練過(guò)程
全連接在最終的預(yù)測(cè)中,RMSE達(dá)到了0.09。
本文一共采用了兩種方案來(lái)做房屋價(jià)格預(yù)測(cè),分別是隨機(jī)森林回歸模型,深度學(xué)習(xí)全連接回歸。最終結(jié)果顯示,使用RMSE作為衡量指標(biāo)時(shí),深度學(xué)習(xí)全連接方案優(yōu)于隨機(jī)森林結(jié)果,說(shuō)明全連接預(yù)測(cè)是一個(gè)很好的方案。
通過(guò)本次房屋預(yù)測(cè)模型的建立,能夠得到影響房屋總價(jià)值的不僅僅是房屋居住總面積這一個(gè)重量級(jí)特征,還有街道名稱(chēng),裝修完整度等其他影響特征,并且有些看起來(lái)不是很重要的特征也能夠影響房?jī)r(jià),例如房屋類(lèi)型功能等。數(shù)據(jù)幫助我們篩選出重要的特征,排除了一些“想當(dāng)然”的結(jié)果,能夠更好的抓住事情的本質(zhì),這就是大數(shù)據(jù)輔助我們解決生活中的事情的實(shí)際例子。