2017年8月23日 星期三

[FWD] Data Science Tutorial


https://www.kaggle.com/helgejo/an-interactive-data-science-tutorial



關鍵就是第一步 Business understanding,這讓我想起《怎樣解題》這本書,所以請老婆幫忙買中譯本回來研究。事實上工作也常碰到類似情境,解決問題之前要先了解問題


例子:https://www.kaggle.com/c/titanic

「目標」是預測怎樣的人可以存活下來,如果有看《鐵達尼號》這部電影,大概會有小孩和女人容易存活的印象,但電影有幾幕拍到年邁的老男人偷偷混到救生艇求生,以 machine learning 的術語就是 outlier,也就是說,leaderboard 上百分百正確預測率不見得是用 machine learning 方法做出來的。

以這份資料來說:https://en.wikipedia.org/wiki/Sinking_of_the_RMS_Titanic,我們知道二等艙的小孩存活率百分之百,這個根據是歷史資料不是亂編的,所以當 test data 滿足以上條件,大概可以說 survived = 1。

以上是歷史統計資料。


如果是歷史乘客資料呢?如果我們知道所有乘客姓名等資料,train/test data 中 Name field 看似沒什麼用途,其實這是最重要的 feature。(當然還有某些用途,例如透過 surname 確定某些家人,假設有爸爸、媽媽、小孩,小孩存活率比較高,而爸爸或媽媽存活率比較低,這就是父母親的愛)

只要把乘客姓名丟到 Google search,前幾名網頁點進去看一下,比對性別年齡等等資訊,幾乎可以確定生還或死亡。不過因為 Google search API 要錢,Bing search API 試用期間不用錢(但沒有 Google 準確),所以先用 Bing 查一遍,不確定的再手動查。以下是細節:

https://github.com/Meng-Gen/KaggleStudy/blob/master/c/titanic/study.ipynb


以上。

完全沒有用到任何 machine learning 的東西。因此 https://www.kaggle.com/c/digit-recognizer/leaderboard 完美預測的結果,或許也是某種 data leak age。


沒有留言:

張貼留言