十步制勝 Kaggle 資料科學競賽

古月水語發表於2016-05-09

Kaggle 是一個領先的資料科學比賽平臺,由最初的 KDD 和 Netflix 以及其他比賽發展而來。如果你是(或想要成為)資料科學家,參加 Kaggle 比賽是一個提升技能和名聲,同時還可能贏得一些獎金的有效方法。這篇文章總結了我和其他參賽者的經驗,提出了順利完成一個 Kaggle 比賽的 10 個步驟。

由於這篇文章是為 Kaggle 比賽而提出的,所以對於一個有明確分析資料和預測建模方法的問題,其中的大部分步驟或許是無用的。然而,在實際問題中,資料科學家常常要和問題相關人員花費大量時間去明確問題細節並蒐集相關資料。解決一個類似 Kaggle 比賽的問題往往是一個資料科學家工作中比較有趣的部分。

一:閱讀比賽說明

令人吃驚的是有太多人忽略細節了,比如忘記首次提交的截止日期。明確比賽時間、能夠複述問題要求、提交正確格式的答案等等細節問題這些都非常重要。正如平常一樣,在開始建模和程式設計之前,必須要明確你在做什麼。

二:理解評判測試標準

圓滿完成比賽的一個很重要的部分就是明確評判標準。通過利用符合評判標準的優化方法可以很容易的大幅提升分數。一個經典的例子就是優化平均絕對誤差和平均方差。對於一個給定的資料集,在沒有更多的資料的時候,標示最小化平均絕對誤差的指標是中位數,而對應於平均方差的則是均值。在 EMC 資料科學馬拉松中,在沒有足夠資料的情況下,我們採用了中位數而沒用均值最為標準進行評價,事實證明這樣做的效果很好。

三:瞭解資料

在 Kaggle 比賽中,嚴格專業化(不要過度擬合資料)是非常正確的。這並不像機器學習的學術論文那樣,研究人員可以在不同的資料集上測試提出的模型。這也不像應用型的工作那樣關心資料漂移以及預測結果是否有意義。在比賽中,探索資料中的異常現象可以給予一定的幫助。例如在之前提到的馬拉松賽中,我們注意到我們必須預測每個小時的空氣汙染情況,然而測量結果卻並沒有每個小時都能實時更新(可能是因為測量裝置的限制)。因此我們最初做了一個簡化版的模型去預測每個小時最後的測量值。這反而成了我們最具價值的切入點。顯然,也就是說當時我們預測的是測量裝置的測量結果而不是實際的汙染情況—這在現實生活中絕對是要避免的。

四:首先明確要做什麼而不是如何做

許多初學者總是過度擔心需要用什麼工具(Python 還是 R, 隨機森林還是深度學習?),其實這個時候他們應該考慮的是如何理解資料和應該以何種模式建模。例如在參加 Yandex 個性化搜尋比賽的時候,我們花了很多時間分析資料,考慮對於使用者來說什麼才是有意義的。這樣思考很容易想出方案,因為我們都用搜尋引擎。對於任何一個問題,必須對資料和問題細節足夠熟悉,與資料融為一體才能高效的思考。

五:建立本地驗證環境和評判標準

相比於只依靠積分榜,擁有自己的評判標準可以加速程式並做出更加可靠的結果。只有在資料量太小或者已經沒有時間(比賽即將結束)的情況下才能夠跳過本地的標準。如果你的本地標準建立的比較好而且與積分榜的評價標準一致(你需要做一兩次提交測試一下),沒有必要提交太多次結果。少做幾次提交,降低過度擬合積分評價標準的概率,否則會對結果造成災難性的影響。

六:關注比賽論壇

一定記得關注和訂閱論壇資訊,以便接收關於資料和比賽的相關資訊提示。同時,嘗試搞清楚你的對手在做什麼也是很有價值的。一個極端的例子就是最近在比賽中出現的分享程式碼的趨勢—儘管依靠這些程式碼不是一個好主意,但也應該要注意到它們的存在。最後,閱讀論壇上的賽後總結是學習他人和提升自己非常有效的方法。

七:專注做研究

對於任何給定的問題,很可能有很多人窮其一生在需找答案。這些人(大部分是學者)或許已經發表了一些你可以從中學習的論文,基準和程式碼。這種做法對我總是很有效,我總是能學到一些新東西並將其成功的運用到每次比賽中。雖然沒有完全贏得比賽(當然這也不完全取決於你),學習和理解更深的知識也是比賽必將帶來的獎勵。

八:準確使用基本原理和方法

應用比較複雜的方法可能會很有趣,但經常是那種最基本的方法才能讓你走的更遠。常用的演算法大都在大部分語言中有較好的實現,所以沒有理由不使用。然而,在實踐中實驗演算法時,必須對一些主要引數做一些調整(比如隨機森林中的樹的數量或線性模型的正規化)。毫不修改的執行一個演算法甚至比不執行還要差勁,因為可能得到一個錯誤的結果—放棄某些東西有時真的很有效。

九:彙總

不要和組合方法搞混了(當然組合方法也很重要),這裡的彙總是指把我們獨立建立的模型結合起來。在高知名度的比賽中,經常會有通過隊伍 相互之間結合模型從而大幅提升效果的例子。在單獨作戰時這樣做就更加值得了,因為幾乎沒有比賽是一個模型就能獲勝的。

十:獲得勝利

通常情況下,步驟一到五隻會在每次比賽和問題中經歷一次,步驟六到九則會在整個過程中不斷平行重複的迴圈,直到最後。一般來說,比賽的總體表現與投入時間的相關。如果你不放棄,堅持嘗試並不斷學習和改進,就會有很好的結果。最重要的步驟是步驟零:承諾堅持參加和完成比賽。如果做到這些,你已經獲得了學習和成長成為一個資料科學家的榮譽。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

十步制勝 Kaggle 資料科學競賽 十步制勝 Kaggle 資料科學競賽

相關文章