□蔡天潤
黨的十八大之后,我國全面加大對房地產市場的有效調控。特別是提出“房住不炒”概念之后,全國各地房價調控政策不斷提出。保障人民群眾合理住房的需求,保證房地產市場健康有序發展成為了當務之急。構建有效的房價預測模型對金融市場、民情民生有著重要意義。2021 年1 月27 日,杭州樓市發布新政策,加強了對限購、限售、稅收調節等環節的監管,完善無房家庭認定標準以及高層次人才優先購房政策。同年8 月5 日,杭州樓市再發新政策,進一步完善新房銷售和搖號政策。多重因素的作用下,杭州二手房房價整體呈現出明顯變化,研究杭州二手房房價有利于幫助“新杭州人”更好地了解杭州樓市現狀。
本文以爬取杭州鏈家上城區、余杭區、蕭山區等10 個行政區域的二手房源數據為例。鏈家網正式成立于2010 年,其房源包含上海、北京、廣州等42 個城市,在2015年榮獲“傳統企業互聯網+”創新獎,是國內最熱門的房源提供平臺。
本文爬取了29027 條數據,數據所涵蓋的時間跨度從2018 年到2021 年,爬取的部分數據共有46個類別,包含區域位置、緯度、經度、單價、總價、關注度、所在樓層、建筑面積、戶型結構、套內面積、建筑類型等變量。
在爬取數據的過程中,會產生異常值、噪聲、數據丟失等情況,數據清洗能防止出現上述情況,從而提高模型預測效果,是預處理中重要的環節,不可或缺。在本次處理缺失數據中,我們首先刪除空值的行、列。隨后觀察數據特征變量,刪除一些對房價預測明顯無關的信息,如看房時間、鏈家編號、房本備件等。隨后,將暫無數據的數據全部轉為空值,去除建筑面積后帶有的單位,只保留數值部分。最后將區域拆分為區域和子區域,分離所在樓層的樓層數。
如果爬取房價是空值,可以自定義函數,用相同經緯度樓盤的數據做填充。如果房價數據的相關信息缺失,可使用該組數據的眾數做填充。比如,對于配備電梯、房屋年限、戶型結構等列,對其空值采用眾數填充。對于像電梯這樣只有兩個類別的變量,可以通過布爾值將其轉換為0 和1。但是對于房屋朝向等特征,此時可以用one-hot熱編碼將定性變量轉化為數值變量,從而更好適應算法。
在經過數據清洗后,得到一份新的數據。觀察可知,杭州十個行政區域中,濱江、上城、余杭的二手房價最高,房源數量較多且價格浮動較為平穩,而蕭山、臨安等區二手房價較低且數量較少,可見一些老城區二手房源不僅數量較多且價格也偏高。因此,對于年輕人來說,如果手中的現金流不太充足,可以考慮一些蕭山、臨安的二手房。
分析杭州市二手房掛牌時間,可以看出在2018 年之前杭州二手房的掛牌數量十分少,因此我們可以著重分析2020 年和2021 年這兩年二手房樓市之間的變化情況,并進一步分析影響房價的相關因素。
通過進一步觀察,可以發現房屋面積越大,價格大部分也越高,但是部分面積小的房價卻比面積大的房價高。這種情況也可以側面說明,房屋建筑面積不是影響房價的唯一因素。觀察房價與樓層的關系,發現并不是樓層越高,二手房單價就越高,大部分35 層以下的房子還是受人歡迎的,說明樓層與房價單價之間存在一定的關聯。最后分析已有數據,可以觀察到目前市場上3 室2 廳1 廚2 衛的戶型是市面上出售最多的戶型,因此可以合理地猜測房價會受到戶型的影響,并且不同的室、廳、衛分布情況對房價會產生不同的影響。
從已有數據繪制的相關系數熱力圖可以看出,房屋建筑不是影響房價的唯一因素。房屋的建筑面積與房價存在一定相關性,而關注度、燃氣價格、樓層數與房價之間的關系不大,所以這幾個方面的特征可以在構建特征工程時忽略不計。
在構建模型的過程中,需要選擇合適的指標來衡量模型的預測效果。針對回歸問題,常用的度量指標為均方誤差(MSE)。均方誤差反映了實際值和預測值平方和的期望,通常情況下均方誤差越小,那么表明預測模型效果越好,其數學表示式可以記為:

上式中的N 表示樣本總數,i表示每個樣本數據,其中yi 表示第i 個實際值,表示回歸模型的預測第i 個樣本的預測值,通常情況下均方誤差越小,代表模型的預測越好。
同時,可以引入平均絕對誤差(MAPE)作為一個評估模型準確性的另一個指標,該指標綜合考慮了實際值與預測值之間的誤差,也將誤差與真實值之間的比例考慮其中。該指標的取值范圍為[0,+∞),當MAPE 取值為0%代表完美模型,當大于100%時則表示為劣質模型,其公式如下所示:

在此基礎上,為了衡量預測值相對真實值擬合好壞的程度,本文引入了R2,該變量可以衡量線性回歸的擬合程度,線性模型的可以理解為以最小化R2為目標,尋求y和x 之間的最優線性關系,其定義如下所示:

