张倩、小舟报道

想在Kaggle中拿名次?先听听这些Grandmaster怎么说

想通过 Kaggle 磨练数据科学技能?先听听 Kaggle Grandmaster 分享了哪些成功经验。

对于机器学习数据科学领域的入门者来说,Kaggle 是一个能让人学以致用、快速成长的平台。在之前的文章中,我们介绍过不少优秀的 Kaggle Grandmaster,他们都有自己独特的成长路径和解决问题的思路。

在这篇文章中,我们同样介绍了两位优秀的 Grandmaster——Christof Henkel 和 Philipp Singer,他们在 Kaggle Rankings 上位列第三、四位。



在文章中,他们介绍了自己在 Kaggle 比赛中的成功经验以及 Kaggle 给他们带来的帮助。

Christof Henkel:不喜欢读「书」的 Triple Grandmaster

Christof Henkel(代号 Dieter)是英伟达的一位数据科学家,拥有慕尼黑大学的数学博士学位,在 Kaggle 排行榜上位列第四。虽然进入 Kaggle 社区的时间不长,但 Henkel 已经拿到了三个 Grandmaster(Competitions Grandmaster、Notebooks Grandmaster 和 Discussion Grandmaster)。


在谈起自己参加 Kaggle 比赛的缘由时,Henkel 表示,他一直对 AI 领域很感兴趣,并在读博的最后一年自学了 Python 和一些深度学习教程。虽然刚开始参赛时成绩并不理想,但 Henkel 领悟到,「Kaggle 可能是掌握机器学习领域知识最有效的方式。

在自学过程中,Henkel 看了很多高质量的 Youtube 视频以及吴恩达、Jeremy Howards 的热门课程。有趣的是,Henkel 对深度学习领域的书籍并不感冒,因为他认为这些书很快就过时了。他表示,「参加一个简单的 Kaggle 比赛学到的东西比看书要多。」为了得到新的启发,Henkel 现阶段主要在看论文。

解决 Kaggle 问题的一般步骤

当被问及解决 Kaggle 问题的一般步骤时,Henkel 总结出了以下几点:

  • 首先,你需要进行非常简单的数据探索,对数据和手头的问题有一个大致的了解,想想好的交叉验证应该是什么样子。

  • 接下来,你应该构建一个简单的初步模型,同时检查本地验证和竞赛排行榜之间的相关性(correlation)是否良好;

  • 如果上述相关性无法满足要求,你需要进行迭代,以理解可能的差异并进行解释;

  • 用比赛剩余的时间浏览论文、Kaggle 论坛、Kernel 等,以获取新的灵感;

  • 在比赛的最后一周,进行模型集成和模型鲁棒性的检查。


为了更加具体地解释自己提到的问题解决步骤,Henkel 举了一个孟加拉手写字母分类的比赛作为例子。这个比赛要求选手将给定的手写字母分为三个类别:词根、元音变音和辅音变音。

「(在拿到数据之后,)我首先将给定的图像 resize 为 64*64,以便在比赛的前半段快速迭代想法。接下来,我创建了一个 resnet18 基线,并复制了竞赛 metric,以检查我的本地验证分数能否媲美排行榜分数,结果出入不大。然后,我使用了不同的增强方法和模型架构,并最终选出了一个效果比较好的。虽然我在接下来的步骤中使用了尺寸更大的图像(128*128),但我的分数变化不大。因此,我去读了很多关于孟加拉手写系统的书,发现这门语言有很多特殊与微妙之处。这使得我能够改进我的解决方案,并最终单枪匹马取得了前几名。」Henkel 回忆说。

比赛完整解决方案参见:https://www.kaggle.com/c/bengaliai-cv19/discussion/136129

工具与技巧

在访谈中,Henkel 介绍了在参赛过程中使用的工具与技巧。

在框架方面,他现在使用 PyTorch。除了灵活性和稳定性之外,他还看上了 Pytorch 在多 GPU 环境中的易用性,这点在 Kaggle 比赛中变得越来越重要。

如果手头有一些表格数据,Henkel 会使用 RAPIDS 平台来提高计算速度,因为它提供类似 Sklearn 或 pandas 的界面,但却在 GPU 上运行。此外,他还尝试了很多日志、数据存储等辅助工具,目前使用的是 neptune.ai(日志工具)和 AWS(数据存储)。

在硬件方面,Henkel 有两个深度学习单元。一个是 3x NVIDIA RTX 2080Ti,另一个是 4x V100,这是英伟达给的。但 Henkel 表示,这个配置对于 Kaggle 比赛来说过于豪华了,「之前我只有两个 GTX 1080Ti 的时候也取得了很好的成绩。

Henkel 还补充说,「我喜欢将所有的代码和数据都留在自己的工作站里处理。但最近,我也开始用云来解决一些短期需求。」

