参加kaggle竞赛是怎样一种体验?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了参加kaggle竞赛是怎样一种体验?相关的知识,希望对你有一定的参考价值。

参考技术A

首先说,绝大部分的Kaggle比赛是Data Mining(DM)比赛(除少数是和Discrete Optimization还有Computer Vision(CV) 有关),最重要的是和Machine Learning(ML)关系不大。这是很多人一个误区,往往希望在Kaggle上学到很多ML的知识。Kaggle教给我的第一件事情,就是让我清晰领会到了这两者之间的不同:ML一般从模型或者算法出发,讲的是模型或者算法本身存在的不合理的地方,然后提出新的假设,从而去优化模型或算法。在这个过程中并不针对某一个具体的特殊的问题。而DM恰恰相反,它是从数据本身问题本身出发,希望针对问题的特性来设计最适合的方案。关键是在于对问题和数据的理解。之前总是觉得,DM/CV的paper都好水,到处找一个应用套。在我想明白这个问题之后,我就开始懂得欣赏DM/CV的paper。

其次,我觉得在一个DM的比赛中,最能锻炼到的是对于数据的"嗅觉"。举一个最有趣的例子,往往在比赛中会存在Data Leakage的情况,也就是说,某些和label相关的信息不小心会泄漏在feature中。有人通过这样的feature取得了很好的成绩之后,往往有人觉得非常鄙视。当然我不是说Data Leakage是一件好事情,但是在这背后往往隐藏的是发现leakage的人对于数据本身深刻的认识。这并不是每个人都能做到的。换句话讲,就算没有leakage,这群人还是会排名很前。在Kaggle的比赛中,能收获最大的就是这种嗅觉。这其实也把我自己训练成了一个data believer:也许一次两次的巧合真的是意外,但是如果巧合总是持续发生,那么背后一定有一个原因。

参考技术B

Kaggle主要是以Data Mining的比赛为主,那么这个答案就非常直接了:Feature Engineering无数经验告诉我们,做Kaggle比赛如果是抱着Machine Learning的态度,沉迷于facny的模型而忽略数据本身,一定会死得很惨很惨!

当然,基本的ML知识还是有的。在比赛中,最常用的分类器一般是Gradient Boosting Tree(GBDT)和Random Forest(对,你没看错,不是那个在教科书中推Dual时让很多人痛不欲生的SVM)一些常见的预处理技巧,比如PCA,KMeans,TF/IDF,Hashing等等都还是必须的。这里就不展开讲了。

最后,但是非常关键的一点是Ensemble 从KDD Cup到Imagenet,我从来没见过ensemble不会改善结果的情况,只是多与少的问题。不做ensemble就意味着你自己告别了一大块宝藏。

参考技术C

参加过几次,只拿过几个前10%。

下面是我的一些个人经验:

1. 一定做Ensemble,甚至是对submissions做ensemble。

2. 目的如果单纯是拿好的排名,那么就找人多的比赛参加,因为那些参加人数上千的比赛里面大批僵尸参赛者,超过他们就可以进25%了。

3. 对大多数比赛来说,Feature Engineering比选用什么模型更重要

4. 多看论坛,大家会在比赛进行中讨论很多泛泛的思路,对自己可能有帮助。有时候会有人发布比较好的Beat the benchmark代码,仔细思考为什么这个模型能够work,在上面涂涂改改有时候效果更好。

5. 永远相信自己的cross validation结果,甚于public leaderboard,结束前后的榜单常常震动巨大,具体例子参见 Description - Africa Soil Property Prediction Challenge 和 Description - Higgs Boson Machine Learning Challenge6.

每次比赛最有价值的东西就是结束之后的方法分享帖,大家的方法都很不一样,挑一个说得比较全面清晰的方法,自己尝试重现一个一样或者接近的效果,然后再尝试改进它,这个过程能学到非常多东西。

以上是关于参加kaggle竞赛是怎样一种体验?的主要内容,如果未能解决你的问题,请参考以下文章

Kaggle大神:竞赛代码别删,这都是宝藏

Kaggle竞赛丨入门手写数字识别之KNNCNN降维

Kaggle大神:竞赛代码别删,这都是宝藏

Kaggle大神:竞赛代码别删,这都是宝藏

阿里算法大佬:Kaggle首战拿金牌总结!

用python参加Kaggle的些许经验总结