选自towardsdatascience
作者: Andrew Lukyanenko 机器之心编译 机器之心编辑部能在 Kaggle 竞赛中取得金牌已经是一项挑战了,而成为 Kernel Grandmaster 甚至是可遇不可求。而近日,毕业于莫斯科国立大学的数据科学家Andrey Lukyanenko在一次竞赛中达成Kaggle金牌,并在Kernel Grandmaster排名全网第一。本文是他的心路历程。
参加Kaggle竞赛对于任何人来说都是一项严峻的挑战。你需要花费大量时间和精力来学习新知识、尝试新技巧,努力获得高分。但这些往往还是不够,因为你的竞争对手可能拥有更多经验、更多空闲时间、更多硬件甚至其他莫名其妙的优势。
当看到一场新的竞赛将于5月底启动时,我就立即对它产生了兴趣。这是一场特定领域的竞赛,旨在预测分子中各原子之间的相互作用。
就自身而言,我通常会为新的Kaggle竞赛编写EDA内核,所以这次也不例外。在这一过程中,我发现这次竞赛非常有意思,也非常特别。我们获得了有关分子及其内部原子的信息,所以可以使用图来表征分子。Kaggle竞赛中常见的表格数据处理方法是利用大量的特征工程和构建梯度提升模型。
合并方法 起初,我们的方法存在很大分歧。我用的是特征工程技术,而Boris则致力于创建描述符。一段时间之后,我们发现我的模型在一些原子对类型上表现更好,而他的模型在其他情况下表现更佳,因为我们为不同的类型训练了不同的模型。 幸运的是,Psilogram加入了我们的团队。没过多久,他的模型就表现出了优于我们模型的性能。另一名成员Bojan帮助我们进一步改进了结果。他们都是很棒的机器学习专家。
图神经网络
神经网络的时代
从那时起,我在团队中的角色就变成了辅助。我用我们的神经网络进行了多次实验:尝试使用不同的超参数和不同的架构,对训练计划和损失进行微小的调整等。有时,我会基于我们的预测进行EDA,以发现好的和不好的例子,然后利用这些信息进一步改进模型。
-
我看了很多关于神经网络架构的论文,包括EAGCN、3DGNN等;
-
我尝试了不同的损失函数,如Huber。我甚至找到了一篇用于回归的焦点损失函数论文,但实现起来并不可行;
-
当然,我还尝试了RAdam、Ranger等新的热门优化器,但简单的Adam在此次竞赛中更加好用。
-
但最后,还是Christof实现了架构,这给我留下了非常深刻的印象,也令我颇受启发。
硬件
结果和结论
我们最后的解决方案拿到了第八名,赢得了金牌。
总结
从这次竞赛中我学习到了很多东西,总体来说,想要在Kaggle上成功我们需要:
-
浏览Kernel和论坛,其中会提供大量有用的信息;
-
准备好屡败屡战。当你试图找到一种可以提高分数的方法时,大多数是行不通的,但不要气馁;
-
不断寻找新的想法、新的论文和核心的文章。你永远不会知道下一个神奇工具会从哪里出现;
-
在团队内构建一个验证效果的机制,从而令工作结果更加直观;
-
一个强大的团队是由很多不同特长的人组成的,我们应该涵盖不同领域;
-
Kaggle比赛非常具有挑战性,当然在这个过程中我们也可以收获诸多乐趣:)
我很幸运可以和这些了不起的人一同工作,感谢他们!
原文链接:https://towardsdatascience.com/a-story-of-my-first-gold-medal-in-one-kaggle-competition-things-done-and-lessons-learned-c269d9c233d1
本 文为机器之心编译,转载请联系本公众号获得授权 。 ✄------------------------------------------------ 加入机器之心(全职记者 / 实习生):[email protected] 投稿或寻求报道:content@jiqizhixin.com 广告 & 商务合作:[email protected]