宋堯
(北京十一學校,北京,100039)
隨著第四次工業革命浪潮的來臨,一大批科技前沿技術逐漸興起,人工智能、大數據、5G、物聯網等技術不斷滲透到各個領域,給各行各業帶來巨大的改變。而隨著技術的飛速發展,我們的衣食住行正在悄然變化,在追求精神滿足的情況下,人們正在不斷完善自身的生活條件。房子是每個家庭的必需品,在購買房子時人們總是希望用較低的價格買到理想的房子,然而隨著市場的變化,房價時高時低,大眾很難捕捉到很好的購房時機,因此房價預測就成為人們普遍關心的事情。很多學者在該領域進行了深入研究,有的通過引入數學模型,結合數據分析來預測房價的走勢;有的通過市場分析,結合國家宏觀政策調控等,來預測房價的變化趨勢。
本文著重從數學模型角度來探究房價變化的影響因素,以波士頓的房價數據為著手點,通過引入隨機森林[1]回歸模型和全連接回歸模型,來預測該市的其他房屋價格,進而幫助大眾了解房價變化的真正影響因素。
本章將要對研究過程中遇到的一些方法做相關介紹,包含隨機森林(RandomForest)和全連接模型介紹,旨在從理論基礎上對工作做基礎調研。
隨機森林采用了多個弱學習器組合形成了強學習器,組合采用了bagging的方式,最終將多個弱學習器計算的結果采用投票或者加權平均的方式得到最終結果,這種方法能夠較好的降低方差,使整體結果泛化性較好[3]。
2.1.1 算法思想
由于常見的簡單機器學習方法例如決策樹,支持向量機都可以在一定程度上達到預測的目的,但是在某些數據上預測效果不能夠保證,所以可以在限定場景內將這類的簡單機器學習方法成為弱學習器,弱學習器具有一定準確性,而且多個弱學習器之間關注點不同,是包含有差異性的。
一般將弱學習器采用bagging[5]或者boosting[6]的方式集成學習,其中隨機森林就是采用bagging的方式合并。Bagging是并行式集成學習方法的代表,它的基本流程是,采用自助采樣法,得到多個基學習器,其中分類任務采用簡單投票法,而回歸任務采用簡單平均法。
隨機森林是bagging集成算法的一種,隨機森林的弱分類器采用決策樹,并且在訓練過程中加入了隨機屬性,也就是說先抽選k個屬性,然后選擇最佳屬性。加入了屬性擾動,這使得最終的模型泛化性較強。
2.1.2 RandomForest模型介紹
本文中采用的隨機森林模型采用的是決策樹[4]作為基礎模型,而且由于本文所做的工作為預測房價,所以屬于回歸模型,最終在多個弱模型訓練時,采用的是多個分類器的簡單平均作為最終的結果。本文共采用了500棵決策樹聚集成為隨機森林模型。而且由于數據量不足,訓練時采用了15折的策略。
在遇到使用機器學習難以解決的問題,深度學習可以較好擬合數據分布,例如圖像識別,翻譯等技術,現在大都是由深度學習完成的。本文將要使用全連接方式來對數據做回歸訓練,旨在探索深度學習的優勢。全連接算法即使用神經元的連接并加上非線性激活函數來擬合最終數據。
2.2.1 算法思想
在深度學習中,每一個基本計算單位被稱為神經元,在滿足一定條件下,神經元將會把自身攜帶的信息傳遞給下游,這個過程叫做信息傳輸。在全連接中,神經元是按照分層的方式做信息傳輸的,首先從基本數據中將信息傳遞給第一層神經元,神經元經過信息加工處理后,結果將進入激活函數,然后從激活函數中得到最終信息值,這個信息值將會把結果發布到下一層的全部神經元中,下一層神經元再次處理并向下游傳遞信息。在訓練過程中,采用反向傳播的方式來對每一個神經元的參數做調整,經過訓練后,將會得到多層的神經元參數,預測時便可以根據已經訓練完成的神經元參數來對數據做分類或回歸預測。
2.2.2 本項目模型介紹
在本項目中,采用了四層全連接層,還有一層為輸出層,分別的維度為[特征維度,256],[256,128],[128,128],[128,1],訓練的損失函數采用了均方誤差,優化器采用了rmsprop。在每一層中間采用了dropout[7]率為0.4,這個策略能夠一定程度上緩解模型的過擬合,每一層的激活函數采用了Relu[2],激活函數在神經元輸出值為正時信息不會衰減,能夠有效的將結果傳遞給下游,隱藏層中采用了L2正則化,這個策略同樣能夠減緩模型過擬合。
本章將要介紹整個實驗過程,包括數據預處理過程,隨機森林實驗過程和全連接的實驗過程,以及最終兩個模型的實驗效果。
3.1.1 數據預處理
3.1.1.1 數據獲取
我們采用Python中的Pandas來加載數據,并做數據展示,訓練數據展示如表1所示。
表1中每一列表示的是房屋的屬性或者價格,共有79列;而每一行代表一個房屋的相關數據。在對房價價格進行數據描述時,我們發現其大致符合高斯分布[5],所以在此進行了數據的平滑處理,最終得到訓練集的特征大小為1460×79,其中房屋數目為1460,特征數目為79,另外還有一列對應的房屋價格label的數據。
3.1.1.2 數據處理
本文首先對預測結果(房屋價格)取了對數結果,使價格區間大致符合正態分布。具體如圖1所示。

