歡迎光臨
每天分享高質量文章

推薦 :使用機器學習預測房價(附鏈接)

作者:Oluwole Alowolodu;翻譯:李潤嘉;校對:吳金笛

本文約3400字,建議閱讀10分鐘。

本文使用監督式機器學習技術來預測美國愛荷華州艾姆斯市(Ames, Iowa)的房價。

介紹

該專案旨在使用監督式機器學習技術來預測美國愛荷華州艾姆斯市(Ames, Iowa)的房價。Ames的房屋資料集來自Kaggle,這是谷歌旗下的一個在線平臺,它為資料科學家和機器學習科學家提供合作和競爭的機會。Kaggle以提供不同的資料和競賽為特色,其中便包括由Dean De Cock編輯的Ames房屋資料集。

該資料集包含具有81個特征的測試集和訓練集。其中,訓練檔案包括1460條觀測值,測試檔案包含1459個觀測值。

資料清洗

建模的第一步便是資料探索和資料清洗,旨在理解資料集中的每個特征和樣式。將訓練集和測試集合併到一起進行統一的資料工程,並對缺失值進行探索。以下是一張熱力圖,可從中看出資料中的缺失值所處的位置。

熱圖為特征缺失,尤其是包含大量缺失值的列提供了線索。通過對組合資料集的進一步分析,提取出每個特征所含缺失值的具體數量。可知共有34列含有缺失值,其中PoolQC,LotFrontage,FireplaceQual,Fence,Alley和MiscFeatures列的缺失值最多。以下是一個條形圖,顯示了缺失值的分佈情況。

不同的含有缺失變數的特征有不同的估算方式。在估算之前需要考慮以下因素:該特征是分型別特征還是數值型特征,缺失值是隨機完全缺失、隨機缺失還是非隨機缺失。

對於含有隨機缺失值的數值型特征,比如 ‘LotFrontage’ ,將使用位於同一區域的房屋的中位數來進行估算。其他含有缺失值的數值型特征大多根據一定的規則進行填充,大部分情況下使用0來填充。對於分型別特征,其中一些似乎含有缺失值,但是空值(NA)實際上意味著這個變數或房子顯然缺少這樣的特征,例如,’PoolQC’ 中的空值意味著該變數沒有 ‘Pool’ 這個屬性,它應當歸為 ‘No_pool’ 。類似的方法可適用於大多數特征。

刪除異常值——缺失值估算的下一步是對資料集進行探索,找出可能的異常值。可通過在散點圖上可視化每列來完成。 

‘AboveGroundLivingArea’,BasementSquareFootage’ 

和 ‘LotFrontage’ 特征具有明顯的異常值,這些變數應當從資料集中刪除

特征工程

在進行特征工程之前,需要對特征進行相關性分析,以便更深入地瞭解它們的方差、自變數特征之間的相關關係和自變數特征與因變數特征—— SalePrice之間的相關關係。

從熱力圖中可觀察到 ‘GarageCars’ 與 ‘GarageArea’高度相關,’GarageYearBuilt’與 ‘YearBuilt’ 高度相關,’TotalRoomsAboveGround’ 與 ‘GroundLivingArea’ 高度相關。它們的相關性均在80%以上。從該矩陣還可以深入瞭解最適於特征工程的特征。

特征添加——在現有特征基礎上構造了9個新特征,主要是二分類特征。新添的第一個特征是 “GrYrAfter” ,它代表了 ‘Garage year difference’ ,記錄了建築物建造年份 ‘ YearBuilt ‘ 和車庫建造年份 ‘GarageYrBuilt ‘ 之間是否存在時間差。這個潛在的差值值得洞悉,因為這可能意味著建築物的施工時間非常漫長或者期間進行了一些重大改造,這些信息都需要瞭解。新添的第二個特征是 “Remodelling”,生成兩個模型來刻畫房屋改建的時間差,第一個是二分類特征,它記錄了房屋的建造年份 ‘ YearBuilt ‘ 與改建年份 ‘ YearRemodAdd ‘ 是否相同。第二個是數值特征,它在第一個特征為“是”的情況下,記錄了二者的時間差(YearRemodAdd – YearBuilt)。房屋建造時間是否晚於1980年和是否早於1960年也是新添的兩個二分類特征,其餘所有特征如下表所示。

基於對 ‘Garage Year Built’ 中的缺失情況的仔細分析、它的高相關性以及由它構造出的新特征,對其採取了刪除措施。因為它對自變數的影響已被更簡單的特征所代替。

特征變換——對4個特征進行了變換以校正其分佈圖中所觀察到的偏斜情況。

觀察到 ‘LotAre’ 的分佈異常,需要對其進行變換。對數變換之後得到了更好的分佈,如下圖所示:

LotArea特征的變換

另一個需要進行變換的特征是 ‘GroundLivingArea’ ,它的分佈向右傾斜,進行對數變換之後也得到了更好的分佈,如下圖所示:

GroundLivingArea特征的變換

 

其他兩個特征中,’First Floor Square Footage’ 特征也進行了對數變換,’Lot Frontage’ 則進行了box-cox變換。

最後一個進行特征變換的是因變數 ‘SalePrice ‘。在標的變數中觀察到的向右傾斜經過對數變換,修正為正態分佈。

標的變數 —— SalePrice的變換

