□蔡天潤
黨的十八大之后,我國全面加大對房地產(chǎn)市場的有效調(diào)控。特別是提出“房住不炒”概念之后,全國各地房價調(diào)控政策不斷提出。保障人民群眾合理住房的需求,保證房地產(chǎn)市場健康有序發(fā)展成為了當(dāng)務(wù)之急。構(gòu)建有效的房價預(yù)測模型對金融市場、民情民生有著重要意義。2021 年1 月27 日,杭州樓市發(fā)布新政策,加強了對限購、限售、稅收調(diào)節(jié)等環(huán)節(jié)的監(jiān)管,完善無房家庭認定標(biāo)準以及高層次人才優(yōu)先購房政策。同年8 月5 日,杭州樓市再發(fā)新政策,進一步完善新房銷售和搖號政策。多重因素的作用下,杭州二手房房價整體呈現(xiàn)出明顯變化,研究杭州二手房房價有利于幫助“新杭州人”更好地了解杭州樓市現(xiàn)狀。
本文以爬取杭州鏈家上城區(qū)、余杭區(qū)、蕭山區(qū)等10 個行政區(qū)域的二手房源數(shù)據(jù)為例。鏈家網(wǎng)正式成立于2010 年,其房源包含上海、北京、廣州等42 個城市,在2015年榮獲“傳統(tǒng)企業(yè)互聯(lián)網(wǎng)+”創(chuàng)新獎,是國內(nèi)最熱門的房源提供平臺。
本文爬取了29027 條數(shù)據(jù),數(shù)據(jù)所涵蓋的時間跨度從2018 年到2021 年,爬取的部分數(shù)據(jù)共有46個類別,包含區(qū)域位置、緯度、經(jīng)度、單價、總價、關(guān)注度、所在樓層、建筑面積、戶型結(jié)構(gòu)、套內(nèi)面積、建筑類型等變量。
在爬取數(shù)據(jù)的過程中,會產(chǎn)生異常值、噪聲、數(shù)據(jù)丟失等情況,數(shù)據(jù)清洗能防止出現(xiàn)上述情況,從而提高模型預(yù)測效果,是預(yù)處理中重要的環(huán)節(jié),不可或缺。在本次處理缺失數(shù)據(jù)中,我們首先刪除空值的行、列。隨后觀察數(shù)據(jù)特征變量,刪除一些對房價預(yù)測明顯無關(guān)的信息,如看房時間、鏈家編號、房本備件等。隨后,將暫無數(shù)據(jù)的數(shù)據(jù)全部轉(zhuǎn)為空值,去除建筑面積后帶有的單位,只保留數(shù)值部分。最后將區(qū)域拆分為區(qū)域和子區(qū)域,分離所在樓層的樓層數(shù)。
如果爬取房價是空值,可以自定義函數(shù),用相同經(jīng)緯度樓盤的數(shù)據(jù)做填充。如果房價數(shù)據(jù)的相關(guān)信息缺失,可使用該組數(shù)據(jù)的眾數(shù)做填充。比如,對于配備電梯、房屋年限、戶型結(jié)構(gòu)等列,對其空值采用眾數(shù)填充。對于像電梯這樣只有兩個類別的變量,可以通過布爾值將其轉(zhuǎn)換為0 和1。但是對于房屋朝向等特征,此時可以用one-hot熱編碼將定性變量轉(zhuǎn)化為數(shù)值變量,從而更好適應(yīng)算法。
在經(jīng)過數(shù)據(jù)清洗后,得到一份新的數(shù)據(jù)。觀察可知,杭州十個行政區(qū)域中,濱江、上城、余杭的二手房價最高,房源數(shù)量較多且價格浮動較為平穩(wěn),而蕭山、臨安等區(qū)二手房價較低且數(shù)量較少,可見一些老城區(qū)二手房源不僅數(shù)量較多且價格也偏高。因此,對于年輕人來說,如果手中的現(xiàn)金流不太充足,可以考慮一些蕭山、臨安的二手房。
分析杭州市二手房掛牌時間,可以看出在2018 年之前杭州二手房的掛牌數(shù)量十分少,因此我們可以著重分析2020 年和2021 年這兩年二手房樓市之間的變化情況,并進一步分析影響房價的相關(guān)因素。
通過進一步觀察,可以發(fā)現(xiàn)房屋面積越大,價格大部分也越高,但是部分面積小的房價卻比面積大的房價高。這種情況也可以側(cè)面說明,房屋建筑面積不是影響房價的唯一因素。觀察房價與樓層的關(guān)系,發(fā)現(xiàn)并不是樓層越高,二手房單價就越高,大部分35 層以下的房子還是受人歡迎的,說明樓層與房價單價之間存在一定的關(guān)聯(lián)。最后分析已有數(shù)據(jù),可以觀察到目前市場上3 室2 廳1 廚2 衛(wèi)的戶型是市面上出售最多的戶型,因此可以合理地猜測房價會受到戶型的影響,并且不同的室、廳、衛(wèi)分布情況對房價會產(chǎn)生不同的影響。
從已有數(shù)據(jù)繪制的相關(guān)系數(shù)熱力圖可以看出,房屋建筑不是影響房價的唯一因素。房屋的建筑面積與房價存在一定相關(guān)性,而關(guān)注度、燃氣價格、樓層數(shù)與房價之間的關(guān)系不大,所以這幾個方面的特征可以在構(gòu)建特征工程時忽略不計。
在構(gòu)建模型的過程中,需要選擇合適的指標(biāo)來衡量模型的預(yù)測效果。針對回歸問題,常用的度量指標(biāo)為均方誤差(MSE)。均方誤差反映了實際值和預(yù)測值平方和的期望,通常情況下均方誤差越小,那么表明預(yù)測模型效果越好,其數(shù)學(xué)表示式可以記為:
上式中的N 表示樣本總數(shù),i表示每個樣本數(shù)據(jù),其中yi 表示第i 個實際值,表示回歸模型的預(yù)測第i 個樣本的預(yù)測值,通常情況下均方誤差越小,代表模型的預(yù)測越好。
同時,可以引入平均絕對誤差(MAPE)作為一個評估模型準確性的另一個指標(biāo),該指標(biāo)綜合考慮了實際值與預(yù)測值之間的誤差,也將誤差與真實值之間的比例考慮其中。該指標(biāo)的取值范圍為[0,+∞),當(dāng)MAPE 取值為0%代表完美模型,當(dāng)大于100%時則表示為劣質(zhì)模型,其公式如下所示:
在此基礎(chǔ)上,為了衡量預(yù)測值相對真實值擬合好壞的程度,本文引入了R2,該變量可以衡量線性回歸的擬合程度,線性模型的可以理解為以最小化R2為目標(biāo),尋求y和x 之間的最優(yōu)線性關(guān)系,其定義如下所示:
經(jīng)過數(shù)據(jù)預(yù)處理后還剩下27977 條杭州市二手房房價數(shù)據(jù),將數(shù)據(jù)集隨機劃分為訓(xùn)練集和測試集,使訓(xùn)練集占總數(shù)據(jù)集的70%,測試集占總數(shù)據(jù)集的30%,為了使模型預(yù)測的效果更加穩(wěn)定,本次模型構(gòu)建采用了三折交叉驗證,將訓(xùn)練集分成3 份,2 份作為訓(xùn)練集,1份作為測試集,求得3 次試驗的平均結(jié)果。本文使用python 中sklearn庫中的多元線性回歸算法,它的主要參數(shù)包含 fit_intercept、normalize、n_jobs 和copy_X。訓(xùn)練模型的評價指標(biāo)具體如表1 所示:
表1 測試結(jié)果比較表
觀察多元線性回歸模型的均方誤差和平均絕對誤差,可以看出該模型的預(yù)測效果比較一般,而R 平方的值小于0.8,說明該模型的擬合效果也不是非常理想,于是考慮嘗試建立其他回歸模型進行二手房價的預(yù)測。
本文調(diào)用了python 中sklearn庫中隨機森林算法,用該算法對杭州二手房價進行預(yù)測,設(shè)置隨機種子random_state=0,這樣可以使每次構(gòu)建的模型都是不同的,并采用5 折交叉驗證對訓(xùn)練集和測試集進行驗證。該算法的主要參數(shù)包含:n_estimator、max_depth、min_samples_leaf 等。
綜合考慮算法處理時間和后續(xù)網(wǎng)格搜索空間,首先要確定隨機森林各參數(shù)大致取值范圍。這里以基評估器樹目為例,該參數(shù)對隨機森林模型的影響呈正相關(guān)性,當(dāng)該參數(shù)取值越大,模型的預(yù)測效果也越好,當(dāng)n_estimator 的取值上升到一定情況時,模型的預(yù)測效果便不會存在顯著提升。這里設(shè)置n_estimators 取值范圍為100 到4000,步長為 1000,繪 制n_estimators 和R 方之間的關(guān)系圖(圖1)。
圖1 n_estimators 和R 方關(guān)系圖
從圖中可以看出,隨著n_estimators 的增大,R 方的值也越大,說明模型的擬合效果也越好,因為在n_estimators 在取值為1100時,R 方的數(shù)值并沒有明顯的改進,考慮計算性能,可以將n_estimators 取值設(shè)為1100。隨 后繪制min_samples_leaf 和R 方的學(xué)習(xí)曲線圖(圖2)。
圖2 min_samples_leaf 和R 方學(xué)習(xí)曲線圖
從圖中可以發(fā)現(xiàn),隨著min_samples_leaf 數(shù)值的增大,模型的擬合效果越來越差,說明在為調(diào)整min_samples_leaf 后,模型的預(yù)測效果反而變差。因此,這里的min_samples_leaf 設(shè)置為默認值。同時,畫出最小樣本分枝數(shù)時的情況跟上圖相類似,所以最小樣本分數(shù)值也取默認值。
最后,進行網(wǎng)格搜索,將n_estimators 設(shè)為1100,最大深度設(shè)為15、20、25,分支的最大特征數(shù)設(shè)為auto,得到以下結(jié)果(表2):
表2 測試結(jié)果比較表
可以看出,相比對多元線性回歸,隨機森林模型的預(yù)測效果有了進一步提升,在訓(xùn)練集上的R 方達到0.97,但是測試集上缺只有0.799,說明該模型存在一定的過擬合現(xiàn)象,但是相對于多元線性回歸模型,隨機森林回歸模型整體表現(xiàn)較好。
XGBoost 實質(zhì)上是一種基于梯度提升樹的集成學(xué)習(xí)算法,因此具有和樹相同的性質(zhì)。它包含以下重要參數(shù):n_estimators 代表弱評估器,若該值越大,說明模型的學(xué)習(xí)能力也就越強;subsample 的取值范圍為 (0,1],表示隨機抽樣的比例;學(xué)習(xí)率用learning_rate 來表示,可以控制模型的迭代速度;gamma代表復(fù)雜度懲罰項;max_depth 代表樹的最大深度,可以控制模型的復(fù)雜度。
隨后,根據(jù)num_round 和R方、eta 和R 方的學(xué)習(xí)曲線,可以選 擇 num_round 的值為 1500,subsample 的值為0.9,隨后用xgb自帶的網(wǎng)格搜索進行調(diào)參,繪制對比圖可以發(fā)現(xiàn),相比于初始默認參數(shù)來說,經(jīng)過調(diào)參后的模型泛化能力變強。同時,模型在訓(xùn)練集上調(diào)整后的均方誤差也變小了,這表明XGBoost 模型的預(yù)測效果還是相對理想,最后得到的訓(xùn)練結(jié)果如表3所示:
表3 測試結(jié)果比較表
分別使用隨機森林、XGBoost、多元線性回歸三個回歸模型對杭州二手房房價進行預(yù)測,假設(shè)現(xiàn)在某購房者想購入一套二手房,該二手房具體信息如下:120 平方米,中層(16),3 室1 廳1 廚1 衛(wèi),朝東南,濱江區(qū),平層,精裝,有電梯,普通住宅,未滿兩年。使用三種不同的預(yù)測模型對該二手房進行房價預(yù)測,并將結(jié)果與實際值進行比較,比較結(jié)果如表4 所示:
表4 杭州二手房房價預(yù)測表
從該測試結(jié)果可以看出,使用隨機森林和XGBoost 訓(xùn)練出的模型可以較好地預(yù)測房價,而多元線性回歸預(yù)測的結(jié)果不盡如人意,這可能是特征工程構(gòu)建不當(dāng)所導(dǎo)致。
本次通過對杭州鏈家官網(wǎng)的數(shù)據(jù)進行爬取、預(yù)處理、構(gòu)建特征工程等一系列操作,運用數(shù)據(jù)挖掘技術(shù)對已有的數(shù)據(jù)進行探索,初步了解了整個杭州二手房房價總體分布情況。根據(jù)已有的數(shù)據(jù)集劃分測試集和訓(xùn)練集,運用已有的機器學(xué)習(xí)算法構(gòu)建相應(yīng)的房價預(yù)測模型,優(yōu)化算法對超參數(shù)進行相應(yīng)的優(yōu)化,得到最優(yōu)結(jié)果。
但是本次實驗也有很多不足,如選取特征工程時候沒有考慮到一些國家政策的因素,即缺少了一些文本信息,這在以后的實驗中需要進一步改進。同時,本次訓(xùn)練得到的模型具有一定的局限性,不能準確預(yù)測中國各省市二手房價,這一點也要在未來仔細考量。本文理論方面創(chuàng)新不夠,僅僅通過現(xiàn)在的機器學(xué)習(xí)模型進行預(yù)測,調(diào)優(yōu)超參數(shù)方面也使用較為簡單的網(wǎng)格搜索算法,后續(xù)可以考慮引入Stacking 組合模型等。