大家如何看待最近Kaggle的賓士比賽最後排名嚴重波動?

先甩鏈接:https://www.kaggle.com/c/mercedes-benz-greener-manufacturing/leaderboard

主辦方用19%來做public,81%做private也是比較喜感。最後PublicBoard第一名掉了兩千七百多名,PrivateBoard第一名提升一千五百多名(只提交6次),第六名的結果是kernels 跑出來的。


先說掉名次

比賽的一開始就有人教大家怎麼probing leaderboard,如果用那些被探測到的數據,自然就很容易在LB混到好名次,所以比賽完了自然要掉名次。其次跟19%,81%沒啥關係,照說本來就該用local CV的,去過擬合public board的只能說根本還沒入門機器學習。

再說漲名次

這主要是數據太小,很多 minor patterns機器學習方法也分辨不出是outlier 還是真的有用的feature,所以結果大部分人的結果就是3~4個cluster

其次用r2_score對outlier 太敏感了,一個outlier能不能預測到意味著0.001的差距,而第一名和第兩百名也就差3個0.001,而通過調整一個simple xgboost模型的random seed就有概率可能通過minor patterns預測出outlier,所以也就出現第六名狗屎運的情況。

就說我參賽的經歷吧,我就發現X236=1的時候全是大數,然而總共也就只有兩個樣本,天知道是outlier還是有價值的pattern,像隨機森林和線性模型基本都會忽略這種聯繫,但是gbdt這種對outlier敏感的會在某些random seed的情況下體現出這個聯繫的影響。

所以我在最後提交的時候選了一個最好local cv的,另外一個只改了一個數,就是對應X236=1的那個數據的值,很幸運,這一個值就讓我提高了0.0011,拿個銅牌。

其實和第一名也就差三個outlier的預測,反正我覺得第一名應該用的也就是simple xgboost模型和一個lucky random seed number


那些本以為獎金到手的,估計是要哭暈在廁所了。

public board才用19%的數據,結果一堆人過擬合到了這上面。

估計是Benz的人不太懂機器學習吧,才發生了這麼嚴重的事故。


比較低質量的一個比賽,本來是一個周末的data science hackathon 硬生生的持續了幾個月,數據集本身可供分析,來feature engineering 的空間實在有限,代碼完全不變,只變動一下random seed就能從排行榜上從第六名掉到1000+,所以可想而知即使是最後的幾個winning solution 本身有多麼的fragile...

不過通過這個比賽,特別是經歷了排名大幅度下降的人以後會更加明白不要盲目迷戀Public LB,以及建立一個可靠的train-validate 策略來過去可靠的的local CV的重要性。。

總的來說,這樣的比賽,沒必要投入太多精力,不用太去追究結果。。


參加的第一個kaggle比賽,一覺醒來發現自己提高了700多名還是蠻開心的 : )


推薦閱讀:

Kaggle 入門 1.3——Titanic Solution Using speedml
Kaggle入門系列:(一)機器學習環境搭建
Kaggle—So Easy!百行代碼實現排名Top 5%的圖像分類比賽
kaggle:Titanic: Machine Learning from Disaster,有什麼比較好的feature可以提取,哪位大神hit 80%了?
2016 CCF大數據與計算智能大賽的開源資料整理

TAG:深度學習DeepLearning | Kaggle |