利用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(http://homes.cs.washington.edu/~tqchen)最初開發的實現可擴展,便攜,分散式 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) 數據分析之「岩石與水雷」