Kaggle正式赛首战top3%分享,小白献给机器学习新手

来源:互联网 发布:乒乓球入门知乎 编辑:程序博客网 时间:2024/05/22 06:28

8月15号结束的instacart kaggle比赛首战 top3% 69名。代码我就不贴了,第二第三的代码论坛里都找得到。我这里主要讲方法和注意事项:

以我不深的比赛经历,我觉得kaggle主要是一个靠特征工程和模型调参,和模型融合的比赛


第一 论坛和kernel里一般能够找到开源代码,先从得分最好的代码开始起步。我当时就是找到了得分最好的R代码,但当时我并不会R语言,所以我尝试从头到尾翻译成python。 但是翻译着翻译着就学会R了,后来就懒得改直接用R做特征工程了。当时运行这份代码就直接到了top14%,当然比赛结束还有一个月,大家也没有认真。


第二,可以尝试论坛里别人的介绍的方法,kaggle可能和国内的比赛很不一样,因为外国人非常喜欢分享,可能非常核心的东西也会分享,我当时通过着两篇论坛文章加了非常多的特征提升很大: 第一篇是关于word2vec的,第二篇是 How many features do you make? 这里我获得了大量特征,这是我比别人的特征工程做的好原因之一。另外还有一篇关于KDD特征工程的论文,我记得那时我经常一边看论文一边用R做特征工程。


第三,还是时刻关注论坛真的非常重要,其实instacart这个比赛是很有水平的,关注数学原理,其中F1优化本来是比赛的核心,但是在比赛快2周结束时,一个德国人把这个核心代码给开源了。导致前30到前200名差距只有特征工程和模型调参,融合。我当时名次直接升到90多,后来通过特征工程到了52名


第四 这个比赛快结束一周时,我记得当时我是52名,53名的人把自己的整个项目给开源了。而且实际上53名的代码的GBDT算法可以到更好的分数,我一开始都没有关注他的算法,导致名次一直退到150名,比赛结束快2天时,我发现融合他的GBDT模型,分数能大幅提升。于是我融合了他的GBDT模型,然后调整融合比率,最好的时候升到40多名。但比赛快结束的时候下降到69。因为我没有GPU环境,所以最好配置好GPU环境再用自己的特征运行53名的GBDT已经来不及了。


第五 千万不要多账号,我因为多账号,导致主号被删除比赛了。只留下了一个top5%的小号,相当悲剧。


最后我租了一台32核128G内存的服务器,如果内存足够大,你做特征工程时会非常舒服。 其实这个比赛让我学会了很多,最重要的是诚信,我努力了1个半月因为诚信问题没有了荣誉,以后工作也是。跟外国人打交道,更不能有cheating behavior,我觉得是像我这样的国人缺乏的。

另外看了我的文章你大概也知道,kaggle可以通过论坛学习方法,再花时间去试。如果你有幸碰到一个instacart这种,数据量大,CV稳定,你又有不错的硬件,时间充裕。有吴恩达的machine learning的机器学习基础,那么你很可能能进前5%,当然如果不想被取消成绩,千万要讲诚信,不要多账号,只要有一个提交一样就有可能被直接踢出比赛。


祝好






原创粉丝点击