机器之心报道 编辑:张倩、小舟 想通过 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