【Kaggle-數據分析競賽】House Price Prediction 項目總結


Kaggle-數據分析競賽:House Price Prediction官網鏈接

參賽情況
參賽時間 2020-05
最終結果(均方根誤差RMSE) 0.115
競賽排名 前10%
項目python代碼notebook https://www.kaggle.com/yzh094/my-house-price-prediction

1. 項目概述

  • 項目背景:影響房屋價格的因素眾多,如房屋面積、房屋層數、配套設施等等。
  • 項目要求:利用競賽提供的數據,通過分析影響房屋價格的諸多因素來對房屋價格進行預測。
  • 項目數據:項目數據分成訓練數據(train.txt)和測試數據(test.txt),其中字段” LotConfig”、“ LandSlope”等79個字段是特征變量(不包括ID列),”SalePrice”字段是目標變量。
  • 評估指標:本項目結果評估指標為均方根誤差(Root Mean Squared Error, RMSE)。

2. 項目思路

該項目的基本思路如下圖所示。項目所有流程均基於Python實現。

3. 問題定義

該項目要求利用給定的數據(共包括81個特征,數值型特征和類別型特征均有)來對房屋價格進行預測,因此考慮采用回歸方法進行預測。同時,為了提高預測的准確率(盡量降低RMSE),考慮基於集成學習思想的多個回歸模型集成方法。

4. 數據觀察

  • 利用Python第三方庫pandas_profiling對訓練集生成描述性統計報告。發現該數據中包含數值型特征和類別型特征,大量特征存在缺失值。缺失率可視化如下圖所示:
    各個特征數據缺失率可視化

  • 通過數據分布可視化,發現數據在許多特征上存在偏態性。以訓練集目標變量SalePrice為例,數據分布及QQ圖如下圖所示:

5. 數據預處理

  • 異常值處理:選擇對房屋價格影響較大的面積變量"GrLivArea"與目標變量 "SalePrice"的關系進行數據可視化(散點圖),可以看到存在兩個明顯的異常值點(房屋面積極大但是房價極低,不符合業務常識),如下圖所示:

    對這兩個異常值點進行刪除。

  • 缺失值處理:根據競賽提供的特征變量的解釋,充分理解每個特征的含義,綜合采用眾數、中位數等方法進行缺失值填補。

  • 數據偏態處理:通過觀察每個數值型特征的數據分布,對目標變量SalePrice采用對數化處理;對其余特征變量采用Box-Cox轉換處理。以SalePrice變量為例,偏態處理后的數據分布及QQ圖如下圖所示(經過處理后的數據更符合回歸問題要求的正態分布):

6. 特征工程

  • 根據業務常識,由於面積是影響房屋價格的主要因素,所以基於現有的有關面積的特征變量:TotalBsmtSF、1stFlrSF、2stFlrSF生成新的面積加總變量TotalSF變量。
  • 對於部分數值型特征,其表達的含義其實是類別信息,因此將這些特征轉化為類別型數據,如MSSubClass(房屋等級類別)等。
  • 對於包含排序信息的類別型特征,為了充分保留其排序信息,對這些特征采用LabelEncoder變換。

7. 多模型訓練

對於該回歸問題,本項目選擇的模型有:

模型名稱
Lasso回歸模型
ElasticNet回歸模型
嶺回歸模型(以polynominal為核函數)
XGBregreressor模型
LGBMRegressor模型
Gradient Boosting回歸模型

通過K折交叉驗證計算上述模型的RMSE的均值和標准差。

8. 集成學習

對訓練好的多模型進行集成融合,生成最終的模型Stacking model。

9. 預測

分別用Stacking model、XGBregreressor、LGBMRegressor對測試集進行預測,然后將三個預測結果進行加權,得到最終結果:

最終均方誤差
0.115


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM