張志鋒 崔亞東 崔霄
摘要:為了更精確快速的預測二手房房價,將對最近抓取的南京二手房數據集進行數據樣本分析。通過對樣本的基本信息和屬性的可視化分析,對數據集進行異常識別填補、啞編碼、數據標準化等數據預處理工作;提出將使用XGBoost算法對南京二手房數據集進行訓練建模;結合線性回歸,嶺回歸和lasso回歸,對訓練結果進行比較,XGBoost模型應用效果比較好,在預測房價上具有一定的實用性。
關鍵詞:XGBoost;嶺回歸;lasso回歸;二手房
中圖分類號:F832.4;TP181 文獻標識碼:A 文章編號:1007-9416(2019)11-0178-03
0 引言
房地產市場的發展快速,尤其是最近幾年,多數家庭都會選擇購買房屋。由于購房為消費者的剛性需求,而二手房的性價比較高,所以在市場上的交易量也較大,二手房房價的精準快速預測有著重要意義。
XGBoost是陳天奇在arixv上發布的一篇關于XGBoost的論文,而根據kaggle競賽在2015年的統計,29只冠軍隊中,有17只使用了XGBoost算法,其中有8只隊伍僅使用了XGBoost一種算法。XGBoost的基分類器為CART回歸樹,建了高可擴展的端到端的boosting系統,提出了具有合理理論支撐的分布分位調整框架;介紹了并行使用稀疏處理樹的學習算法;提出了基于緩存塊的結構便于外存樹的學習。
1 數據集分析
在對進本信息進行可視化[1]之前,可以先通過pandas庫中的數據描述函數對數據有個整體的認知。還可以通過對數據進行詞云化整理,通過二手房信息中經常出現的高頻詞,確定需要可視化的特征屬性,從而不需要對所有的特征進行可視化。
對數據進行總體可視化,分析數據規律。
(1)通過圖1比較中文數據詞云[2]和特征值,對比特征出現頻率和特征間對應關系,并且決定接下來如何對數據進行異常值處理[3]等。(2)通過圖2二手房數量條形圖比較二手房分布信息。(3)通過圖3建筑面積直方圖分析房屋在不同面積分布區域的數量信息。(4)通過圖4房屋戶型條形圖分析不同類型房屋所占比例,便于后續的選擇戶型進行啞編碼處理。(5)通過圖5二手房總價與建筑面積分布散點圖分析異常值,對異常值進行處理。
2 南京二手房房價預測模型
2.1 XGBoost模型原理分析
給出n個實例,m維特征的情況下,D={(xi,yi)}(|D|=n, xi∈m,yi∈),回歸樹的繼承模型(多個模型相加的過程)使用k個相加函數預測結果。
為了避免出現過擬合的現象,需要給模型增加正則項來修正模型。一種標準的正則化目標項為損失函數與正則項組合。這里主要使用L2正則。
根據boosting算法思想,回歸樹的集成模型不能再傳統的歐幾里得空間中得到合適的解,而應該通過迭代求近似解[4]。
2.2 數據預處理
在對二手房數據集建模時,首先需要對數據集進行清理,將數據集中一些缺失值和異常數據剔除掉,保證數據的準確性;查看數據集會發現,數據集中會有一些特征項需要進行啞編碼操作,將對象類型(Object)的數據轉化為模型可以識別的語言,比如在本數據集中需要處理的對象類型特征包括二手房所在區域,戶型,樓層等信息,還有一些例如建筑面積等特征需要轉換為單精度類型(float)等。
2.3 超參數優化
XGBoost算法十分的精致,可以處理各種不規則的數據,而使用XGBoost構造模型過程中,提高模型的表現并不是那么容易,而對于提高模型表現來說,參數的調整十分必要。本文中,主要通過網格交叉驗證的方式,來對參數進行調整,主要調整的參數有learning_rate,max_depth,n_estimators。每個參數給出一定范圍的值,共進行192次的篩選,最終得到了最佳參數:Best: 0.796658 using {‘learning_rate:0.1,‘max_depth:6,‘n_estimators:200}。
2.4 特征選擇
關于特征選擇有很多算法可以運用。這里使用基于模型的特征排序算法,對于此次建模來說,也是比較高效的一種,在模型建立過程中對特征進行篩選排序,在不影響預測準確度的情況下,抽取最少的特征出來。這里共抽取了36維的特征,即保證了預測準確度,又最大限度的減少了訓練模型時間。
2.5 模型訓練
這里按照訓練集與測試集8:2的比例對數據集進行隨機抽樣,通過超參數優化以及特征選擇之后,在訓練集上對模型進行訓練,最后得到模型的訓練R2(R-Square)為:0.796558。
模型訓練結果可以看出,對模型在訓練集上的表現還不錯,例如在相對正常的數據集里預測效果很好,在一些異常值上,并沒有完美的重合,可以看出模型并沒有過擬合,有相當穩定的魯棒性。
2.6 評價指標
本文是通過XGBoost算法在南京二手房數據集訓練模型,主要是為了準確預測二手房房屋總價,所以評價標準即為預測的準確度。本模型的評價指標為在測試集中計算模型的R2,以最終的分數作為該模型的評價指標。計算公式如下:
R2=1-
3 不同算法實例比較
本文對南京二手房數據集使用了線性回歸、嶺回歸與lasso回歸,并與XGBoost算法進行了對比。
(1)多變量線性回歸模型見圖6;(2)lasso回歸模型見圖7;(3)ridge回歸模型圖見圖8;(4)XGBoost集成算法模型見圖9。
從圖6到圖9中可以看出,在對數據集的測試中,線性回歸表現出了明顯的欠擬合,嶺回歸和lasso回歸表現良好,但在測試集上效果都不如XGBoost算法。
4 結語
本文提出了基于XGBoost集成算法的二手房房價預測模型,并通過對數據進行預處理,特征選擇,基分類器選擇,網格交叉驗證,超參數優化構建出了集成模型,通過對數據集的隨機抽樣分割為訓練集和測試集,并在測試集上對模型進行評估,R2值達到0.796558,在保證準確度的情況下,盡可能的對模型進行了優化。
參考文獻
[1] 劉彧祺,張智斌,陳昊昱,等.基于XGBoost集成的可解釋信用評分模型[J].數據通信,2019(03):27-32.
[2] 錢仲文,陳浩,紀德良.一種基于XGBoost算法的月度負荷預測方法[J].浙江電力,2019,38(05):77-82.
[3] 陳欣,于俊洋,趙媛媛.基于CNN和B-LSTM的文本處理模型研究[J].輕工學報,2018,33(05):103-108.
[4] 朱顥東,薛校博,李紅嬋,孟潁輝.海量數據下基于Hadoop的分布式FP-Growth算法[J].輕工學報,2018,33(05):97-102+108.