前言
自五月底退伍重返人間後,經歷了一周的面試之旅,發覺到自己在資訊領域最感興趣的還是資料科學。為了充實一下自己的履歷、同時也為了填補將近半年多的空缺,我決定上Kaggle找幾個比賽來訓練自己,順便看看能不能拿個Master稱號XDD。以下將介紹我選擇的其中一個比賽「Instant Gratification - A synchronous Kernels-only competition」的比賽經驗。
比賽說明
由於Kaggle近年來一直推Kernel Only (KO)的比賽,好處不但是能保證參賽者能提供最優、最快速、最小的解法外,更重要的是能直接檢查參賽者是否有使用Leakage的方式來獲獎。
但在KO光鮮亮麗的好處之外,也是有著不少壞處,諸如尖峰時段Kernel運行緩慢、偶爾會出現不知名Bug、當然還有最重要的Final Private Leaderboard公布時,需要把所有參賽者的Kernel都重新跑過一次以便獲得Private Test Set的成績。
這個過程是十分緩慢的,而且花費時間跟參與比賽的隊伍數目成正比,參賽者往往要等上十天半個月才能知道自己有沒有得獎獲得牌,甚至有些人還會領先了全場的Public Leaderboard,最後發現自己有個小邏輯錯誤而導致Final時沒成績。
諸如此類的憾事讓Kaggle決定要提供一個可以即時揭曉最終Private LeaderBoard成績的KO比賽方式;而做為一個新產品的上市,Instant Gratification這項比賽就成了Kaggle的試驗品。
EDA
因為參加比賽時已經是最後十天的階段,所以當時就有不少有用的EDA可以直接參閱,並且Train data跟Test data的generate方式也已經被強大的Kaggler給破解出來,是scikit-learn裡面的make_classification()方法。(在比賽結束後,Kaggle官方也發佈了generate train&test set的程式碼,毫無意外的正是make_classification()。)
這裡就不贅述,直接附上一些有用的EDA連結:
Models
從許多Kaggler提供的Kernel中,可以找到一些在這個dataset裡表現得較好的Model,像是QDA、 GMM、 SVM model等等。令人有些意外的是常見的xgboost、lightGBM、Catboost等等GBT model、甚至是NN model竟然榜上無名,原因就在於可供training的data資料量過少。
因為之前沒有接觸過QDA或是GMM,因此就花了一些時間看了他們的說明…不過說真的,數學不好的人大概也就只能粗淺的理解他們在幹嘛,基本上很難自己改良(這也導致後面無法有更進一步的突破,演算法往往才是一個大gap的突破關鍵。)。
這裡就概略介紹一下,也算是買個保險,避免自己以後可能會用到: