記我的第一次Kaggle比賽

Author: Shiyi001 && Bobbbb

眾所周知,Kaggle是一個(gè)全球知名的大數(shù)據(jù)競(jìng)賽砰蠢。能在Kaggle比賽中獲得一個(gè)好的名次,是對(duì)一個(gè)data scientist最好的肯定。現(xiàn)在询枚,我就把自己參加Kaggle的經(jīng)歷寫下來(lái),希望能幫到各位Kagglers浙巫。

PS 本文假設(shè)讀者對(duì) Machine Learning 的基本概念和常見(jiàn)模型已經(jīng)有一定了解金蜀。 Enjoy Reading!

我參加的是Kaggle的Quora Question Pairs比賽,共3394支隊(duì)伍參賽的畴。最后我們隊(duì)獲得了135名(top 4%)的好成績(jī)渊抄。在此,我們將自己參加比賽的具體流程和心路歷程記錄下來(lái)丧裁。完整代碼及心得體會(huì)在PPshrimpGo/Quora-Kaggle

數(shù)據(jù)分析 && 數(shù)據(jù)預(yù)處理

在參加比賽后护桦,我們要先對(duì)數(shù)據(jù)進(jìn)行分析。由于數(shù)據(jù)量很大煎娇,光靠肉眼顯然是不夠的二庵。在此,我們需要使用一些數(shù)據(jù)分析工具以及可視化工具缓呛,如pandas,matplotlib, seaborn等催享。

對(duì)數(shù)據(jù)做初步的分析非常有意義,比如對(duì)于分類問(wèn)題中的特征按特征觀察數(shù)據(jù)的分布强经,可以直觀的看出這個(gè)特征是否有足夠的“區(qū)分度”睡陪。

一個(gè)直觀的可視化展示也非常有助于進(jìn)行思考和挖掘數(shù)據(jù)分布上特征。

通常我們拿到是數(shù)據(jù)并不是“完美”的匿情,會(huì)存在各種各樣的情況兰迫。針對(duì)不同情況,我們需要做出不同的處理炬称。如空值處理汁果,就存在不同的方法。

除了數(shù)據(jù)本身存在的問(wèn)題玲躯,我們?yōu)榱烁玫靥崛√卣骱陀?xùn)練模型据德,也需要對(duì)數(shù)據(jù)進(jìn)行特殊處理(數(shù)據(jù)清洗)。例如在本次比賽中跷车,很多隊(duì)伍選擇將連在一起的詞拆開(kāi)(What's -> What is),替換原句中的非英文單詞等(印度語(yǔ) -> 英語(yǔ))棘利。

數(shù)據(jù)清洗的在比賽中可能起到很關(guān)鍵的作用,異常值的剔除和一些空值的補(bǔ)足會(huì)給特征提取減弱噪聲朽缴,加速模型的構(gòu)建善玫。通常數(shù)據(jù)清洗的手段有以下:

  • 補(bǔ)充空值
  • 剔除異常值
  • 數(shù)據(jù)的轉(zhuǎn)化

具體的方法在如何在 Kaggle 首戰(zhàn)中進(jìn)入前 10%博客中有詳細(xì)介紹,在此不再贅述密强。

特征工程

一場(chǎng)Kaggle比賽茅郎,最重要的就是特征工程蜗元。一個(gè)良好的特征給預(yù)測(cè)結(jié)果帶來(lái)的提升是顯而易見(jiàn)的。很多人在做特征工程時(shí)很容易沒(méi)有頭緒系冗,下面我就說(shuō)一說(shuō)我們?cè)谶@次比賽中的特征提取思路奕扣。

首先,由于Quora Question Pairs屬于自然語(yǔ)言處理的文本相似性問(wèn)題掌敬。在考慮問(wèn)題的時(shí)候惯豆,我們從兩方面進(jìn)行思考:

1 傳統(tǒng)文本特征
2 詞向量特征

在這兩個(gè)方向,我們挖掘了30+個(gè)特征奔害,獲得了大約0.30的Public LB Score循帐。

在這一部分工作做完之后,我們接下來(lái)做了另外兩部分工作舀武。

1 研究最新的關(guān)于文本相似性的論文,從論文中獲取靈感离斩。并且银舱,我們將論文中的一些算法實(shí)現(xiàn),并將其加入我們的特征跛梗。
2 查看Kaggle上面的Kernel和discussion寻馏。Kaggle是一個(gè)非常活躍和樂(lè)于分享的社區(qū)核偿,很多人都愿意把自己的思路放上來(lái)供大家參考诚欠。

從這兩部分工作中,我們又獲得了許多特征漾岳,包括了兩個(gè)一度被認(rèn)為是leaky的magic feature(這兩個(gè)特征幫我們提升了接近0.1)轰绵。加上以上特征,我們的Public LB Score來(lái)到了0.15左右尼荆。

在這一部分左腔,建議大家挖掘特征方向可以思維開(kāi)闊一些,有時(shí)候順著別人的思路捅儒,會(huì)走的比較深液样,比如本次比賽的magic feature從基于圖的角度出發(fā),挖掘到了特征巧还,賽后看到top n的經(jīng)驗(yàn)分享鞭莽,很多人在此基礎(chǔ)上,挖掘了更多基于圖的特征麸祷,取得了不錯(cuò)的效果澎怒。

還有一個(gè)就是特征間的多項(xiàng)式組合,比如兩個(gè)句子的長(zhǎng)度摇锋,可以求他們的差值丹拯,也可以求他們的和等等站超。還有不同特征間的相互組合,常常會(huì)起較為出色的效果乖酬。

模型融合

