胡曉偉, 馬春梅, 孔祥山, 李鳳銀
(曲阜師范大學(xué)計算機學(xué)院,276826,山東省日照市)
隨著我國城市化進程的加速,城市常住人口不斷增加,而發(fā)達地區(qū)的土地供應(yīng)不斷減少,導(dǎo)致了城市房價不斷攀升. 另一方面,二手房的周圍配套設(shè)施相對比較完善,如擁有成熟的交通、商業(yè)、教育環(huán)境等,越來越多的購房者開始關(guān)注二手房. 但是,二手房信息對購房者不夠公開透明,購房者無法客觀準確地評估二手房的價格. 在我國,關(guān)于房地產(chǎn)價格的評估方法主要有市場法、收益法、成本法等,它們大多適用于不同的市場環(huán)境. 這些方法更加注重定性分析,因此受主觀因素影響較大.
2004年,Limsombunc等[1]指出影響夏威夷市房價的因素有面積、樓齡、戶型、臥室數(shù)量、衛(wèi)生間數(shù)量、環(huán)境和地理位置,并且根據(jù)所選擇的影響因素建立了 Hedonic 模型和人工神經(jīng)網(wǎng)絡(luò)模型,實驗表明神經(jīng)網(wǎng)絡(luò)模型的預(yù)測效果更好. 2012年,Antipov等[2]在模型中引入了地鐵距離、市中心距離以及房屋地理位置這三個區(qū)位特征,使得房價預(yù)測結(jié)果更加趨于實際價格. 但是,他們沒有考慮到生活、教育配套等這一重要的鄰里特征. 2015年,F(xiàn)otheringham等[3]加入了空間效應(yīng),構(gòu)建了地理加權(quán)回歸(Geographical Weighted Regression,GWR)模型,考慮了地理位置對房價的影響因素,預(yù)測了倫敦1980~1998年的房價. 由于加入了地理位置這個重要的影響因素,使得房價預(yù)測更加實際化. 但是,不同國家房價的影響因素是不同的,如房產(chǎn)稅率、浴室數(shù)量等因素可能影響美國的房價,而對中國的二手房價格卻幾乎沒影響. 2018年,Denisko與Hoffman等[4]利用北京市在售的二手房數(shù)據(jù),加入多類別變量建立隨機森林模型,研究了影響房價的因素以及對房價的預(yù)測,進一步提高了預(yù)測的準確性. Mohd等[5]人在2020年的房價預(yù)測的房地產(chǎn)建模技術(shù)綜述中,介紹了人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)、支持向量機(Support Vector Machine,SVM)、線性回歸(Linear Regression,LR)、隨機森林(Random Forest,RF)、K近鄰(K-Nearest Neighbor,KNN)、樸素貝葉斯(Naive Bayes,NB)、空間分析(Spatial Analysis,SA)、嶺回歸(Ridge Regression,RR)、套索回歸(Lasso Regression,LR)等眾多的房價預(yù)測模型,對各種模型的優(yōu)缺點進行了說明,指出要根據(jù)實際需要解決的問題選擇合適的模型. 陳世鵬、金升平[6]運用襄陽2012年的房屋貸款數(shù)據(jù),加入房貸的影響因素,創(chuàng)建隨機森林模型進行房價預(yù)測,與ARMA模型(自回歸滑動平均模型)和多元線性回歸模型進行對比,發(fā)現(xiàn)隨機森林模型有很好的預(yù)測效果. 張靖苗[7]以昆明和成都的二手房為研究對象,利用GIS空間分析技術(shù)尋求不同城市的住宅價格空間分布規(guī)律,構(gòu)建地理加權(quán)回歸模型,分析了住宅小區(qū)之間的空間分異現(xiàn)象. 近年來,XGBoost模型在關(guān)于價格預(yù)測問題中得到了廣泛應(yīng)用. 楊貴軍等[8]人利用XGBoost算法對消費者汽車消費偏好作了相關(guān)研究,為產(chǎn)品研發(fā)決策和商品推薦提供了重要參考. 梁佩[9]在傳統(tǒng)特征價格模型的基礎(chǔ)上加入了空間效應(yīng),運用XGBoost模型,以空間因素作為權(quán)重,得到一種標準的XGBoost模型. 龔洪亮[10]利用XGBoost模型對武漢市的二手房價格預(yù)測作出實驗研究,用特征價格理論探究房價的影響因素,但是并未考慮相關(guān)地理因素對房價的影響.
本文利用XGBoost模型對深圳二手房價格進行預(yù)測. 傳統(tǒng)的房價預(yù)測主要考慮住房面積、樓齡、戶型、臥室數(shù)量、地理位置等對房價的影響,很少考慮生活配套、教育配套、交通配套等影響因素. 本文不僅考慮了傳統(tǒng)的影響因素,而且考慮了生活配套、教育配套、交通配套等影響因素,結(jié)合百度地圖進行POI(Point of Interest)處理,利用原始數(shù)據(jù)集中的經(jīng)緯度和百度地圖API,計算以房源為中心,分別以半徑為500 m,1 000 m,2 000 m的地理范圍內(nèi)的地鐵、學(xué)校、醫(yī)院等生活配套設(shè)施的數(shù)量,從而引入了鄰里特征,使得房價預(yù)測結(jié)果更加趨于實際值,提高了預(yù)測的準確性.
多元線性回歸模型常用于兩個及兩個以上的影響因素作為自變量來解釋因變量的變化. 當多種自變量與因變量之間是線性關(guān)系時,所進行的回歸分析就是多元線性回歸. 多元線性回歸模型可表示為
隨機森林模型是一種重要的基于Bagging的經(jīng)典集成學(xué)習方法,可以用于解決分類、回歸等問題. 隨機森林模型有很多優(yōu)點,如極高的準確率、不容易過擬合、可處理高維數(shù)據(jù)以及容易實現(xiàn)程序并行化等.
使用隨機森林進行數(shù)據(jù)預(yù)測的過程如圖1所示. 首先,在原始數(shù)據(jù)集中隨機進行有放回的抽樣,構(gòu)成n個不同的樣本數(shù)據(jù)集. 然后,為每個樣本數(shù)據(jù)集構(gòu)造決策樹,構(gòu)建成n個不同的決策樹模型. 最后,根據(jù)這些決策樹模型的平均值來獲得最終結(jié)果.
圖1 隨機森林預(yù)測過程
圖2 多個弱分類器形成一個強分類器
XGBoost是Boosting算法的一種. 如圖2所示,Boosting算法的思想是將許多弱分類器集成在一起形成一個強大的分類器. 因為XGBoost是一種提升樹模型,所以它是由許許多多的樹模型集成在一起而形成的一個強分類器,所用到的樹模型則是CART回歸樹模型.
XGBoost算法思想是不斷地添加樹,每一次特征的分裂都會增加一棵新樹,且每棵新樹都是用一個新函數(shù)擬合上次預(yù)測的殘差,當訓(xùn)練完成會得到K棵樹. 預(yù)測一個樣本的分數(shù),實際上是根據(jù)這個樣本的特征,每棵樹中會落到其對應(yīng)的一個葉子節(jié)點,每個葉子節(jié)點對應(yīng)一個分數(shù),最后將每棵樹對應(yīng)的分數(shù)加起來就是該樣本的預(yù)測值.
XGBoost的目標函數(shù)由訓(xùn)練損失函數(shù)和正則化項兩部分組成,目標函數(shù)定義如下
原始數(shù)據(jù)集是利用爬蟲程序在鏈家網(wǎng)站上爬取的,是2019年深圳市二手房交易數(shù)據(jù),共1 432條數(shù)據(jù). 對數(shù)據(jù)集進行建模時,首先需要對數(shù)據(jù)進行預(yù)處理和清洗,因為原始數(shù)據(jù)集中總會有一些缺省值和超出現(xiàn)實的異常值,甚至原始數(shù)據(jù)集中帶有單位. 所以,只有將數(shù)據(jù)集進行預(yù)處理和清洗,才能保證數(shù)據(jù)的準確性. 對于缺失值可采用同小區(qū)均值填充,對于異常值則直接刪除,對于有單位的數(shù)據(jù)則直接刪除單位. 此外還對數(shù)據(jù)集進行了啞變量(虛設(shè)變量,通常取值為0或1)操作,即將對象數(shù)據(jù)類型轉(zhuǎn)換為模型可以識別的類型. 圖3為本次原始數(shù)據(jù)集的房價整體立體圖. 從圖3可以看出,不同的地理位置整體房價是不同的,越靠近海邊房價越高. 即便是位于同一個區(qū)域,房價也是不同的. 我們把房源的位置信息稱為區(qū)位特征. 圖4為建筑面積與總房價的散點圖,從圖4可以看出房價與建筑面積總體上呈線性關(guān)系,但建筑面積并非是決定房價的唯一因素,比如同一個小區(qū)內(nèi)亦有高價房和低價房.
本文進一步利用百度地圖的API進行POI處理,計算以房源為中心,分別以半徑為500 m,1 000 m,2 000 m的地理范圍內(nèi)的地鐵、學(xué)校、醫(yī)院等生活配套設(shè)施的數(shù)量,部分結(jié)果如表1所示. 經(jīng)過對比分析發(fā)現(xiàn),周邊地鐵、學(xué)校、醫(yī)院等配套設(shè)施越多,單位房價越高. 我們把房源周圍的地鐵、學(xué)校、醫(yī)院等設(shè)施配套情況稱為鄰里特征.
圖3 深圳二手房房價整體立體圖
圖4 建筑面積與總房價散點圖
表1 經(jīng)過POI處理后的部分數(shù)據(jù)
特征選擇可以將高維空間的樣本通過相關(guān)變換的方式轉(zhuǎn)換到低維空間,達到降維的目的,隨后刪掉冗余和不相關(guān)的特征來進一步降維. 這樣做可以減少過擬合、減少特征數(shù)量(降維)、提高模型泛化能力,而且還可以使模型獲得更好的解釋性,增強對特征和特征值之間的理解,加快模型的訓(xùn)練速度,獲得更好的性能. 本文中特征選取前有樓盤名稱、經(jīng)緯度、成交時間、區(qū)域、調(diào)價、帶看、關(guān)注、瀏覽、房屋戶型、所在樓層等35個特征,這些特征有些與房價相關(guān)性強,有些則弱,需要使用一定方法降低數(shù)據(jù)維度. 圖5為相關(guān)系數(shù)熱力圖,顏色越深表示相關(guān)性越大,從圖5可以看出調(diào)價、帶看、關(guān)注、瀏覽、成交周期、區(qū)域、子區(qū)域、樓盤名稱等這些數(shù)據(jù)維度對房價的影響較小,本文忽略這些特征. 此外,還利用隨機森林中的重要性評價來選擇相應(yīng)的維度. 表2是隨機森林對特征變量進行重要性評估的結(jié)果. 本文排序后選擇中位數(shù)以上的特征變量,忽略中位數(shù)以下的特征變量.
圖5 特征變量與房價的相關(guān)系數(shù)熱力圖
表2 隨機森林中的特征變量重要性評價
綜上分析可以看出,房地產(chǎn)價格的影響因素主要包括建筑特征、鄰里特征和區(qū)位特征. 本文結(jié)合熱力圖、隨機森林中的重要性評價以及上述三大特征變量,最終選取的特征變量如表3所示.
表3 影響二手房價格的特征變量及其含義
本文中的XGBoost流程圖如圖6所示,將清洗好的數(shù)據(jù)進行特征選取、重要性排序和POI處理得到新的數(shù)據(jù)集,使得新數(shù)據(jù)集更加接近現(xiàn)實. 隨后利用網(wǎng)格搜索對部分參數(shù)進行調(diào)節(jié),最終得到的結(jié)果如圖7所示. 從圖7可以看出,在測試集上,雖然有個別樣本波動比較大,但大部分預(yù)測的成交價格與真實的成交價格實際誤差較小,尤其是低房價幾乎重合,反映出該模型具有較好的泛化能力. 這是由于XGBoost對損失函數(shù)進行了二階泰勒展開,一方面增加精度,另一方面也為了能夠自定義損失函數(shù).
圖6 XGBoost流程圖
圖7 XGBoost模型預(yù)測效果圖
本文比較線性回歸模型、隨機森林模型和XGBoost模型對房價預(yù)測的結(jié)果. 統(tǒng)一采用Sklearn包中的train_test_split()函數(shù),該函數(shù)功能是將原始數(shù)據(jù)按照比例切分為訓(xùn)練集和測試集. 如果訓(xùn)練集合過小,可能導(dǎo)致欠擬合,所以我們把數(shù)據(jù)集的80%作為訓(xùn)練集,20%作為測試集.
對于線性回歸模型,本文使用sklearn庫的線性回歸函數(shù)進行調(diào)用訓(xùn)練. 利用梯度下降法獲得誤差最小值,最后使用均方誤差法來評價模型的好壞程度,預(yù)測的結(jié)果如圖8所示. 從圖8可以看出,真實值和預(yù)測值間的差距比較大,只有部分結(jié)果重合,對于較高的房價預(yù)測結(jié)果較為不理想,需要更多的維度和更好的模型來預(yù)測房價. 基于隨機森林的模型計算過程如下:將訓(xùn)練集分成5份,使用網(wǎng)格搜索并進行CV交叉驗證. 隨機森林可以調(diào)節(jié)的參數(shù)比線性回歸模型的參數(shù)要多,本文利用網(wǎng)格搜索,對n_estimators和max_depth做了參數(shù)調(diào)節(jié),并用K折交叉進行驗證. 預(yù)測結(jié)果如圖9所示,從圖9可以看出,預(yù)測結(jié)果比線性回歸模型要好,這是由于多元線性回歸模型是一個單一的模型,而隨機森林是多個決策樹融合的集成模型. 但是,同樣對于部分低房價和高房價的預(yù)測較為不理想,效果要稍微略低于XGBoost模型.
圖8 線性模型預(yù)測效果圖 圖9 隨機森林模型預(yù)測效果圖
XGBoost模型在房價預(yù)測上具有良好的效果,而合適的數(shù)據(jù)集同樣重要. 本文的數(shù)據(jù)集中引入了POI這一特征,而圖10表示的是沒有POI處理的數(shù)據(jù)集在XGBoost模型下的預(yù)測結(jié)果. 圖10顯示,雖然XGBoost模型的預(yù)測準確度是最好的,但沒有經(jīng)過POI處理,準確度也會受到一定的影響. 因此可以得出,POI的數(shù)據(jù)處理,對房價預(yù)測具有積極的作用.
圖10 無POI處理的數(shù)據(jù)集在XGBoost模型下的預(yù)測效果圖
(1)決定系數(shù)(R-Squared,R2)一般用在回歸模型中,用于評估預(yù)測值和實際值的符合程度,其值取值范圍是[0,1],越接近于1說明模型越準確,表示自變量越能解釋因變量的方差變化,值越小則說明效果越差.R2定義如下
(2)平均絕對誤差(Mean Absolute Error,MAE)用于評估預(yù)測結(jié)果和真實值的接近程度,其值越小說明擬合效果越好. MAE定義如下
(3)均方誤差(Mean Squared Error,MSE)是指預(yù)測值與真實值之差的平方的期望值. MSE可以評價數(shù)據(jù)的變化程度,MSE值越小,說明預(yù)測模型描述的數(shù)據(jù)具有更好的精確度. MSE定義如下
(4)均方誤差根(Root Mean Squared Error,RMSE)是MSE的平方根.
本文從測試集中分別計算線性回歸模型、隨機森林模型和XGBoost模型的4種評價指標值,結(jié)果如表4所示. 從表4可以看出,線性回歸模型擬合結(jié)果最差,XGBoost擬合結(jié)果最好. 表5是部分預(yù)測值與真實值的對比.
表4 模型結(jié)果比較
表5 部分房價預(yù)測值與真實值對比
本文構(gòu)建了房價評估的三種機器學(xué)習的模型,并以二手房的價格預(yù)測展開實證研究. 對數(shù)據(jù)的預(yù)處理,特征選擇,POI增加維度,模型建立,網(wǎng)格交叉驗證,使得房價預(yù)測結(jié)果更趨近于真實值. 在保證準確度的情況下,盡可能的對模型進行了優(yōu)化,最終使得XGBoost模型的R2值達到了0.951 25. 在實際中,影響房價的價格并不僅僅只有本文列出的特征,可能還有小區(qū)的停車位、周圍環(huán)境、物業(yè)管理等額外因素,在后續(xù)工作中我們再考慮上述額外因素,進一步提高模型的精度,提高預(yù)測的準確度.