kaggle比赛 年轻人的第一块金牌:我是如何成为Kaggle全网第一的

栏目:教育 2021-09-26 09:49:54
分享到:

选自towardsdatascience

机器心脏编译

机器智信编辑部

在卡格尔比赛中获得金牌已经是一个挑战,成为内核特级大师更是不可避免。近日,毕业于莫斯科国立大学的数据科学家Andrey Lukyanenko在一次比赛中获得了Kaggle金牌,在《内核一代宗师》中排名全网第一。这篇文章是他的心路历程。

参加卡格尔比赛对任何人来说都是一个严峻的挑战。你需要花费大量的时间和精力去学习新知识,尝试新技能,努力取得高分。但这些往往是不够的,因为你的竞争对手可能有更多的经验,更多的空空闲时间,更多的硬件甚至其他莫名其妙的优势。

不过,似乎也不是完全不可能拿下卡格尔金牌甚至全网第一。一位来自俄罗斯的数据科学家写下了他的经历,供读者参考。

以下是原文内容:

虽然他刚刚在比赛中获得了第一枚金牌,但卢克扬恩科已经在内核中排名第一。

过去,我能够在一些比赛中获得银牌,有时是因为运气,有时是因为我自己做了很多工作。但是尽管花了很多时间,我也只能在很多比赛中获得铜牌。

竞赛评论

当我看到一个新的比赛将在五月底开始时,我立即对它产生了兴趣。这是一个特定领域的竞赛,旨在预测分子中原子之间的相互作用。

众所周知,核磁共振技术利用类似于核磁共振成像的原理来了解蛋白质和分子的结构和动力学。世界各地的研究人员进行核磁共振实验,以进一步了解环境科学、制药科学和材料科学中分子的结构和动力学。

在这场比赛中,参赛者试图预测分子中两个原子之间的磁相互作用。目前最先进的量子力学方法可以计算这些耦合常数,并且只需要一个3D分子结构作为输入。但是这些计算消耗大量资源,所以很少使用。

因此,如果机器学习方法能够预测这些值,就真的可以帮助药物化学家以更快的速度和更低的成本看到分子结构。

比赛开始时

我个人通常为新的Kaggle竞赛编写EDA内核,所以这次也不例外。在这个过程中,我发现这个比赛非常有趣和特别。我们已经获得了关于分子及其内部原子的信息,因此我们可以使用图形来表征分子。Kaggle比赛中常用的表格数据处理方法是利用大量的特征工程,建立梯度提升模型。

在我最初的尝试中,我也使用了LGB,但我知道有更好的方法来处理图表。这个挑战让我着迷,所以我决定认真参加比赛。

我没有任何相关领域的知识,所以我决定完全使用机器学习技术:大量的特征工程,创建额外的元特征等等。和往常一样,我发表了关于内核的作品。从下图可以看出,它们非常受欢迎。

这一次,这种方法在排行榜上获得了很好的分数,我得以保住银牌的位置。

此外,跟踪一些最新的Kaggle内核和论坛视图也非常重要。

其中,论坛和Kaggle Kernels真的帮到了我。从比赛开始到结束,我浏览了所有的Kernels和论坛帖子,里面包含了很多不可错过的有用信息。甚至一些不太受欢迎的内核也会包含有趣的新特性。论坛帖子里会有别人的意见,也有助于提高比赛分数。

组建团队

几乎从一开始,我就意识到领域专业知识会给团队带来巨大的优势,所以我寻找每一条这样的信息。当然,我跟踪了几位活跃的专家,阅读了他们写的文章和他们创建的内核。

有一天,我收到了鲍里斯的邮件,他是这个领域的专家,认为我们的技能可以互补。总的来说,我喜欢在比赛中单打独斗,但这次,团队合作似乎是更好的选择。事实证明是真的。

合并方法

起初,我们的方法有很大的不同。我使用功能工程技术,而鲍里斯致力于创建描述符。过了一段时间,我们发现我的模型在一些原子对类型中表现得更好,而他的模型在其他情况下表现得更好,因为我们针对不同的类型训练了不同的模型。

幸运的是,Psilogram加入了我们的团队。不久,他的模型显示出比我们的更好的性能。另一名成员Bojan帮助我们进一步提高了成绩。他们都是优秀的机器学习专家。

图形神经网络

当时我们已经在这个比赛中看到了神经网络的潜力:著名的卡格尔大师恒发表了一个模型的例子。

过了一段时间,我甚至可以在自己的PC上运行这个模型,但结果不如LGB模型。然而,现在我的团队知道,如果我们想实现更高的目标,我们需要使用这些神经网络。

我们让Christof加入我们的团队,他可以快速构建一个新的神经网络。因此,我们停止训练LGB,因为LGB远远落后于克里斯托夫构建的神经网络。

神经网络时代

从那以后,我在团队中的角色变成了助理。我用我们的神经网络做了很多实验:尝试使用不同的超参数和不同的架构,对训练计划和损失进行微小的调整。有时,我会根据我们的预测做EDA,找出好的和坏的例子,然后利用这些信息进一步改进模型。

寻找新方法是我的主要贡献之一

我看过很多关于神经网络架构的论文,包括EAGCN、3DGNN等。

我试过不同的损失函数,比如Huber。我甚至找到了一篇关于回归的焦点损失函数的论文,但实现起来并不可行。

当然,我也尝试了一些新的流行优化器,比如RAdam和Ranger,但是简单的Adam在这次比赛中更有用。

但最终克里斯托夫实现了建筑,给我留下了深刻的印象,也给了我启发。

五金器具

好的硬件对于训练这些神经网络非常重要。我们使用了大量的硬件,但我们经常使用kaggle内核:您可以使用P100在四个kaggle内核中同时训练模型,因此即使没有额外的硬件,我们也可以赢得金牌。

结果和结论

我们的最终解决方案获得了第八名,并获得了金牌。

值得一提的是,我们队可以拿到比-3 Imae更好的分数。楼主在这个帖子里说达到-3是一个惊人的成就:https://www . kaggle . com/c/champs-scalar-coupling/discussion/98375 # 569312

事实上,我们做到了!

摘要

我从这次比赛中学到了很多。一般来说,要在卡格尔取得成功,我们需要:

浏览Kernel和论坛,会提供很多有用的信息;

为屡败屡战做好准备。当你试图想办法提高分数时,大部分都不会奏效,但不要气馁;

不断寻找新的想法,新的论文和核心文章。你永远不知道下一个魔法工具会从哪里来;

在团队中搭建验证效果的机制,让工作结果更直观;

一个强大的团队是由很多不同专业的人组成的,我们要覆盖不同的领域;

Kaggle比赛很有挑战性,当然我们也可以在这个过程中获得很多乐趣:)

我很幸运能和这些优秀的人一起工作,谢谢他们!

这篇文章是为机器的心脏编写的。请联系本微信官方账号进行授权。

-