一文走进kaggle

发布时间:2023-04-23 14:30

这篇文章将主要根据一个Kaggle比赛的Data,Notebooks,Discussion,Leaderboard,Rules,team几个环节的关键部分进行讲解,原文链接我会在最后给出,这里我只总结摘录一些我个人比较感兴趣的点,写的不清楚,请见谅,有问题可以留言讨论.
一文走进kaggle_第1张图片

一 比赛相关条例

1. 比赛时间安排

注意开始时间组队截止时间最终提交时间。一般一个比赛会持续几个月,最终提交时间就是比赛结束的标志。组队截止时间一般是比赛结束前一周,过了这个时间点就不允许再组队了。留意好这些时间点,对你把握比赛的进度至关重要,尤其是用业余时间打比赛的上班族。很多比赛的数据量比较大,模型跑下来很耗时,如果到最后半个月才开始发力,会发现时间不够用,很多想法都没机会尝试。有大牛分享自己的时间安排是:在比赛刚开始的时候会多花点时间做探索,把pipeline 搭起来,接下来可以少花点时间,平时有什么想法可以直接测试,最后一个月或半个月再做集中冲刺。

2. Data

(1) kaggle 用户的每个 kernel 可以有 16G 的内存和 4 核CPU,这足够打多数比赛了。另外,最近还提供了 GPU,在新建 kernel 的时候可以选择开启 GPU,但当打开 GPU 时,CPU 和内存资源会少一些,大家可以根据情况选择使用。(尚未实践)
(2) 如果不设置 Private LB(即所有的测试数据都用于计算 Public LB),选手不断地从 Public LB(即测试集)中获得反馈,进而调整或筛选模型。这种情况下,测试集实际上是作为验证集参与到模型的构建和调优中来。Public LB上面的效果并非是在真实未知数据上面的效果,不能可靠地反映模型的效果。划分 Public LB 和 Private LB 这样的设置,也在提醒参赛者,我们建模的目标是要获得一个在未知数据上表现良好的模型,而并非仅仅是在已知数据上效果好。(LB, leaderboard)

3.LeaderBoard

(1) 排名区,分 public LB 和 private LB。比赛方会将 test 数据集中一部分(比如 30%)拿出来做为 public LB 评分和排名,剩下的部分作为 private LB(也就是最终结果)的评分和排名。这个意思是,你下载到的测试集,其实分为两部分,但是是怎么分的,故意不让你知道,而是混在一起的,当你把所有测试数据的的结果提交以后,Kaggle服务器会根据事先的划分方法,以private LB的结果作为你的最终排名.而Public LB的则只是比赛过程中的排名.你每天都可以提交并查看自己的答案在 public LB 的得分和排名情况,在比赛结束前需要选择两个提交作为自己的最终答案,比赛结束后,平台会计算你的答案的 private LB 得分并自动挑选得分高的一个作为你的最终成绩
(2) 在讨论区你会经常听到大家讨论 CV score、LB score,指的就是你模型本地交叉验证的得分和提交后的 public LB 得分。
(3) 本地模型最优的情况下,你的public越低,你的private才能越高,我的理解是,当你的本地模型已经达到最优了,最测试集总体的准确率会相对稳定,可以想象成是一个常量,用公式表示:测试集总体准确率 = public准确率 + private准确率.

4. Rules

(1) 提交次数,这里会写明每天允许的最大提交次数,一般是 5次,也有比赛时 3次的。假如一个比赛持续时间是三个月,那么总提交次数差不多就是 5×90=450 次;
(2) 很多人为了躲过提交次数的限制或者“节省提交次数”,专门注册了小号,这是很危险的,这被称为 multiple accounts,是会被 kaggle 的反作弊系统侦察出来的。
(3) 组外私自分享代码和结果,这也是明令禁止的。组队之后队员之间可以分享,或者通过公开的 kernel或discussion区分享。同样,如果被检测出不同队伍或个人间有相似的结果,也会被移除最终榜单。

二 比赛分类

(1) kaggle 平台上的比赛分为挖掘、图像、语音和 NLP 四类。其中挖掘类主要面对的是结构化数据,也就是表格数据,包括了各式各样的预测问题(预测销量、点击率、推荐排序等)。主要的共性就是理解数据,理解问题,从数据中找到有用的信息用来预测,这类问题胜负更多的是在特征上。对于图像问题,可能就较少涉及到特征了。图像问题现在主要用到深度学习的相关技术,基于深度学习做了很多改进或者演绎,已经完全不需要在特征层面上去做什么了。
(2) 新手尽量选择中等规模的数据,这样数据处理和模型训练的时间更短,方便尝试尽可能多的方法。新手缺乏经验,可以通过多尝试来弥补,但如果选择的数据集太大,尝试的时间成本和计算成本都很大,不管从时间还是精力层面考虑,都是很大的障碍。
(3) 尽量选择有缺失值、有很多类别特征的数据集,这样你可以借鉴前人经验对这些特征做各种变换、尝试,时不时能收获一些小惊喜,甚至最后还能取得一个不错的成绩。

三 比赛技巧

(1) 先训练一个baseline model, 然后在这个基础上不断优化、提升。我这里要补充的一个点是“零模型”,就是不用模型去做预测,一般就用全零或者全均值去做提交。这里我理解是,零模型其实应用范围有限,最好是0/1分类.
(2) GBDT已成为挖掘类比赛的主流算法,现成的包有xgboost、lightgbm、catboost,lightgbm因为速度快、准确度高脱颖而出。所以这次比赛,lightgbm 仍是主流的工具。(GBDT 的全称是 Gradient Boosting Decision Tree,梯度提升树,在传统机器学习算法中,GBDT算的上TOP3的算法。)
(3) 建立本地评估体系. 模型评估体系没建起来,其他任何探索都是盲目的,因为你没法确定好坏。这个很有讲究,你得判断 public LB 和 private LB 的得分是不是一致的或高度相关的。否则你可能在接下来的几个月中“一直努力拟合public LB”,结果却偏离了 private LB,这就是为何大牛一直告诫我们“Trust your CV”的原因。
(4) 特征重要性和特征工程.前期适当做一些调参,获取一组相对可以的参数就可以了,不用太花太多时间调参,因为它起得作用很有限。用这组参数和基模型来输出特征重要性。挑选重要的特征(比如top10)进行分析和构建新特征,然后测试,然后扩大范围(比如top20)重复以上过程。这一步是拉开差距的关键,也是花最多精力的地方。在这个过程中需要不断地关注discussion和kernel区,多看别人时怎么提取特征的,多看别人的 EDA,多尝试,说不定就有启发你的地方。
(4) 模型融合. 特征工程和模型融合是打 kaggle 比赛的两大利器,比赛后期基本就是尝试各种模型融合了。对于模型融合,大牛的观点:真正重要的是要有两三个强模型和很多相关性很小的弱模型,模型多样性很重要,弱一点也没关系。

Kaggle比赛介绍到这里,起码的了解应该没问题了,下面贴出一些kaggler对比赛的看法或者总结:

  1. https://www.zhihu.com/question/24533374/answer/34631808
    作者:Naiyan Wang
    链接:https://www.zhihu.com/question/24533374/answer/34631808
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    Kaggle的比赛究竟锻炼的是什么能力?
    首先说,绝大部分的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:也许一次两次的巧合真的是意外,但是如果巧合总是持续发生,那么背后一定有一个原因。
    感悟:其实打kaggle比赛,最重要的是特征工程.

参考文章:
https://blog.csdn.net/appleyuchi/article/details/99823019

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号