机器之心报道 编辑:张倩、小舟 想通过Kaggle磨练数据科学技能?先听听KaggleGrandmaster分享了哪些成功经验。 对于机器学习、数据科学领域的入门者来说,Kaggle是一个能让人学以致用、快速成长的平台。在之前的文章中,我们介绍过不少优秀的KaggleGrandmaster,他们都有自己独特的成长路径和解决问题的思路。 在这篇文章中,我们同样介绍了两位优秀的GrandmasterChristofHenkel和PhilippSinger,他们在KaggleRankings上位列第三、四位。 在文章中,他们介绍了自己在Kaggle比赛中的成功经验以及Kaggle给他们带来的帮助。 ChristofHenkel:不喜欢读书的TripleGrandmaster ChristofHenkel(代号Dieter)是英伟达的一位数据科学家,拥有慕尼黑大学的数学博士学位,在Kaggle排行榜上位列第四。虽然进入Kaggle社区的时间不长,但Henkel已经拿到了三个Grandmaster(CompetitionsGrandmaster、NotebooksGrandmaster和DiscussionGrandmaster)。 在谈起自己参加Kaggle比赛的缘由时,Henkel表示,他一直对AI领域很感兴趣,并在读博的最后一年自学了Python和一些深度学习教程。虽然刚开始参赛时成绩并不理想,但Henkel领悟到,Kaggle可能是掌握机器学习领域知识最有效的方式。 在自学过程中,Henkel看了很多高质量的Youtube视频以及吴恩达、JeremyHowards的热门课程。有趣的是,Henkel对深度学习领域的书籍并不感冒,因为他认为这些书很快就过时了。他表示,参加一个简单的Kaggle比赛学到的东西比看书要多。为了得到新的启发,Henkel现阶段主要在看论文。 解决Kaggle问题的一般步骤 当被问及解决Kaggle问题的一般步骤时,Henkel总结出了以下几点: 首先,你需要进行非常简单的数据探索,对数据和手头的问题有一个大致的了解,想想好的交叉验证应该是什么样子。 接下来,你应该构建一个简单的初步模型,同时检查本地验证和竞赛排行榜之间的相关性(correlation)是否良好; 如果上述相关性无法满足要求,你需要进行迭代,以理解可能的差异并进行解释; 用比赛剩余的时间浏览论文、Kaggle论坛、Kernel等,以获取新的灵感; 在比赛的最后一周,进行模型集成和模型鲁棒性的检查。 为了更加具体地解释自己提到的问题解决步骤,Henkel举了一个孟加拉手写字母分类的比赛作为例子。这个比赛要求选手将给定的手写字母分为三个类别:词根、元音变音和辅音变音。 (在拿到数据之后,)我首先将给定的图像resize为6464,以便在比赛的前半段快速迭代想法。接下来,我创建了一个resnet18基线,并复制了竞赛metric,以检查我的本地验证分数能否媲美排行榜分数,结果出入不大。然后,我使用了不同的增强方法和模型架构,并最终选出了一个效果比较好的。虽然我在接下来的步骤中使用了尺寸更大的图像(128128),但我的分数变化不大。因此,我去读了很多关于孟加拉手写系统的书,发现这门语言有很多特殊与微妙之处。这使得我能够改进我的解决方案,并最终单枪匹马取得了前几名。Henkel回忆说。 比赛完整解决方案参见:https:www。kaggle。comcbengaliaicv19discussion136129 工具与技巧 在访谈中,Henkel介绍了在参赛过程中使用的工具与技巧。 在框架方面,他现在使用PyTorch。除了灵活性和稳定性之外,他还看上了Pytorch在多GPU环境中的易用性,这点在Kaggle比赛中变得越来越重要。 如果手头有一些表格数据,Henkel会使用RAPIDS平台来提高计算速度,因为它提供类似Sklearn或pandas的界面,但却在GPU上运行。此外,他还尝试了很多日志、数据存储等辅助工具,目前使用的是neptune。ai(日志工具)和AWS(数据存储)。 在硬件方面,Henkel有两个深度学习单元。一个是3xNVIDIARTX2080Ti,另一个是4xV100,这是英伟达给的。但Henkel表示,这个配置对于Kaggle比赛来说过于豪华了,之前我只有两个GTX1080Ti的时候也取得了很好的成绩。 Henkel还补充说,我喜欢将所有的代码和数据都留在自己的工作站里处理。但最近,我也开始用云来解决一些短期需求。 此外,对于一些计算密集型的比赛,Henkel喜欢用脚本,因为脚本可以将超参数调优、模型部署等步骤自动化。 PhilippSinger:成功来自积累 PhilippSinger是H2O。ai的高级数据科学家,他在格拉茨技术大学获得了软件开发和商务管理硕士学位、计算机科学荣誉博士学位,还曾获包括万维网大会最佳论文奖在内的多个奖项。 在Kaggle领域,Philipp更为人熟知的名字是Psi,他在Kaggle排行榜上位列第三,拿到了两个Grandmaster称号(CompetitionsGrandmaster和DiscussionGrandmaster)。 Philipp最重要的成就之一是与H2O。ai的数据科学家DmitryGordeev共同赢得了第二届NFLBigDataBowl,来自世界各地的2000余名数据科学家在Kaggle上角逐,PhilippSinger和DmitryGordeev的方案最终获得了50000美元的最高奖金。 201920BigDataBowl,PhilippSinger和DmitryGordeev(后)发表获奖感言。 在访谈中,PhilippSinger谈了谈他在Kaggle比赛中的成功经验。 问:您对Kaggle的尝试是如何开始的,是什么支撑您一步步走向Grandmaster? Philipp:大约八年前,我加入了Kaggle,因为我听说过该平台,想要进一步了解它。但注册之后,我整整六年都没有再碰过它。大约两年前,Dmitry和我决定一起尝试在Kaggle上参与比赛,作为一个业余项目。起初我们并没有抱什么期望,但最后我们赢得了比赛,这让我着迷了,于是我开始了自己的Kaggle旅程。 在Kaggle上,我通过解决新的问题类型来保持积极性,而且每过一段时间就会有令人兴奋的新问题需要解决。我也非常喜欢和Kaggle上的人才一起交流工作,并了解社区所做的努力。 问:最近,您以惊人的成绩刷新了Kaggle排行榜,并获得了NFL第一名和FutureImpactDetection第二名。您是如何做到在这些比赛中频频拿奖的呢? 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。comkaggleinterviewgrandmasterchristofhenkel https:towardsdatascience。commeetthedatascientistwhojustcannotstopwinningonkaggledfc0e6fe88f8