資料科學社群中有一個很重要的平台 Kaggle,裡面從競賽、資料分享、經驗交流到社群都有,因為經營太成功了,後來(不意外地)被 Google 買下。我之前在參加 Google 數據分析師專業認證課時,課堂中有要求要開一個帳號,並且上去問答。問答完之後,就會看到你的帳號狀態中,顯示「你只要上傳一次數據競賽」就可以脫離新手村。
衝啊!
Kaggle 中有非常多的數據競賽,而且有些競賽的數據集非常好,獎金也很高。不過菜鳥先不要想那麼多,也做不了這麼高深的比賽。許多人都推薦,Kaggle 競賽可以先從 Titanic 鐵達尼競賽開始。這是一個沒有獎金,只有評分與排名的競賽,而且資料集非常單純,你不會寫程式、不懂機器學習,即便用Excel這種試算表也可以獲得不錯的成績。
什麼是 Kaggle 競賽
Kaggle 上有大大小小的競賽,從給錢的、給(虛擬獎牌)到老師自己在課堂上舉辦的都有,參加辦法其實很簡單,許多比賽都會將一份資料集拆成兩個:
- 訓練集 Train Dataset,讓你實際去訓練機器學習或者用各種你會的方法來跑模型的資料集。
- 測試集 Test Dataset,通常與訓練集來自同一個資料庫,就像富春山居圖分成兩塊一樣,Test Dataset 是讓你去測試你的模型是否正確,會比訓練集少一些欄位,然後把你的結果上傳到競賽中,競賽就會與原本的資料比對,吻合程度越高就代表你的模型越好。
鐵達尼資料集
Kaggle上的鐵達尼資料集來自真實的數據,但與真實完整的欄位有一點點落差,這些欄位包含:
- survival 倖存與否
- pclass 艙等
- sex 性別
- Name 姓名 (包含頭銜)
- Age 年齡
- sibsp 手足、配偶人數
- parch 父母、子女人數
- ticket 船票編號
- fare 票價
- cabin 艙房編號
- embarked 登船口岸
但這些資料集中有嚴重的資料疏漏,所以需要用各種技巧來處理。
資料分析
在Excel有很多方式可以分析這個檔案,第一是採取 Logistic Regression,這樣不用針對數據的特徵有任何分析,直接硬算即可。
另外一種方法就是針對數據的特徵分析之後,你可以不斷透過樞紐分析往下找到各種特徵。
當Rose與Jack要逃下船時,誰的機會比較大呢?我們先從性別來看,可以很快發現最明顯的特徵,就是女性大部分都活下來了,但男性很少。
- 頭等與二等的女性存活
- 男性頭等與二等艙10歲以下存活
當你把這些特徵或規則都找出來之後,就可以在測試集輸入你的判斷式、公式、規則、模型等等,去估計測試集每一位乘客是否會倖存(1),之後再把數據貼到另一個 .csv 檔案,這樣就可以上傳,並且立即看到分數與排名了。
以「頭等與二等的女性存活」為例,我的 Excel 判斷式應該會是
=IF(AND(Sex="Female", PClass<3),1,0)
然後逐漸向下拉,就可以判斷是否可能存活。
這個鐵達尼的資料集,我用邏輯斯回歸與樞紐分析找規則的方式,兩個都可以獲得差不多的正確率。
資料上傳
Titanic的資料上傳很簡單,拖拉 .csv 檔案,並簡單寫個註記(主要是給自己看的),馬上就可以看到你的正確率與排名。
如果你上傳一個全部都倖存的檔案會發生什麼事?你會獲得一個 0.37 的成績,大概倒數1000名內。如果全部都死亡呢?成績就會高很多了。
通常你經過每次調整再重新上傳,都會獲得更好的成績,這也是 Kaggle 平台的趣味所在。