頂級Kagglers的心得和技巧

這是一篇筆記堕虹,課程來自Coursera上的How to Win a Data Science Competition: Learn from Top Kagglers

本篇可以算是頂級Kaggler大佬們朱巨,經(jīng)過上百場比賽總結(jié)的心得和技巧刻盐。對準備開始參加數(shù)據(jù)挖掘競賽的新人們極其有用捅位,可以為你節(jié)省不少時間骤肛。

大部分內(nèi)容我已經(jīng)通過意會翻譯成中文了诱咏,限于小編我的視野,可能會出現(xiàn)些誤解既绕,有問題望指正啄刹。

Tips and tricks

如果覺得排版不適,可以下載notebook文件閱讀岸更。
https://github.com/wmpscc/DataMiningNotesAndPractice

Practical guide

經(jīng)驗之談鸵膏,這將節(jié)省你大量時間。

Before you enter a competition

當我們想?yún)⒓颖荣悤r怎炊,先確定你的目標和試著估計你的參與可以得到什么。

  • 你可能想了解有關(guān)這個問題的更多信息
  • 你可能希望熟悉新的軟件工具包
  • 你可能想要嘗試去獲取獎牌

這些目標中的每一個都將影響您選擇參加的競賽。

如果您想了解更多有趣的問題评肆,您可能希望在論壇上進行廣泛討論债查。例如,如果您對數(shù)據(jù)科學(xué)瓜挽,醫(yī)學(xué)應(yīng)用感興趣盹廷, 您可以嘗試在2017年數(shù)據(jù)科學(xué)碗中預(yù)測肺癌。

如果您想熟悉新的軟件工具久橙,您可能希望比賽有必要的教程俄占。 例如,如果您想學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)庫淆衷。您可以選擇任何具有自然保護特征缸榄,有監(jiān)督學(xué)習(xí)的圖像比賽。

如果你想嘗試得到獎牌祝拯,您可能想要檢查參與者有多少次提交機會甚带。 如果人們有超過一百個提交的點數(shù),這可能是明顯的問題或驗證困難的明顯標志佳头。如果排在前列的人很少鹰贵,這通常意味這應(yīng)該有一個非平凡的方法來參加這場比賽,或者只有少數(shù)人發(fā)現(xiàn)了它康嘉。除此之外碉输,你還需要關(guān)注一下排在前列團隊的規(guī)模,如果他是一個人亭珍,那么你要是聚集一支優(yōu)秀的團隊腊瑟,勝算會大一些。

After you enter a competition:

  • 1.組織你的想法

一旦熟悉了數(shù)據(jù)块蚌,開始寫下你以后想要嘗試的方法闰非。什么東西可以在這里工作?你可能采取什么方法峭范。

完成后财松,去論壇閱讀帖子和話題高相關(guān)度的內(nèi)容。強烈建議你參與論壇上的討論纱控,您可以在論壇上獲得大量信息并結(jié)識新朋友辆毡。

  • 2.挑選一些重要的、有前途的想法

在初始管道準備好之后甜害,你提出了一些想法舶掖,你可能想要開始改進你的解決方案

您可能希望將想法排序,將最重要和最有希望的首先實施尔店≌H粒或者可以將它們歸類到各自主題中主慰,例如特征生成、驗證鲫售、度量優(yōu)化等共螺。

  • 3.嘗試去理解為什么它會或不會工作

現(xiàn)在選擇一個想法并實施它,嘗試在途中獲得一些簡介情竹。特別是藐不,試著理解為什么某些東西有效或無效。從某種意義上講秦效,分析工作的能力和在你嘗試自己的想法時得出的結(jié)論將使您走上正確的軌道雏蛮,去揭示隱藏的數(shù)據(jù)模式和泄露。

After you enter a competition:Everything is a hyperparameter

