Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨

Kaggle Twitter 可視化技術 量子位 2019-06-17

原文:Lavanya Shukla

銅靈 編譯整理

量子位 出品 | 公眾號 QbitAI

天天跟數據打交道的研究人員,都有一個成為Kaggle頂級大師(Grandmaster)的夢想。

但每年的Kaggle參賽團隊眾多,通常一個項目都有數千人至上萬人報名,如何在其中脫穎而出?

最近,自動化數據準備及協作平臺Dataland的聯合創始人Lavanya Shukla,在博客上分享了她在Kaggle競賽中最終成為0.3%的獲獎經驗。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


小姐姐在推特中表示,這份攻略裡全都是乾貨,網友紛紛為其點贊。有網友表示,這份攻略非常棒,才知道脊迴歸如此強大!


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


*先放上原文地址:*

*https://www.kaggle.com/lavanyashukla01/how-i-made-top-0-3-on-a-kaggle-competition*

量子位將小姐姐的乾貨要點翻譯整理如下,長文乾貨預警,建議先碼後看:


開始一場數據科學競賽是一項龐大的工作,所以我寫了這篇在Kaggle經典房價預測題目(Advanced Regression Techniques)中獲得TOP 0.3%成績的比賽經驗。

歡迎大家fork這份乾貨,也歡迎在實際問題中親自實踐這些代碼。

祝你好運!

目標

  • 數據集中每一行都描述了房子的特徵。
  • 我們的目標是根據這些特徵,預測銷售價格。
  • 評估模型好壞是根據模型預測的銷售價格與實際銷售價格之間的均方根誤差(RMSE)。將RMSE轉換成對數尺度,確保預測昂貴房屋和便宜房屋時的誤差會對產生的分數影響相當。

模型訓練過程中的關鍵特性

  • 交叉驗證:使用12折交叉驗證。
  • 模型:每次交叉驗證擬合7個模型(包括ridge、svr、gradient boost、random forest、xgboost、lightgbm regressors等)
  • 堆疊:此外,我用xgboost訓練了一個元StackingCVRegressor。
  • 混合:所有訓練過的模型在不同程度上都存在對訓練數據的過擬合。因此,為了做出最終的預測,我將它們的預測混合在一起以得到更可靠的預測。

模型表現

從下圖可以看出,混合模型的RMSLE(均方根對數誤差)為0.075,遠優於其他模型。

這是我用來做最終預測的模型:


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


現在我們已經知道了一些信息,可以開始著手了:


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨




Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


EDA

目標

數據集中每一行都描述了房子的特徵。

我們的目標是根據這些特徵預測銷售價格。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


銷售價格:我們打算預測的變量


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


特徵處理

我們先將數據集中特徵進行可視化:


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


並繪製出這些特徵之間的關係,以及它們與銷售價格的關係。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


讓繪製銷售價格與數據集中的一些特性之間的關係。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


特徵工程

來看一下房子售價的分佈情況。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


可以看出,銷售價格在右邊傾斜,這是因為大多數ML模型不能很好地處理非正態分佈數據。

我們可以應用log(1+x)變換來修正傾斜。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


再畫一次銷售價格的分佈:


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


現在,銷售價格是正態分佈的了。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


添補缺失值


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


現在,我們可以為每個特性添加缺失的值。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


這樣一來,這不就沒有缺失值了……

解決傾斜特徵


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨



Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


我們用scipy函數boxcox1p來計算Box-Cox轉換。我們的目標是找到一個簡單的轉換方式使數據規範化。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨

現在,所有的特種看起來都是正態分佈的了。

創造有趣的特徵

ML模型很難識別更復雜的模式,所以我們可以基於對數據集的直覺創建一些特徵來幫助我們的模型,比如,每個房子地板總面積、浴室和門廊面積。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


特徵轉換

我們通過計算數值特徵的對數和平方變換來創建更多的特徵。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


編碼分類特徵

因為大多數模型只能處理數字特徵,所以採用數字編碼分類特徵。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


重新創建訓練和測試集


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


可視化我們要訓練模型的一些特性。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


訓練模型

設置交叉驗證並定義錯誤度量


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


設置模型


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


訓練模型

獲得每個模型的交叉驗證分數。


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


混合模型逼格得到預測值


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


確定性能最佳的模型


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


從上圖中我們可以看出,混合模型的RMSLE為0.075,遠遠優於其他模型。這是我用來做最終預測的模型。

提交預測值


Kaggle大牛小姐姐自述:我是怎麼成為競賽中Top 0.3%的 | 乾貨


傳送門

文章原文:

https://www.kaggle.com/lavanyashukla01/how-i-made-top-0-3-on-a-kaggle-competition

小姐姐的博客:

https://lavanya.ai/

— 完 —

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態

相關推薦

推薦中...