圖1 房屋價格取對數
然后對于缺失的列查看了其有效性,如果某些列缺失數據較多且與價格之間無明顯關聯,本文中將會把這類的特征去除。
接著,對所有類型參數采用獨熱編碼方式,對所有數值參數采用歸一化處理,最終得到了訓練和測試的特征數據。
3.1.2 訓練模型
此次研究采用了兩種不同的模型,形成了兩種方案。第一種方案使用了隨機森林模型,將相關特征作為輸入,目的是使用多棵決策樹來擬合最終房價;第二種方案為采用深度學習全連接來做回歸預測,目的在于嘗試使用深度學習解決生活問題,直接擬合房價。
3.1.2.1 隨機森林
隨機森林使用了15折的方式訓練,在15折的結果中,最優結果的RMSE達到了0.115,在全量預測結果后,RMSE為0.12。具體15折效果如圖2所示。
與此同時,使用隨機森林的結果來對特征做重要性評估,與直覺相似,房屋面積算是比較重要的特征。

圖2 隨機森林15折訓練效果與樣本重要性示例
最終使用隨機森林對測試集做預測,得到的結果RMSE為0.12,屬于較好的結果。
3.1.2.2 FNN
全連接使用的訓練輪數采用了300輪,最終RMSE達到了0.09,其中訓練過程如圖3所示。在經過100輪左右后,模型逐漸學習到了數據信息,然后繼續經過50輪的RMSE快速減少,最終在200輪左右幾乎達到平衡,此時模型已經能夠擬合到數據,繼續訓練下去可能會帶來過擬合,所以最終我們采用了300輪作為最終訓練輪數。

表1 數據展示

圖3 全連接訓練過程
全連接在最終的預測中,RMSE達到了0.09。
本文一共采用了兩種方案來做房屋價格預測,分別是隨機森林回歸模型,深度學習全連接回歸。最終結果顯示,使用RMSE作為衡量指標時,深度學習全連接方案優于隨機森林結果,說明全連接預測是一個很好的方案。
通過本次房屋預測模型的建立,能夠得到影響房屋總價值的不僅僅是房屋居住總面積這一個重量級特征,還有街道名稱,裝修完整度等其他影響特征,并且有些看起來不是很重要的特征也能夠影響房價,例如房屋類型功能等。數據幫助我們篩選出重要的特征,排除了一些“想當然”的結果,能夠更好的抓住事情的本質,這就是大數據輔助我們解決生活中的事情的實際例子。