我喜歡按照這些原則對所有參數(shù)進行排序:

  • 1.重要性
    將參數(shù)從重要到不重要排序阱州,這些可能取決于數(shù)據(jù)結(jié)構(gòu)挑秉、目標、度量等等
  • 2.可行性
    例如Rate參數(shù)很容易調(diào)整贡耽,但這可能永遠需要調(diào)整
  • 3.理解
    評價參數(shù)衷模,我知道它在做什么或不知道。這里重要的是要了解每個參數(shù)在整個管道中的變化蒲赂。

注意:改變一個參數(shù)可能影響整個管道

Data loading

一開始就對資源做一些優(yōu)化阱冶,將節(jié)省大量時間和計算資源。

  • 從經(jīng)典的處理方法開始然后將csv/txt文件轉(zhuǎn)為hdf5/npy文件以更快的加載

我通常從基本數(shù)據(jù)預(yù)處理開始滥嘴,如標簽木蹬,編碼,標簽恢復(fù)若皱,使用額外的數(shù)據(jù)镊叁。然后,我將結(jié)果數(shù)據(jù)轉(zhuǎn)儲為HDF5或npy格式走触。
HDF5是Pandas的數(shù)據(jù)幀晦譬,npy存儲非bit數(shù)組。運行試驗通常需要大量重啟內(nèi)核互广,這將導(dǎo)致重新加載所有數(shù)據(jù)敛腌,加載csv文件可能需要幾分鐘,從HDF5或npy格式加載數(shù)據(jù)只需幾秒鐘即可完成惫皱。

  • 將64位陣列轉(zhuǎn)為32位像樊,節(jié)省兩倍內(nèi)存

默認情況下,Pandas以64位陣列存儲數(shù)據(jù)旅敷,這在大多數(shù)情況下是不必要的生棍。將所有內(nèi)容向下轉(zhuǎn)換為32位將節(jié)省兩倍的內(nèi)存

  • 大數(shù)據(jù)集可以被分塊處理

Pandas支持即時的數(shù)據(jù)重新鏈接。因此媳谁,大多數(shù)數(shù)據(jù)集可以在沒有大量內(nèi)存的情況下處理涂滴。例如您可以簡單的對訓(xùn)練集進行拆分來驗證你的模型,而不是使用完整數(shù)據(jù)來做交叉驗證氢妈。

Performance evaluation

  • 并不總是需要進行廣泛的驗證

  • 從最快的模型開始-LightGBM

我通常從LightGBM開始粹污,找到一些相當不錯的參數(shù)段多,并評估我的特征的性能首量。
不要從SVM、隨機森林进苍、神經(jīng)網(wǎng)絡(luò)開始加缘,你會浪費太多時間等待它們的訓(xùn)練。只有當我對特征工程感到滿意時觉啊,才會轉(zhuǎn)向去調(diào)整模型拣宏、采樣和stacking。

pe.png

Fast and dirty always better

在某些方面杠人,我將我的方法描述為“fast and dirty”勋乾,總是更好。

  • 不要過于關(guān)注代碼質(zhì)量

關(guān)注真正重要的事——數(shù)據(jù)嗡善。做數(shù)據(jù)探索辑莫,嘗試不同的特征。谷歌特定領(lǐng)域的知識罩引。您的代碼是次要的各吨。創(chuàng)建不必要的類和個人框架可能只會讓事情更難以改變,這會導(dǎo)致浪費你的時間袁铐,所以要保持簡單合理揭蜒。

  • 把事情簡單化:只保留重要的東西

不要跟蹤每個小變化

  • 如果你對計算資源感到不爽-那就去租一臺服務(wù)器

最后,如果您對給定的計算資源感到非常不舒服剔桨,不要掙扎數(shù)周屉更,只需租一臺更大的服務(wù)器。

Initial pipeline

  • 從簡單甚至原始的解決方案開始

  • 用完整的管道調(diào)試

這種解決方案的主要目的不是建立一個好的模型洒缀,而是從數(shù)據(jù)的最開始到我們將提交文件寫成確定的格式瑰谜,建立完整的調(diào)試管道。我建議你從構(gòu)建初始管道開始帝洪,通常你可以在kernel中找到組織者提供的baseline解決方案似舵。我建議你仔細閱讀并自己寫。

  • “從見到到復(fù)雜”

