自動化數據準備及協作平臺Dataland的聯合創始人Lavanya Shukla,在博客上分享了她在Kaggle競賽中最終成爲0.3%的獲獎經驗。
先放上原文地址:
https://www.kaggle.com/lavanyashukla01/how-i-made-top-0-3-on-a-kaggle-competition
Kaggle經典房價預測題目(Advanced Regression Techniques)中獲得TOP 0.3%成績的比賽經驗。
目標
數據集中每一行都描述了房子的特徵。
我們的目標是根據這些特徵,預測銷售價格。
評估模型好壞是根據模型預測的銷售價格與實際銷售價格之間的均方根誤差(RMSE)。將RMSE轉換成對數尺度,確保預測昂貴房屋和便宜房屋時的誤差會對產生的分數影響相當。
模型訓練過程中的關鍵特性
交叉驗證:使用12折交叉驗證。
模型:每次交叉驗證擬合7個模型(包括ridge、svr、gradient boost、random forest、xgboost、lightgbm regressors等)
堆疊:此外,我用xgboost訓練了一個元StackingCVRegressor。
混合:所有訓練過的模型在不同程度上都存在對訓練數據的過擬合。因此,爲了做出最終的預測,我將它們的預測混合在一起以得到更可靠的預測。
模型表現
從下圖可以看出,混合模型的RMSLE(均方根對數誤差)爲0.075,遠優於其他模型。
這是我用來做最終預測的模型:
現在我們已經知道了一些信息,可以開始着手了:
目標
數據集中每一行都描述了房子的特徵。
我們的目標是根據這些特徵預測銷售價格。
特徵處理
我們先將數據集中特徵進行可視化:
並繪製出這些特徵之間的關係,以及它們與銷售價格的關係。
讓繪製銷售價格與數據集中的一些特性之間的關係。
特徵工程
來看一下房子售價的分佈情況。
可以看出,銷售價格在右邊傾斜,這是因爲大多數ML模型不能很好地處理非正態分佈數據。
我們可以應用log(1+x)變換來修正傾斜。
再畫一次銷售價格的分佈:
現在,銷售價格是正態分佈的了。
添補缺失值
現在,我們可以爲每個特性添加缺失的值。
這樣一來,這不就沒有缺失值了……
解決傾斜特徵
我們用scipy函數boxcox1p來計算Box-Cox轉換。我們的目標是找到一個簡單的轉換方式使數據規範化。
現在,所有的特種看起來都是正態分佈的了。
創造有趣的特徵
ML模型很難識別更復雜的模式,所以我們可以基於對數據集的直覺創建一些特徵來幫助我們的模型,比如,每個房子地板總面積、浴室和門廊面積。
特徵轉換
我們通過計算數值特徵的對數和平方變換來創建更多的特徵。
編碼分類特徵
因爲大多數模型只能處理數字特徵,所以採用數字編碼分類特徵。
重新創建訓練和測試集
可視化我們要訓練模型的一些特性。
訓練模型
設置交叉驗證並定義錯誤度量
設置模型
訓練模型
獲得每個模型的交叉驗證分數。
混合模型逼格得到預測值
確定性能最佳的模型
從上圖中我們可以看出,混合模型的RMSLE爲0.075,遠遠優於其他模型。這是我用來做最終預測的模型。
提交預測值
傳送門
文章原文:
https://www.kaggle.com/lavanyashukla01/how-i-made-top-0-3-on-a-kaggle-competition
小姐姐的博客:
https://lavanya.ai/