摘要:本文關注房價的影響因素,從79個影響特征中選擇重要的特征,并且使用特征處理方案來得到更優(yōu)特征,用以訓練多個回歸模型,包括Lasso回歸模型,以及XGBoost回歸模型,最終使用Stacking模型融合方案來預測房價。在測試數(shù)據(jù)集中的表現(xiàn)模型融合優(yōu)于單模型結果,所以最終使用模型融合方案來對房價做預測。通過此次房價預測,旨在發(fā)現(xiàn)房屋價格的影響因素以及得到房屋預測模型用以將來遷移學習其他地域的房屋價格預測。
關鍵詞:模型融合;線性回歸;房價預測;建模分析
中圖分類號:F299.23?文獻識別碼:A?文章編號:2096-3157(2020)19-0120-03
一、研究背景
隨著大數(shù)據(jù)時代的到來,具備大數(shù)據(jù)思想至關重要,人工智能技術在各行各業(yè)的應用已是隨處可見。在生產(chǎn)制造業(yè),人工智能技術可以極大地提高生產(chǎn)效率,節(jié)省勞動成本,提升產(chǎn)品質(zhì)量;在服務業(yè),可以優(yōu)化行業(yè)現(xiàn)有產(chǎn)品和服務,提升其質(zhì)量和勞動生產(chǎn)率;金融、醫(yī)療等領域,也因人工智能技術的加入而愈發(fā)繁榮,人們的生活也因為其更加便利。
房屋作為每個公民的必需品,在生活中的地位非常重要,買房已成為人們談論較多的話題,如何在合適的時間買房賣房也成為了人們關注焦點,因此在這樣的背景下,產(chǎn)生了本次的房價預測相關問題。目前在房價預測領域主要體現(xiàn)在兩個問題上:一是選擇合適的數(shù)學模型來預測房價走向,用以評估房價的變化;二是尋找引起房價變化的原因,國家可借此來幫助市場協(xié)調(diào)房價變化,公民可以根據(jù)時事來判斷入手時機。本文主要分析第一個問題,即選擇合適的數(shù)學模型來幫助預測房價。
本文將從波士頓的房價數(shù)據(jù)為著手點,以該市的房屋的相關屬性來作為特征,篩選重要信息,并且將一些信息做適當處理,最終用以預測該市的其他房屋價格。
二、研究方法
1.線性回歸算法簡介
(1)算法思想
在統(tǒng)計學中,線性回歸[2](Linear Regression)是利用稱為線性回歸方程的最小平方函數(shù)對一個或多個自變量和因變量之間關系進行建模的一種回歸分析[3][4]。這種函數(shù)是一個或多個稱為回歸系數(shù)的模型參數(shù)的線性組合。一元線性回歸,即只含有一個自變量的線性回歸模型。
(2)模型求解(梯度下降法)
梯度下降法,即利用沿著梯度下降最快的方向求偏導數(shù),得到損失函數(shù)的全局最小值時的參數(shù)θ,涉及到偏導數(shù)、學習速度、更新、收斂等問題[6][7]。首先對θ賦值,這個值可以是隨機的,也可以是一個零向量;然后改變θ的值,使得J(θ)按梯度下降的方向進行減少; 當J(θ)下降到無法下降時為止,即J(θ)對θ的導數(shù)為0時,比較J(θ)的值是否有變化。
對損失函數(shù)J(θ)求偏導,得到:
更新過程可以理解成:θi沿著梯度下降最快的方向進行遞減的過程。
等式左邊的θi表示更新之前的值,等式右邊表示沿著梯度方向減少的量,α表示步長,也稱作學習速度,這個值需要人工手動設置。
不斷更新θi的值直到J(θ)收斂,可以通過比較J(θ)的前后兩個值是否有發(fā)生變化(繼續(xù)下降),當沒有發(fā)生變化時表示已經(jīng)達到了最小值(可能是局部最小值)。
2.XGBoost算法簡介
(1)算法思想
XGBoost是Boosting[8][9][10]算法的其中一種。Boosting算法的思想是將許多弱分類器集成在一起形成一個強分類器。因為XGBoost是一種提升樹模型,所以它是將許多樹模型集成在一起,形成一個很強的分類器。而所用到的樹模型則是CART回歸樹模型。
該算法思想就是不斷地添加樹,不斷地進行特征分裂來生長一棵樹,每次添加一個樹,其實是學習一個新函數(shù),去擬合上次預測的殘差。當我們訓練完成得到k棵樹,我們要預測一個樣本的分數(shù),其實就是根據(jù)這個樣本的特征,在每棵樹中會落到對應的一個葉子節(jié)點,每個葉子節(jié)點就對應一個分數(shù),最后只需要將每棵樹對應的分數(shù)加起來就是該樣本的預測值。
(2)XGBoost模型介紹
在了解了什么是XGBoost之后,那么如何能夠?qū)W習這個模型呢?答案是,所有監(jiān)督學習模型都是如此:定義目標函數(shù)并對其進行優(yōu)化。首先,定義目標函數(shù)如下:
接下來,在目標函數(shù)基礎上,我們開始考慮每一棵樹的學習過程,由于不能夠用一棵樹完成最終的目標,所以我們需要每一次在上一次的基礎上做目標逼近。我們使用一個加法策略:修復我們學到的東西,并一次添加一個新樹。然后我們有:
由公式可知,每一次更加逼近我們的目標值obj最小。由于一般的模型會采用均方誤差(MSE)來作為損失函數(shù),所以目標函數(shù)又變成了:
更一般的,我們不僅僅采用MSE來作為損失函數(shù),還會考慮將目標函數(shù)做泰勒二階展開,以方便模型優(yōu)化。
3.Stacking 融合模型介紹
Stacking簡單理解就是講幾個簡單的模型,一般采用將它們進行K折交叉驗證[3]輸出預測結果,然后將每個模型輸出的預測結果合并為新的特征,并使用新的模型加以訓練。
三、實驗及結果
1.實驗過程
(1)數(shù)據(jù)預處理
我們采用Python中的Pandas來加載數(shù)據(jù),并做數(shù)據(jù)展示,訓練數(shù)據(jù)展示如表所示。
每一行就是一個房屋,每一列是房屋的屬性或者價格。一共包含有79列的房屋屬性。由于房屋價格在做數(shù)據(jù)描述時,能夠發(fā)現(xiàn)其大致符合高斯分布[5],所以我們加入了房屋價格的平滑處理,我們最終得到訓練集的特征大小為1460×79,其中1460為房屋數(shù)目,79為特征數(shù)目,還有一列對應的房屋價格label的數(shù)據(jù)。與此同時,也有1459×79大小的測試集。
(2)訓練模型
本項目中的模型訓練,共采用三種方案來考慮。第一種方案為線性回歸。將相關特征作為輸入,目的是為擬合一條符合房屋價格分布的曲線。第二種方案為采用XGBoost算法來做回歸預測。第三種方案為采用兩者綜合,使用stacking的集成方案來完成房價預測。
①回歸模型
Lasso回歸為在普通回歸基礎上添加了L1正則化,增大稀疏性的同時也增大了模型的泛化能力。在訓練好該模型后,查看相關模型參數(shù)如圖1所示。
這里分別摘取影響大小為前后10條的模型特征,由圖1可知,比較正相關的特征有GrLiveArea(生活區(qū)面積)。我們也可以嘗試繪制相關性系數(shù)矩陣來得到特征的有效性。我們使用fold為5的交叉驗證方案,損失值為RMSE(均方根誤差)來確定模型的有效性,經(jīng)過訓練后,獲取其RMSE為0.128。說明該結果較好,但仍有一定的提升空間。
②XGBoost
XGBoost作為boosting算法的一種,因為其訓練速度快,泛化性強著稱,在本項目中,使用其回歸模型來做房價預測。由于boost算法是按照決策樹迭代更新的,所以根據(jù)迭代次數(shù)查看訓練和測試的RMSE圖像后,訓練迭代次數(shù)的增長,訓練集的RMSE逐漸減少,但是測試時的RMSE在迭代90次左右后進入拐點,下降速率降低,所以采用迭代次數(shù)為100次左右效果是最好的。
③ Stacking
Stacking集成方案為將數(shù)據(jù)提前拆分為兩部分:第一部分為初始模型訓練,第二部分為二級模型訓練。第一部分將訓練兩個模型:Lasso回歸模型與XGBoost回歸模型。第二部分數(shù)據(jù)將使用這兩個模型做預測,得到的兩個預測結果再做線性擬合,得到二級模型。查看兩個一級模型的相關性如圖2所示。
由圖2可以看出,兩個模型在一定程度上是符合正相關的,所以使用這兩個模型來做線性擬合,是有意義的嘗試。
2.實驗結果
本文一共采用了三種方案來做房屋價格預測,分別是線性回歸、XGboost回歸模型、Stacking集成方案,其中第三種方案為前兩種的方案模型融合。最終結果顯示,第三種方案的平均RMSE為0.113,低于前兩種模型結果,是一個很好的方案。
四、研究結論與建議
綜上所述,本文采用了Lasso線性回歸、XGboost以及兩者的集成融合stacking模型,最終得到多項結果,也證明了我們提出的融合模型效果最佳,也對測試集中的其他房屋做出了預測,得到房屋的預測結果。與此同時,探索了多個特征對房屋預測模型的影響,思考了大數(shù)據(jù)、人工智能在幫助我們解決生活中的問題可能性。這次解決房價預測,也能夠遷移到國內(nèi)的房價預測方案,該模型為將來國內(nèi)城市的房屋預測提供了模型基礎。
通過本次房屋預測模型的建立,能夠得到影響房屋總價值的不僅僅是房屋居住總面積這一個重量級特征,還有街道名稱、裝修完整度等其他影響特征,并且有些看起來不是很重要的特征也能夠影響房價,例如房屋類型、功能等。數(shù)據(jù)幫助我們篩選出重要的特征,排除了一些“想當然”的結果,能夠更好地抓住事情的本質(zhì),這就是大數(shù)據(jù)輔助我們解決生活中的事情的實際例子。
參考文獻:
[1]Tianqi Chen.A Scalable Tree Boosting System[D].CN:ACm,2016.
[2]T Chen,C Guestrin.Regression shrinkage and selection via the lasso[D].united american:princeton university,1996.
[3]李航.統(tǒng)計學習方法[M].北京:清華大學出版社,2012:10.
[4]周志華.機器學習[M].北京:清華大學出版社,2017:53.
[5]Qcon 2017 feature engineering by Gabriel Moreira.
[6]Thomas M Cover,Joy A.Thomas.Elements of Information Theory.2006.
[7]Christopher M.Bishop.Pattern Recognition and Machine Learning.Springer-Verlag.2006.
[8]J H Friedman.Greedy Function Approximation:A Gradient BoostingMachine[EB/OL].https://statweb.stanford.edu/~jhf/ftp/trebst.pdf.
[9]J H Friedman.Stochastic Gradient Boosting[EB/OL].https://statweb.stanford.edu/~jhf/ftp/stobst.pdf.
[10]J H Friedman.Stochastic Gradient Boosting[EB/OL].https://statweb.stanford.edu/~jhf/ftp/stobst.pdf.
作者簡介:
王景行,唐山市第二中學學生。