点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

能在 Kaggle 竞赛中取得金牌已经是一项挑战了,而成为 Kernel Grandmaster 甚至是可遇不可求。而近日,毕业于莫斯科国立大学的数据科学家Andrey Lukyanenko在一次竞赛中达成Kaggle金牌,并在Kernel Grandmaster排名全网第一。本文是他的心路历程。

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

但是,获得 Kaggle 金牌,甚至取得全网第一的排名似乎也不是完全不可能。一位来自俄罗斯的数据科学家就写下了他的心得,供读者参考。

以下为原文内容:

虽然刚刚在竞赛中拿下第一块金牌,但Lukyanenko已经在Kernel上排名第一了。

以前,我能在一些竞赛中获得银牌,有时归功于运气,有时得益于自己做了大量工作。但尽管我花费了大量时间,还是只能在很多竞赛中获得铜牌(甚至一无所获)。

竞赛回顾

当看到一场新的竞赛将于5月底启动时,我就立即对它产生了兴趣。这是一场特定领域的竞赛,旨在预测分子中各原子之间的相互作用。

众多周知,核磁共振(NMR)技术利用类似于MRI的原理来了解蛋白质和分子的结构与动态。全世界的研究人员进行NMR实验来进一步了解跨环境科学、药物科学和材料科学等领域的分子的结构与动态。

在此次竞赛中,选手们试图预测一个分子中两个原子之间的磁相互作用(标量耦合常数)。当前量子力学最先进的方法可以计算这些耦合常数,并且只需要一个3D分子结构作为输入即可。但这些计算会耗费大量资源,所以不常使用。

因此,如果机器学习方法可以预测这些值,则能够真正地帮助药物化学家洞见分子结构,并且速度更快、成本也更低。

竞赛之初

就自身而言,我通常会为新的Kaggle竞赛编写EDA内核,所以这次也不例外。在这一过程中,我发现这次竞赛非常有意思,也非常特别。我们获得了有关分子及其内部原子的信息,所以可以使用图来表征分子。Kaggle竞赛中常见的表格数据处理方法是利用大量的特征工程和构建梯度提升模型。

在最初的尝试中,我也使用了LGB,但知道还有更好的方法来处理图。这种挑战令我着迷,所以决定认真参与到竞争之中。

我没有一点相关领域知识(上一次看化学式还是在学校时),所以我决定完全使用机器学习技术:大量特征工程、创建折外元特征(out-of-fold meta-feature)等等。和往常一样,我在Kernels上公开了自己的工作。从下图中你可以看到,它们很受欢迎。

这次,该方法在leaderboard上取得了相当好的得分,我也得以保持白银段位。

此外,追踪当前一些最新的Kaggle Kernels和论坛观点也非常重要。

其中真正帮到我的是论坛和Kaggle Kernels。从竞赛开始直至结束,我浏览了所有的Kernels和论坛帖子,这其中包含很多不容错过的有用信息。即使是一些不太流行的Kernels也会包含有趣的新功能。论坛帖子里会有其他人的一些观点,这也有助于提高竞赛分数。

组建团队

几乎从一开始,我就意识到,领域专业知识将为团队带来很大优势,因此我寻找每一条这样的信息。当然,我关注了几个活跃的专家并拜读了他们撰写的文章以及创建的kernels。

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

合并方法

起初,我们的方法存在很大分歧。我用的是特征工程技术,而Boris则致力于创建描述符。一段时间之后,我们发现我的模型在一些原子对类型上表现更好,而他的模型在其他情况下表现更佳,因为我们为不同的类型训练了不同的模型。

幸运的是,Psilogram加入了我们的团队。没过多久,他的模型就表现出了优于我们模型的性能。另一名成员Bojan帮助我们进一步改进了结果。他们都是很棒的机器学习专家。

图神经网络


那时我们已经看到了神经网络在此次竞赛中的潜力:著名的kaggle大师Heng发布过一个MPNN模型的例子。

一段时间之后,我甚至可以在自己的PC上运行这个模型,但是结果并不如LGB模型。但无论如何,现在我的团队知道了,如果想达到更高的目标,我们需要使用这些神经网络。

我们让Christof加入我们的团队,他能很快构建出一个新的神经网络。因此,我们停止训练LGB,因为LGB远远比不上Christof构建的神经网络。

神经网络的时代

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

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

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

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

  • 当然,我还尝试了RAdam、Ranger等新的热门优化器,但简单的Adam在此次竞赛中更加好用。

  • 但最后,还是Christof实现了架构,这给我留下了非常深刻的印象,也令我颇受启发。

硬件

好的硬件对于训练这些神经网络来说非常重要。我们用到了很多硬件,但我们也经常用kaggle kernels:你可以用P100以相同的时间在4个kaggle kernels中训练模型,所以即使没有额外的硬件,我们也可以拿到金牌。

结果和结论

我们最后的解决方案拿到了第八名,赢得了金牌。

值得一提的是,我们的团队可以获得比-3 Imae更好的分数(平均所有类型的绝对值误差对数)。在这个帖子中,楼主表示达到-3是一个惊人的成就:https://www.kaggle.com/c/champs-scalar-coupling/discussion/98375#569312

事实上,我们做到了!

总结