在之前的特征工程中死相,我們一直是使用的xgboost作為單模型跑。融合階段咬像,我們決定使用stacking方法算撮。

Stacking
相比 Blending,Stacking 能更好地利用訓(xùn)練數(shù)據(jù)县昂。以 5-Fold Stacking 為例肮柜,它的基本原理如圖所示:

Stacking

整個(gè)過(guò)程很像 Cross Validation。首先將訓(xùn)練數(shù)據(jù)分為 5 份倒彰,接下來(lái)一共 5 個(gè)迭代审洞,每次迭代時(shí),將 4 份數(shù)據(jù)作為 Training Set 對(duì)每個(gè) Base Model 進(jìn)行訓(xùn)練待讳,然后在剩下一份 Hold-out Set 上進(jìn)行預(yù)測(cè)芒澜。同時(shí)也要將其在測(cè)試數(shù)據(jù)上的預(yù)測(cè)保存下來(lái)。這樣创淡,每個(gè) Base Model 在每次迭代時(shí)會(huì)對(duì)訓(xùn)練數(shù)據(jù)的其中 1 份做出預(yù)測(cè)痴晦,對(duì)測(cè)試數(shù)據(jù)的全部做出預(yù)測(cè)。5 個(gè)迭代都完成以后我們就獲得了一個(gè) #訓(xùn)練數(shù)據(jù)行數(shù) x #Base Model 數(shù)量 的矩陣琳彩,這個(gè)矩陣接下來(lái)就作為第二層的 Model 的訓(xùn)練數(shù)據(jù)誊酌。當(dāng)?shù)诙拥?Model 訓(xùn)練完以后,將之前保存的 Base Model 對(duì)測(cè)試數(shù)據(jù)的預(yù)測(cè)(因?yàn)槊總€(gè) Base Model 被訓(xùn)練了 5 次露乏,對(duì)測(cè)試數(shù)據(jù)的全體做了 5 次預(yù)測(cè)碧浊,所以對(duì)這 5 次求一個(gè)平均值,從而得到一個(gè)形狀與第二層訓(xùn)練數(shù)據(jù)相同的矩陣)拿出來(lái)讓它進(jìn)行預(yù)測(cè)施无,就得到最后的輸出辉词。

Base Model 選擇如下:

  • xgboost(0.14),
  • LoesticRegression(0.19),
  • RandomForestClassifier(0.19),
  • GradientBoostingClassifier(0.19),
  • MLPClassifier(0.20)
  • LSTM(0.20)

經(jīng)過(guò)5折stacking,我們發(fā)現(xiàn)效果居然還不如單模型xgboost猾骡。What a sad story瑞躺!
經(jīng)過(guò)一番思考,我們認(rèn)為由于不同的模型使用了相同的特征做分類,模型的diversity不足兴想,于是在最后一天幢哨,采取了對(duì)每個(gè)fold隨機(jī)采樣百分之70的特征進(jìn)行stacking,此番操作減小了base model的水平嫂便,所以最后結(jié)果并沒(méi)有太大提升捞镰。

最后由于時(shí)間不足,我們最后選擇0.5Xgboost + 0.5LSTM草草了事。

賽后總結(jié)

  • 1 因盡早進(jìn)行特征管理岸售,后期有些特征并不能起到作用甚至?xí)蟹醋饔眉!?梢詥为?dú)拿出這部分特征去做一些事情凸丸,特征間的多項(xiàng)式組合沒(méi)有考慮拷邢。
  • 2 不要一頭扎進(jìn)單模型,盡早對(duì)其他模型進(jìn)行調(diào)參屎慢,后期時(shí)間很可能不夠
  • 3 及早進(jìn)行stacking瞭稼,可以提前發(fā)現(xiàn)問(wèn)題并解決。
  • 4 建立自己的PipeLine腻惠。
  • 5 對(duì)DL的方法應(yīng)該早早考慮和實(shí)驗(yàn)环肘。

引用參考

如何在 Kaggle 首戰(zhàn)中進(jìn)入前 10%
在此特別感謝引用博客作者dnc11994學(xué)長(zhǎng)和小松stuart大叔在比賽期間的問(wèn)題解答。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末集灌,一起剝皮案震驚了整個(gè)濱河市悔雹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欣喧,老刑警劉巖荠商,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異续誉,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)初肉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門酷鸦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人牙咏,你說(shuō)我怎么就攤上這事臼隔。” “怎么了妄壶?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵摔握,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我丁寄,道長(zhǎng)氨淌,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任伊磺,我火速辦了婚禮盛正,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屑埋。我一直安慰自己豪筝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著续崖,像睡著了一般敲街。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上严望,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天多艇,我揣著相機(jī)與錄音,去河邊找鬼著蟹。 笑死墩蔓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的萧豆。 我是一名探鬼主播奸披,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涮雷!你這毒婦竟也來(lái)了阵面?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤洪鸭,失蹤者是張志新(化名)和其女友劉穎样刷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體览爵,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡置鼻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜓竹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箕母。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖俱济,靈堂內(nèi)的尸體忽然破棺而出嘶是,到底是詐尸還是另有隱情,我是刑警寧澤蛛碌,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布聂喇,位于F島的核電站,受9級(jí)特大地震影響蔚携,放射性物質(zhì)發(fā)生泄漏希太。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一酝蜒、第九天 我趴在偏房一處隱蔽的房頂上張望跛十。 院中可真熱鬧,春花似錦秕硝、人聲如沸芥映。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奈偏。三九已至坞嘀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惊来,已是汗流浹背丽涩。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裁蚁,地道東北人矢渊。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枉证,于是被迫代替她去往敵國(guó)和親矮男。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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