特征虛擬化——在建模之前對分型別特征進行啞編碼。經過特征添加、刪除和變換後,資料框中包含87個特征和2919條觀測值:

在啞編碼和從每個啞編碼後的特征中刪除一個啞變數之後,有201個列添加到資料框中,總共有288個特征。

建模

將合併後的資料框重新拆分為訓練資料框和測試資料框,其中訓練集包括1460條觀測值,測試集包括1459條觀測值。總共有5個模型在訓練集上進行了訓練。

基於線性的回歸——即Ridge,Lasso和ElasticNet是為預測而構建的第一批模型。之所以使用這些懲罰多元線性回歸技術,是因為它們可在最小化預測誤差時調節特征之間的多重共線性。

嶺回歸——對於該模型,完成了交叉驗證所需摺疊次數的試驗,如下圖所示:

從圖中可以看出,隨著摺疊次數的增加,標準偏差也隨之增加,而平均誤差保持不變,使用的摺疊次數為10。

嶺回歸繫數與正則化/懲罰強度折線圖

上圖為嶺回歸繫數與正則化/懲罰強α折線圖。隨α的增加,繫數也隨著減小收縮到0。不僅繫數減小,(量度變數與回歸直線接近程度的統計量)也隨之下降。這意味著該模型減少了方差,也因此引入了偏差但產生了減少的預測誤差 ——“偏差-方差權衡”。令alpha = 10,tol = 1e-05,solver =’svd’,得到最佳交叉驗證得分0.1132。

Lasso回歸——Lasso回歸同嶺回歸一樣,也是正則化模型,用來減輕多重共線性的影響。在超參的優化基礎上,令alpha = 10,max_iter = 25,得到最佳交叉驗證得分0.1147。

Elatic-Net模型——這是一個將嶺回歸和Lasso懲罰強度結合起來的正則化模型。

同樣,與其他懲罰模型一樣,隨著α的增加,繫數縮小為0,如同從特征的圖形表示中觀察到的那樣,它們完全從lasso下降到零。經過調參得到最佳引數是l1_ratio = 0.001和α=0.1,得到交叉驗證得分0.11204。

基於樹的模型——訓練了三種基於樹的模型,即支持向量機(SVM),梯度增強回歸(Gradient Boosting Regressor)和XGBoost。

支持向量回歸——對於這個基於樹的模型,需要3個主要引數來指示模型的最優調參,它們是gamma,epsilon和C。其中C的影響最大,它是一個調整引數,如同epsilon一樣,有助於確定可容忍的違規邊界和超平面的閾值。

由網格搜索法得到回歸的最佳引數是gamma = .000001,C = 100,epsilon = 0,它們也可從圖像中觀察得到。對於低均方根誤差,需要低gamma值和高C值。

其他模型有:

Gradient Boosting Regressor——此模型的交叉驗證得分為0.12020; 和XGBoost ——最後訓練的模型得出了0.11872的交叉驗證分數。

下麵的表格顯示了所有使用的模型以及它們的運行情況,而不局限於本地模型,還包括kaggle。嶺回歸的kaggle得分為0.12286,位居kaggle整體排名的前20%。

特征重要性

使用基於樹的模型,繪製了特征重要性圖,首先來自梯度增強回歸模型:

‘OverallQua’ 特征是對房屋的整體材料和完成度進行評級,根據梯度增強回歸模型,其對預測的影響最大。這並不奇怪,因為房屋的銷售價格會隨著其質量的提高而提高。在預測中具有高度重要性的下一個特征是 ‘GrLivArea’,它以平方英尺為單位測量房屋的生活區域,這意味著房屋的大小會影響其價格,而模型也捕捉到了這一點。在分析特征重要性時,我首先想到的是相關矩陣。

高度相關(> 80%)的特征是否對預測產生相同的影響?在文章前部分,可看到 ‘GrLivArea’ 與 ‘TotRmsAbvGrd’ 有83%的相關性,這意味著以平方英尺為單位所測量的生活區域和地上的總房間數是相關的。然而,在觀察到的特征重要性中,儘管 ‘GrLivArea’ 的影響非常大,’TotRmsAbvGrd’ 並不在重要特征的前15名中。這個模型的表現說明梯度增強回歸在多重共線性上非常魯棒。

用於分析特征重要性的另一個模型是隨機森林:

從隨機森林模型獲得的特征重要性與從梯度增強模型獲得的特征重要性非常相似。兩個模型的前3個重要的特征完全一樣,雖然它們對模型的影響程度不同。同樣,與梯度增強一樣,隨機森林對多重共線性具有魯棒性,因為它為隨機森林中的每棵樹選擇隨機特征子集。

未來的工作

集成模型以查看是否可以改進整體預測。

這項研究由三位資料科學研究員參與:Oluwole Alowolodu,David Levy和Benjamin Rosen。

原文標題:

House price prediction using machine learning

原文鏈接:

https://nycdatascience.com/blog/student-works/machine-learning/house-price-prediction-using-machine-learning/

譯者簡介:李潤嘉,首都師範大學應用統計碩士在讀。對資料科學和機器學習興趣濃厚,語言學習愛好者。立志做一個有趣的人,學想學的知識,去想去的地方,敢想敢做,不枉歲月。

    已同步到看一看
    赞(0)

    分享創造快樂