此外,对于一些计算密集型的比赛,Henkel 喜欢用脚本,因为脚本可以将超参数调优、模型部署等步骤自动化。

Philipp Singer:成功来自积累

Philipp Singer 是 H2O.ai 的高级数据科学家,他在格拉茨技术大学获得了软件开发和商务管理硕士学位、计算机科学荣誉博士学位,还曾获包括万维网大会最佳论文奖在内的多个奖项。

在 Kaggle 领域,Philipp 更为人熟知的名字是 Psi,他在 Kaggle 排行榜上位列第三,拿到了两个 Grandmaster 称号(Competitions Grandmaster 和 Discussion Grandmaster)。



Philipp 最重要的成就之一是与 H2O.ai 的数据科学家 Dmitry Gordeev 共同赢得了第二届 NFL Big Data Bowl,来自世界各地的 2000 余名数据科学家在 Kaggle 上角逐,Philipp Singer 和 Dmitry Gordeev 的方案最终获得了 50000 美元的最高奖金。

2019-20 Big Data Bowl ,Philipp Singer 和 Dmitry Gordeev(后)发表获奖感言。

在访谈中,Philipp Singer 谈了谈他在 Kaggle 比赛中的成功经验。

问:您对 Kaggle 的尝试是如何开始的,是什么支撑您一步步走向 Grandmaster?

Philipp:大约八年前,我加入了 Kaggle,因为我听说过该平台,想要进一步了解它。但注册之后,我整整六年都没有再碰过它。大约两年前, Dmitry 和我决定一起尝试在 Kaggle 上参与比赛,作为一个业余项目。起初我们并没有抱什么期望,但最后我们赢得了比赛,这让我着迷了,于是我开始了自己的 Kaggle 旅程。

在 Kaggle 上,我通过解决新的问题类型来保持积极性,而且每过一段时间就会有令人兴奋的新问题需要解决。我也非常喜欢和 Kaggle 上的人才一起交流工作,并了解社区所做的努力。

问:最近,您以惊人的成绩刷新了 Kaggle 排行榜,并获得了 NFL 第一名和 Future-Impact Detection 第二名。您是如何做到在这些比赛中频频拿奖的呢?

Philipp:人们经常问我如何才能赢得 Kaggle 比赛,但我认为并没有什么通用秘笈。Kaggle 的许多成功都基于经验,并且需要深入了解和学习那些你乍看起来并不了解的东西。在比赛过程中,我积累了一个通用工具箱,其中包含我完成每项比赛用到的构建基块,例如,如何设置适当的交叉验证,模型需要用到哪些库,如何恰当地拟合模型、如何跟踪模型性能等。因此,我可以拿出更多时间专注于近期比赛的新领域和关键方面。我总是在每次比赛后都尝试改善工作流程,以提高效率和竞争力。



Philipp 在 Kaggle 上的成就。

问:您通常如何处理 Kaggle 问题?您想与社区分享些喜欢的 ML 资源(课程、博客等)吗?

Philipp:我尝试利用我已经积累的方法、工具和经验研究眼前的具体问题。这意味着我将在 Kaggle 上研究先前类似问题的解决方案,并阅读相关论文,学习问题的最佳方法是亲身实践并逐步学习。

问:您在 Kaggle 中学到的哪些东西可以应用于 H2O.ai 的工作中?

Philipp:在 Kaggle 上学到的很重要的一件事是如何构建鲁棒模型,让其可以很好地泛化,同时又不会遭受强大的过拟合。这对于 Kaggle 至关重要,因为模型需要泛化至此前没见过的数据。这意味着你将学到很多关于鲁棒交叉验证的知识,并关心特征分布转移等数据信息。我可以在 H2O.ai 的工作中充分利用这些知识,这也是我们产品不可或缺的一部分。

问:数据科学领域正在迅速发展,您是如何跟上所有最新进展的?

Philipp:我主要使用 Kaggle 来了解最新动态;它是对新技术能否解决实际问题的绝佳过滤器。通常,鲁棒的方法可以脱颖而出,而只是偶尔起作用的技术就会被筛掉。同时,我尝试通过关注 Twitter 和其他平台上的知名研究者和从业者来了解领域内最新的进展

Philipp 在 2020 年 1 月 9 日维也纳的数据科学活动中。

问:对于刚刚开始数据科学之旅,对挑战 Kaggle 竞赛有点抱负的人,你有什么建议?

Philipp:不断尝试,不要害怕失败,同时要一直渴望学习新事物。

参考链接:https://analyticsindiamag.com/kaggle-interview-grand-master-christof-henkel/
https://towardsdatascience.com/meet-the-data-scientist-who-just-cannot-stop-winning-on-kaggle-dfc0e6fe88f8
工程Kaggle
1
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

推荐文章
暂无评论
暂无评论~