另外葱峡,我建議你在其他方面遵循從簡單到復(fù)雜的方法砚哗。例如我更喜歡隨機森林而不是GBDT,至少隨機森林工作得非撑檗龋快蛛芥,幾乎不需要調(diào)整混合參數(shù)提鸟。

Best Practices from Software Development

  • 使用好的變量名

無論你多么聰明,如果你的變量名起的不好仅淑,你肯定會對它感到困惑称勋,這是遲早會發(fā)生的。

  • 讓你的研究可重復(fù)

  • 固定所有隨機種子

  • 準確記下功能的生成方式

  • 將代碼存儲在版本控制系統(tǒng)下涯竟,例如git赡鲜。
    很多時候,你需要回退你的模型到兩星期前做模型集成庐船。

  • 復(fù)用代碼

在訓(xùn)練和測試階段使用相同的代碼非常重要银酬。例如,為了保證它們以一致的方式訓(xùn)練筐钟,應(yīng)該使用相同的代碼準備和轉(zhuǎn)換特征揩瞪。這地方一般很難察覺到,所以最好小心點篓冲。我建議將可重用代碼移動到單獨的函數(shù)中李破,甚至是單獨的模塊。

Read papers

  • 這可以獲取到ML相關(guān)的電子
  • 例如壹将,如何去優(yōu)化AUC
  • 便于熟悉相關(guān)領(lǐng)域問題
  • 尤其對特征生成有用

My pipeline

  • Read forums and examine kernels first

  • There are always discussions happening!

  • Start with EDA and a baseline

  • To make sure the data is loaded correctly

  • To check if validation is stable

  • I ad features in bulks

  • At start I create all the features I can make up

  • I evaluate many features at once(not "add one and evaluate")

  • Hyperparameters optimization

  • First find the parameters to overfit train dataset

  • And then try to trim model

Code organization:keeping it clean

  • Very important to have reproducible results!

  • Keep important code clean

  • Long execution history leads to mistakes

  • Your notebooks can become a total mess

s = qq.sum(1)
ss = s[:,3]/qq.var()
sss = ss[0]

注意代碼質(zhì)量

  • One notebook per submission(and use git)

    notebook.png

  • Before creating a submission restart the kernel

  • Use "Restart and run all" button

wechat.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗤攻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瞭恰,更是在濱河造成了極大的恐慌屯曹,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惊畏,死亡現(xiàn)場離奇詭異恶耽,居然都是意外死亡,警方通過查閱死者的電腦和手機颜启,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門偷俭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缰盏,你說我怎么就攤上這事涌萤。” “怎么了口猜?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵负溪,是天一觀的道長。 經(jīng)常有香客問我济炎,道長川抡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任须尚,我火速辦了婚禮崖堤,結(jié)果婚禮上侍咱,老公的妹妹穿的比我還像新娘。我一直安慰自己密幔,他們只是感情好楔脯,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胯甩,像睡著了一般昧廷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜡豹,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天麸粮,我揣著相機與錄音溉苛,去河邊找鬼镜廉。 笑死,一個胖子當著我的面吹牛愚战,可吹牛的內(nèi)容都是我干的娇唯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼寂玲,長吁一口氣:“原來是場噩夢啊……” “哼塔插!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拓哟,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤想许,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后断序,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體流纹,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年违诗,在試婚紗的時候發(fā)現(xiàn)自己被綠了漱凝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡诸迟,死狀恐怖茸炒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阵苇,我是刑警寧澤壁公,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站绅项,受9級特大地震影響紊册,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜趁怔,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一湿硝、第九天 我趴在偏房一處隱蔽的房頂上張望薪前。 院中可真熱鬧,春花似錦关斜、人聲如沸示括。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垛膝。三九已至,卻和暖如春丁稀,著一層夾襖步出監(jiān)牢的瞬間吼拥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工线衫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凿可,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓授账,卻偏偏與公主長得像枯跑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子白热,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容