从这次竞赛中我学习到了很多东西,总体来说,想要在Kaggle上成功我们需要:

  • 浏览Kernel和论坛,其中会提供大量有用的信息;

  • 准备好屡败屡战。当你试图找到一种可以提高分数的方法时,大多数是行不通的,但不要气馁;

  • 不断寻找新的想法、新的论文和核心的文章。你永远不会知道下一个神奇工具会从哪里出现;

  • 在团队内构建一个验证效果的机制,从而令工作结果更加直观;

  • 一个强大的团队是由很多不同特长的人组成的,我们应该涵盖不同领域;

  • Kaggle比赛非常具有挑战性,当然在这个过程中我们也可以收获诸多乐趣:)

我很幸运可以和这些了不起的人一同工作,感谢他们!

原文链接:https://towardsdatascience.com/a-story-of-my-first-gold-medal-in-one-kaggle-competition-things-done-and-lessons-learned-c269d9c233d1

—完—

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

年轻人的第一块金牌:我是如何成为 Kaggle 全网第一的相关推荐

  1. 年轻人的第一块金牌:我是如何成为Kaggle全网第一的

    选自towardsdatascience 本文经机器之心授权转载,禁止二次转载 (微信公众号:almosthuman2014) 作者:Andrew Lukyanenko 能在 Kaggle 竞赛中取得 ...

  2. 计算机用键盘能干什么,年轻人的第一块智能键盘-半台MBP能干什么?

    年轻人的第一块智能键盘-半台MBP能干什么? 2020-08-19 12:00:59 16点赞 53收藏 34评论 创作立场声明:个人购买商品测评,个人看法,个人立场,不喜勿喷! 什么是半台MBP M ...

  3. 年轻人的第一块智能键盘-半台MBP能干什么?

    年轻人的第一块智能键盘-半台MBP能干什么? 什么是半台MBP 能做什么 香吗 入手渠道 总结 什么是半台MBP MBP(MacBookPro)-苹果笔记本电脑,那么半台又是什么概念呢,目前指的半台一 ...

  4. 李宁:从106块金牌到16亿身价《前程密码》

    从106块金牌到16亿身价.16年弹指一挥间,从昔日的"体操王子"到今天的"财富明星",李宁经历了哪些苦与痛.快乐或忧伤?从一个优秀运动员向一个成功商人转化,他 ...

  5. 冷战时期的网课系统,居然催生出了世上第一块触屏!|科技拾遗

    热点追踪 / 深度探讨 / 实地探访 / 商务合作 美国的疫情愈演愈烈,截止到发稿日为止全球累计确诊感染人数已经超过了140万人.目前,加州范围内所有大学都已宣布:均不会在本学年重新开放.这就意味着加 ...

  6. java开放源码_开放源码的第一周:我是如何参与的,以及我学到的东西

    java开放源码 by Chak Shun Yu 泽顺宇 开放源码的第一周:我是如何参与的,以及我学到的东西 (My first week of open source: how I got invo ...

  7. 【历史上的今天】9 月 12 日:世界上第一块集成电路诞生;QNX 操作系统开源;苹果推出 iPhone X

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 9 月 12 日,科技历史的今天有着许多"第一次":第一架无线电无人机.第一块集 ...

  8. 一周速递|OpenAI:AI通过看视频学会玩《我的世界》,人类第一块量子尺度电路发布

    『运筹OR帷幄』原创 OpenAI:看了7万小时的游戏视频后AI学会了像人一样玩<我的世界>! 长久以来,研究人员一直在致力于让人工智能学会玩类似<我的世界>一样的开放世界游戏 ...

  9. 【大赛八卦】2020国际初中生信息学竞赛中国代表队蝉联团体总分第一和金牌人数第一

    2020国际初中生信息学竞赛(International School for Informatics "Junior",ISIJ 2020)于2020年7月1日-7月10日举行. ...

最新文章

  1. 转载--httpclient原理和应用
  2. ok6410 3.0.1内核调用V4L接口出错解决方法(转)
  3. MiaSocks发布第一个测试版
  4. Java 集合系列(3): fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)...
  5. PyTorch基础(11)----- torch.sum()方法
  6. Jquery.load() 使用
  7. FastAdmin 极速后台管理框架(三周年)V1.0.0.20190410_beta
  8. OD消息断点的设置方法
  9. unity 是厘米还是米_身高差45厘米! 这对重庆小情侣拍短视频晒幸福火了
  10. Nginx下Uwsgi模块常用参数说明
  11. Intermapper系列网络管理工具中文版教程
  12. Xlib: connection to :0.0 refused by server解决方法
  13. 随机数算法 java_最全的java随机数生成算法
  14. 微信小程序之WeUI组件库的使用
  15. ionic3硬件检测、请求权限插件 Diagnostic 的用法
  16. unity3d新手入门必备教程
  17. 完蛋,公司被一条 update 语句干趴了!
  18. html实训QQ音乐官网首页制作
  19. 安装npm install报错npm ERR! request to https://registry.cnpmjs.org/@jeecg%2fantd-online-mini failed, rea
  20. 无线笔记本怎么连接服务器打印机驱动,笔记本怎么连接无线打印机驱动程序

热门文章

  1. 首次!腾讯全面公开整体开源路线图
  2. 阿里AI摘图像识别竞赛WebVision桂冠,万物识别准确率创世界纪录
  3. 机器学习开源项目Top10
  4. Google全球员工围攻Google!
  5. AI科技大本营招实习生了!
  6. 笑了,面试官问我知不知道异步编程的Future。
  7. RabbitMQ 七战 Kafka,差异立现!
  8. 监控神器Prometheus用不对,也就是把新手村的剑
  9. 记一次订单号重复的事故,快看看你的 uuid 在并发下还正确吗?
  10. 深入浅出卷积神经网络及实现!