想在Kaggle比赛中进入前4%,你需要掌握哪些诀窍?

全文共5055字 , 预计学习时长13分钟

想在Kaggle比赛中进入前4%,你需要掌握哪些诀窍?
文章图片
图源:unsplash
如果你一直关注Kaggle新闻 , 那对MechanismsofAction竞赛应该不陌生 , 该比赛由哈佛创新科学实验室举办 , 近日刚刚落下帷幕 。 在这场比赛中 , 我和搭档AndyWang成功进入前4%——在4373支队伍中排第152名 , 对此我感到十分骄傲 。
其实我们对于Kaggle比赛挺陌生的 。 我们不是机器学习领域的专业人士 , 只是在网上在线课程学习了Python和机器学习而已 。
毋庸置疑 , 我们并没有拿到金牌 。 整场比赛前10名才有资格获得金牌 , 难度非同一般 。 金牌选手需要给出的方案往往非常复杂 。 下面这幅图就是排名第一的队伍所提出的7-model方案中的一部分:

想在Kaggle比赛中进入前4%,你需要掌握哪些诀窍?
文章图片
图中有很多复杂网络拓扑结构
Kaggle通常会采访获胜者 , 从而深入了解他们的解决方案(大多都是非常优秀的方案) 。 但是 , 我发现这些获胜者很少提及如何能在这种类型的竞赛中做到“高效” 。 花费大量的时间设计方案 , 一点一点地提高成绩 , 或许能让参赛者获得金牌以及数量可观的现金 。 但是对于大多数人来说 , 这种方式的实操性并不高 。

想在Kaggle比赛中进入前4%,你需要掌握哪些诀窍?
文章图片
获得金牌与获得3万美元奖金也许只有0.0002分之差 。
这篇文章中 , 我会列出我和搭档所学、所用的秘诀和小技巧 。 我们还在不断地学习和摸索 , 希望这篇文章能够给大家带来助益 。
总的来说 , 我们的秘诀有两点 , 分别是技能普适性和方式高效性 , 之后还可以再细分到技术层面和策略层面 。

想在Kaggle比赛中进入前4%,你需要掌握哪些诀窍?
文章图片
技术层面技巧
下面的技巧偏向技术层面 。 这些比较具体的专业技巧可以用于编程方案 , 在Kaggle比赛优秀的参赛作品中也很常用 。
完美无缺的特征工程
如果说我从这次比赛中学到了什么 , 那就是“特征工程是关键” 。 简单来说 , 特征工程就是提取已有特征并不断添加新的特征 , 这可以是简单的将两列相乘 。
在常用的机器学习方法中 , 神经网络可视为神奇的万能方案 , 据说神经网络可以从数据中学习任何东西 。 不过事实并非如此 , 大多数时候 , 一个模型要想通过数据学习的话 , 还需要人类从旁协助 。
模型的优劣取决于数据的好坏 , 最好提供尽可能多的信息让原始数据有意义 。 对特征工程有帮助的两个观点:
·主成分分析法/特征降维 。 我们常说''这些都是数据中最重要的结构因素'' , 并为模型设计付出很多时间和心血 , 因此特征降维是很好的特征工程策略 。 主成分分析缩减版可以用来替换数据 , 或者将主成分分析缩减版的特征并联到数据中(可能更成功) 。 除此之外 , 局部线性嵌入等流性学习/特征降维算法也同样适用 。
·添加数据 。 若多列之间的规模相当 , 则可以添加简单的数据 , 如平均值和方差 , 也可以添加更高阶的数据 , 如峰度或偏度 。 例如 , 数据点之间的方差#ofcarsmovinginLosAngeles , #ofcarsmovinginSantaMonica , #ofcarsmovinginBeverleyHills等等 , 可以提供有用的信息 , 来观察天气带来的不同影响 。 如果方差较小 , 那么天气对所有城市的影响都非常相似 。 模型可以对此进行解释 , 并帮助预测 。
特征工程是一门艺术 。 最重要的是要记住在进行特征工程时要考虑到数据环境 。 如果数据在现实生活中没有意义(例如将两个彼此没有关系的列相乘) , 很可能不会帮助模型更好地理解数据 。

想在Kaggle比赛中进入前4%,你需要掌握哪些诀窍?
文章图片
图源:unsplash
严格把控功能选择
全力以赴地进行特征工程是很好的做法 , 但同样重要的是要记住 , 过多的数据会让模型不堪重负 , 给学习重要内容带来困难 。 精确判断哪些特征要留存 , 又有哪些特征要剔除 , 可以对模型大有裨益 。
通常 , 删除列时要尽量保守一些 。 数据不可多得 , 所以只有当你确定数据不会有什么用处时 , 才可以把它删除 。
·仔细观察数据 。 特别是有很多分类变量的时候 , 可能会有多余的列出现 。 例如 , 比赛中偶尔会有“对照组”样本的目标总是0 , 去掉这一数据往往会更好 。
·获取信息 。 你可以计算每个特征对最终模型的预测提供的信息增益 , 然后删除几乎不提供任何信息的特征 。