利用XGboost簡單粗暴zillow競賽25%

Zillow Prize是一個擁有巨額百萬美元獎金的比賽。競賽共有兩輪,只有在預賽中進入前100名的參賽選手才有資格參加第二輪比賽,因此我們的目標是進入前100。在這篇文章中,我用XGBOOSt得到Score約0.0645左右的成績。

一、簡介

第一輪預選賽2017年5月24日開始,在預選賽中,你將建立模型用於提高Zestimate的殘留誤差,幫助Zestimate進一步提高預測的精準度。因此,在這個百萬美元的競賽中,我們需要開發一個用於預測房子未出售價格的模型,對美國110㎡左右的房子的價值進行估計。

二、數據讀取和預處理

1.導入依賴包

Pandas 是數據處理的大殺器,結合Numpy可以完成絕大多數的數據預處理任務。

2.讀取數據

有三個文件需要讀取:train_2016.csv、propertie_2016.csv和sample_submission.csv。利用pandas 的read_csv()將數據讀取為dataframe。

文件描述

Properties_2016.csv:包含2016年房屋特徵的所有內容。

Train_2016.csv:2016年1月到2016年12月的訓練數據集

Sample_submission.csv:正確提交文件的實例

3.創建訓練集

將Properties_2016和Train_2016的數據根據parcelid欄位進行組合,得到訓練數據集。

4.將數據類型轉換為float32

我們將訓練集df_train中的float64數據類型的數據轉換為分float32,用以節約我們的訓練資源,加快模型的訓練速度。

三、特徵工程

參加了幾次kaggle比賽,我比較認同kaggle是以特徵工程和調參為主的說法。做特徵工程這一步需要我們對數據集進行深入探索,這一步在Kernerls上有很多很優秀的Kernel可以進行參考。

訓練集的數據量是比較大的,因此,通過學習大神們的kenerls,可以對數據集有一個比較詳細的了解。在特徵工程這一步我們主要做的就是特徵預處理和特徵選擇。

第一步:樣本選取

logerror是殘留誤差,通過下圖的數據探索我們可以看到主要分布在[-0.4.0.4]這個範圍內,因此將超出這個範圍的的數據從訓練集中刪除。

第二步:特徵選擇

[『parcelid』,』logerror』, 『transactiondate』, 『propertyzoningdesc』,』propertycountylandusecode』]與我們的訓練無關,從訓練集的參數中刪除。

註:數據和特徵決定機器學習的上限,而模型和調參是逼近這個上限。特徵工程是kaggle競賽中極為重要的一步,在後期我們需要花更多的時間來做Feature Engeneering。

四、模型選擇和調參

在Zillow比賽中,我們的需要預測的是連續型的數值,可以算是一個回歸問題。針對回歸問題,我們有很多模型可以選擇,在zillow競賽中我選擇了最近比較火的XGBOOST模型。

1.XGBOOST簡介

XGBoost :eXtreme Gradient Boosting

XGBoost是由 Tianqi Chen(homes.cs.washington.edu)最初開發的實現可擴展,便攜,分散式 gradient boosting (GBDT, GBRT or GBM) 演算法的一個庫,可以下載安裝並應用於 C++,Python,R,Julia,Java,Scala,Hadoop,現在有很多協作者共同開發維護。

XGBoost 所應用的演算法就是 gradient boosting decision tree,既可以用於分類也可以用於回歸問題中。

2.XGBOOST的特點

我選XGBoost最重要的原因就是它的計算速度快,模型表現好。

一般來說,Gradient Boosting 的實現是比較慢的,因為每次都要先構造出一個樹並添加到整個模型序列中。而XGBoost訓練時可以用所有的CPU內核進行並行化建樹,大大加快了訓練的速度。同時,XGBoost在預測問題中模型表現非常好,在kaggle比賽中,很多冠軍在賽後的分享中都提及使用XGBoost。

3.XGBoost訓練和調參

調參這個步驟花了我挺多時間。在進行了簡單的特徵工程後,我的大部分時間都花在了調參上,XGBoost的調參是比較重要的,過後我會專門寫一篇文章來介紹XGBoost調參部分。

這裡比較笨的思路就是不斷嘗試參數。比如max_depth開始設置為一個比較常規的值10,然後下一次設置為8,模型有提高就用6再嘗試,否則嘗試12。依次對其他參數進行調試。

五、預測並提交Kaggle平台

最後一步就是將我們的訓練模型在預測集上進行預測,並提交預測結果到Kaggle平台。

目前的排名在25%,還需要不斷的優化來提高成績。

完整代碼我放到了百度雲,關注微信公眾號:kaggle數據分析 ,後台回復

zillow會有完整的代碼打包下載。


推薦閱讀:

《R語言實戰》第7章 筆記
胡說八道互聯網,他讓馬雲又愛又恨
數據可視化(三)那些好用的在線工具
《機器學習》從零開始學(1) 數據分析之「岩石與水雷」

TAG:Kaggle | 数据分析 | 机器学习 |