經過數據預處理后還剩下27977 條杭州市二手房房價數據,將數據集隨機劃分為訓練集和測試集,使訓練集占總數據集的70%,測試集占總數據集的30%,為了使模型預測的效果更加穩定,本次模型構建采用了三折交叉驗證,將訓練集分成3 份,2 份作為訓練集,1份作為測試集,求得3 次試驗的平均結果。本文使用python 中sklearn庫中的多元線性回歸算法,它的主要參數包含 fit_intercept、normalize、n_jobs 和copy_X。訓練模型的評價指標具體如表1 所示:

表1 測試結果比較表
觀察多元線性回歸模型的均方誤差和平均絕對誤差,可以看出該模型的預測效果比較一般,而R 平方的值小于0.8,說明該模型的擬合效果也不是非常理想,于是考慮嘗試建立其他回歸模型進行二手房價的預測。
本文調用了python 中sklearn庫中隨機森林算法,用該算法對杭州二手房價進行預測,設置隨機種子random_state=0,這樣可以使每次構建的模型都是不同的,并采用5 折交叉驗證對訓練集和測試集進行驗證。該算法的主要參數包含:n_estimator、max_depth、min_samples_leaf 等。
綜合考慮算法處理時間和后續網格搜索空間,首先要確定隨機森林各參數大致取值范圍。這里以基評估器樹目為例,該參數對隨機森林模型的影響呈正相關性,當該參數取值越大,模型的預測效果也越好,當n_estimator 的取值上升到一定情況時,模型的預測效果便不會存在顯著提升。這里設置n_estimators 取值范圍為100 到4000,步長為 1000,繪 制n_estimators 和R 方之間的關系圖(圖1)。

圖1 n_estimators 和R 方關系圖
從圖中可以看出,隨著n_estimators 的增大,R 方的值也越大,說明模型的擬合效果也越好,因為在n_estimators 在取值為1100時,R 方的數值并沒有明顯的改進,考慮計算性能,可以將n_estimators 取值設為1100。隨 后繪制min_samples_leaf 和R 方的學習曲線圖(圖2)。

圖2 min_samples_leaf 和R 方學習曲線圖
從圖中可以發現,隨著min_samples_leaf 數值的增大,模型的擬合效果越來越差,說明在為調整min_samples_leaf 后,模型的預測效果反而變差。因此,這里的min_samples_leaf 設置為默認值。同時,畫出最小樣本分枝數時的情況跟上圖相類似,所以最小樣本分數值也取默認值。
最后,進行網格搜索,將n_estimators 設為1100,最大深度設為15、20、25,分支的最大特征數設為auto,得到以下結果(表2):

表2 測試結果比較表
可以看出,相比對多元線性回歸,隨機森林模型的預測效果有了進一步提升,在訓練集上的R 方達到0.97,但是測試集上缺只有0.799,說明該模型存在一定的過擬合現象,但是相對于多元線性回歸模型,隨機森林回歸模型整體表現較好。
XGBoost 實質上是一種基于梯度提升樹的集成學習算法,因此具有和樹相同的性質。它包含以下重要參數:n_estimators 代表弱評估器,若該值越大,說明模型的學習能力也就越強;subsample 的取值范圍為 (0,1],表示隨機抽樣的比例;學習率用learning_rate 來表示,可以控制模型的迭代速度;gamma代表復雜度懲罰項;max_depth 代表樹的最大深度,可以控制模型的復雜度。
隨后,根據num_round 和R方、eta 和R 方的學習曲線,可以選 擇 num_round 的值為 1500,subsample 的值為0.9,隨后用xgb自帶的網格搜索進行調參,繪制對比圖可以發現,相比于初始默認參數來說,經過調參后的模型泛化能力變強。同時,模型在訓練集上調整后的均方誤差也變小了,這表明XGBoost 模型的預測效果還是相對理想,最后得到的訓練結果如表3所示:

表3 測試結果比較表
分別使用隨機森林、XGBoost、多元線性回歸三個回歸模型對杭州二手房房價進行預測,假設現在某購房者想購入一套二手房,該二手房具體信息如下:120 平方米,中層(16),3 室1 廳1 廚1 衛,朝東南,濱江區,平層,精裝,有電梯,普通住宅,未滿兩年。使用三種不同的預測模型對該二手房進行房價預測,并將結果與實際值進行比較,比較結果如表4 所示:

表4 杭州二手房房價預測表
從該測試結果可以看出,使用隨機森林和XGBoost 訓練出的模型可以較好地預測房價,而多元線性回歸預測的結果不盡如人意,這可能是特征工程構建不當所導致。
本次通過對杭州鏈家官網的數據進行爬取、預處理、構建特征工程等一系列操作,運用數據挖掘技術對已有的數據進行探索,初步了解了整個杭州二手房房價總體分布情況。根據已有的數據集劃分測試集和訓練集,運用已有的機器學習算法構建相應的房價預測模型,優化算法對超參數進行相應的優化,得到最優結果。
但是本次實驗也有很多不足,如選取特征工程時候沒有考慮到一些國家政策的因素,即缺少了一些文本信息,這在以后的實驗中需要進一步改進。同時,本次訓練得到的模型具有一定的局限性,不能準確預測中國各省市二手房價,這一點也要在未來仔細考量。本文理論方面創新不夠,僅僅通過現在的機器學習模型進行預測,調優超參數方面也使用較為簡單的網格搜索算法,后續可以考慮引入Stacking 組合模型等。