王冬雪,郭秀娟
(吉林建筑大學(xué)電氣與計算機學(xué)院,吉林 長春 130118)
近年來,人們對房價的關(guān)注一直居高不下。由于城市化的加劇,對房屋租賃和購房的需求也持續(xù)增加,而房價問題不僅關(guān)系到人民生活水平,更是與國民經(jīng)濟發(fā)展息息相關(guān)。因此,對房價進行預(yù)測不僅對人們買賣房屋具有參考意義,而且對于政府進行房價調(diào)控也有積極作用[1]。因而確定一種可以精準(zhǔn)反映房價走勢的算法具有重要意義。
本文通過使用XGBoost算法來預(yù)測房價。通過對數(shù)據(jù)分析、預(yù)處理及基于XGBoost模型來構(gòu)建房價預(yù)測模型。影響房價的因素多且復(fù)雜,如房屋面積、房屋地理位置、房屋戶型等,本文僅選取對于房價影響較大的79個特征對房價預(yù)測模型進行評估,并選擇RMSLE算法作為預(yù)測房價的評估算法。
在實際情況下,由于環(huán)境復(fù)雜等因素,我們獲取的數(shù)據(jù)往往是存在缺失和異常的,因此,在建模前要對數(shù)據(jù)進行預(yù)處理。
該數(shù)據(jù)采集來源于Kaggle 2016年競賽項目,分為訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。其中訓(xùn)練數(shù)據(jù)中有1 460個樣本,每個樣本中含有80個特征,測試數(shù)據(jù)中包含1 459個樣本,每個樣本中有79個特征。
對于數(shù)據(jù)的缺失問題,要考慮2個重要因素:缺失數(shù)據(jù)的情況是否普遍,丟失的數(shù)據(jù)是規(guī)律的還是隨機的。數(shù)據(jù)的缺失可能意味著樣本量的減少,這可能對我們接下來的分析和建模產(chǎn)生阻礙。因此,對缺失值的處理是必需的。對于不同的數(shù)據(jù)缺失機制,處理的方法也是不同的,常用方法分為數(shù)據(jù)填充和刪除樣本兩大類[2]。對缺失值的統(tǒng)計如圖1所示。本文所使用的數(shù)據(jù)缺失值不能確定是否是隨機的,例如缺失比例最高的游泳池質(zhì)量,可能是由于很多房子里并沒有游泳池。因此根據(jù)缺失值的統(tǒng)計結(jié)果,本文通過刪除缺失比例較高的變量及帶有缺失值的樣本對缺失值進行處理。
圖1 缺失數(shù)據(jù)統(tǒng)計圖
本文所使用的數(shù)據(jù)集雖然給出了80個自變量,但是有些因素對房價的影響非常小,如果不進行篩選可能會影響結(jié)果的準(zhǔn)確性[3]。因此,進一步篩選后,得出對房價最具影響的特征依次為:整體質(zhì)量(整體材料和裝修)、居住面積(地面以上)、車庫容量、車庫面積、地下室總面積、一樓面積、高檔全浴室、客房總數(shù)(不含浴室)、建成年份。其相關(guān)矩陣熱力圖如圖2所示。
圖2 相關(guān)矩陣熱力圖
如圖3所示,房屋的價格已經(jīng)偏離了正態(tài)分布。因此,對于非正態(tài)分布,本文采用Box-Cox變換,使數(shù)據(jù)變得更“正?!薄?/p>
圖3 原始數(shù)據(jù)分布
Box-Cox變換的一般形式為:
式中y(λ)為經(jīng)Box-Cox變換后的響應(yīng)變量,y為原始連續(xù)因變量,λ為變換參數(shù)。以上變換要求原始變量取值為正[4]。圖4為經(jīng)Box-Cox變換后分布。
圖4 變換后數(shù)據(jù)分布
XGBoost又稱極端梯度上升,它是大規(guī)模并行Boosted Tree,是Gradient Boosting Machine的擴展,在相同的環(huán)境和條件下,XGBoost比同類算法快10倍以上[5]。XGBoost還可以通過分布式運算,進一步提高訓(xùn)練速度[6]。
XGBoost是由k個基模型組成的加法運算式:
其中ft為k個基模型,為第i個樣本的預(yù)測值。
其中n為樣本數(shù)量。
模型的偏差和方差共同決定了該模型的預(yù)測精度,模型的偏差具體表現(xiàn)為損失函數(shù),模型越簡單則其方差越小,所以目標(biāo)函數(shù)由模型的損失函數(shù)loss與抑制模型復(fù)雜度的正則項Ω組成,所以目標(biāo)函數(shù)可表示為:
其中Ω為模型的正則項。
以第t步的模型為例,模型對第i個樣本xi的預(yù)測為:
而根據(jù)泰勒公式,可以把上述目標(biāo)函數(shù)寫為:
其中g(shù)i為損失函數(shù)的一階導(dǎo),hi為損失函數(shù)的二階導(dǎo)。
將決策樹定義為ft(x)=wq(x),x為某一樣本,q(x)代表該樣本所在的葉子結(jié)點,而wq則代表葉子結(jié)點取值w,所以wq(x)代表每個樣本的取值w(即預(yù)測值),則目標(biāo)函數(shù)的正則項可以定義為[7]:
其中λ和γ是XGBoost定義的,其值可設(shè)定,值越大,表示越希望獲得結(jié)構(gòu)簡單的樹,T為葉子數(shù)。
而其中葉子結(jié)點j對應(yīng)的權(quán)值可表示為:
所以目標(biāo)函數(shù)可簡化為:
記IL,IR分別是數(shù)據(jù)集的左右結(jié)點,其中I=IL∪IR,則分裂后增益為:
XGBoost在構(gòu)建樹的節(jié)點時,為每個節(jié)點添加了一個缺省方向,當(dāng)樣本缺失對應(yīng)特征時,就會被歸類到缺省方向上。如果樣本存在特征缺失的情況,則只需分配到左右節(jié)點而無需遍歷,故算法所需遍歷的樣本量大大減少。稀疏感知算法比basic算法速度快了超過50倍[9-10]。
本文采用均方根對數(shù)誤差(RMSLE)來作為模型評價的標(biāo)準(zhǔn)。其公式如下:
對訓(xùn)練集訓(xùn)練100次后的RMSLE為0.041 646 875 398 8,如圖5所示。XGBoost能更好地適應(yīng)不平衡的數(shù)據(jù)集,同時也更不容易過擬合,泛化能力較好,應(yīng)用范圍廣泛,因此該模型基本可以實現(xiàn)對房價的精準(zhǔn)預(yù)測。對于該預(yù)測模型,可應(yīng)用到以下場景。
圖5 預(yù)測結(jié)果圖
1)鏈家、安居客等二手房的交易。該模型更加有利于買賣雙方看清房價接下來的走勢,及時把握住期望成交價格。
2)房產(chǎn)投資的應(yīng)用。近年來,從《新中產(chǎn)白皮書》中可以看到,新中產(chǎn)人群,除去自住房,投資性房地產(chǎn)占比是最多的。因此,該模型對于投資者有一定的指導(dǎo)性作用。
房價預(yù)測問題本質(zhì)上來說就是典型的回歸問題。本文基于XGBoost算法進行房價預(yù)測,首先對數(shù)據(jù)進行缺失值處理、相關(guān)分析及標(biāo)準(zhǔn)化處理等一系列預(yù)處理,然后使用XGBoost算法對數(shù)據(jù)集進行建模和訓(xùn)練,最終實現(xiàn)對房價的精準(zhǔn)預(yù)測。