如何在 15 个月内占领 Kaggle 榜首?bestfitting 经验大放送

雷锋网 AI 研习社按:相信玩过 Kaggle 比赛的人都知道 bestfitting,他在加入 Kaggle 社群短短两年之内,就以黑马之姿成功占领比赛排行榜榜首。近日,Kaggle 对他进行了一次专访,在专访中,我们可以看到关于比赛的满满干货。

bestfitting 真名为 Shubin Dai,生活在长沙,他的朋友们喜欢称他为 Bingo。他目前是一名数据科学家和工程经理,创立了一家专为银行提供软件解决方案的公司。在工作空闲时,除了参加 Kaggle 竞赛,他还是一名狂热的山地车手,并表示自己喜欢在大自然中度过时光。

雷锋网 AI 研习社将访谈内容整理如下,各位 Kaggler 速来看看大神是如何炼成的吧。

1. 你的背景和研究经历是什么?

我的主修专业是计算机科学,在软件开发方面拥有超过 10 年的经验。至于工作,我目前创立了一个专为银行提供数据处理和分析解决方案的团队。

从上大学开始,我就一直对使用数学来创建能够解决问题的程序很感兴趣。这期间我不断阅读各种计算机科学书籍和论文,然后也很幸运,能够在过去十年中一直关注着机器学习与深度学习的发展。

2. 你是如何开启 Kaggle 征程的?

正如我之前所说,我一直在大量阅读着与机器学习和深度学习有关的书籍和论文,但是在这个过程中我也发现,要将我所学到的算法应用于那些可以随时获取的小型数据集中是很困难的。然后我就发现 Kaggle 是一个很棒的平台,这里有各种各样有趣的数据集、kernel 和精彩的讨论,所以我迫不及待的想要试一试。我参加的第一项竞赛是「预测红帽商业价值(Predicting Red Hat Business Value)」。

3. 你参加 Kaggle 比赛的套路是什么样的?

1)首先是仔细阅读比赛概述和数据描述;

2)查找类似的 Kaggle 竞赛。作为一名相对较新的 Kaggler,我收集了 Kaggle 上所有往期竞赛,然后做了基本分析;

3)阅读类似竞赛的解决方案;

4)阅读相关论文,以确保自己不会错过该领域的任何新进展;

5)分析数据并建立一个稳定的交叉验证集;

6)数据预处理、特征工程、模型训练;

7)结果分析,例如预测分布、错误分析、特定样本分析;

8)根据分析结果改进模型或者重新设计全新模型;

9)基于数据分析和结果分析,设计模型来增加多样性或者用于针对某些特定样本;

10)集成学习;

11)在必要时返回步骤 1。

4. 哪个机器学习算法你最喜欢?

我会逐个选择算法,但我更喜欢在模型集成时使用那些简单的算法,比如岭回归(Ridge regression)。此外,在深度学习竞赛中,我通常喜欢从 resnet-50 开始改进模型或者直接设计一个类似结构的模型。

5. 你最喜欢的机器学习工具是什么?

我非常喜欢在计算机视觉竞赛中使用 PyTorch 框架,而在自然语言处理(NLP)或者时间序列竞赛中采用 TensorFlow 或 Keras。当我在做数据分析时,我会使用 seaborn 库以及 scipy 家族中的那些工具。此外,scikit-learn 和 XGB 也是非常有效的工具。

6. 你对超参数的调优方式是什么?

我会尝试根据对数据和算法的理论理解来调整参数,如果我无法解释为什么结果会更好或者更差,那么我会感到不安。在深度学习竞赛中,我会经常检索相关论文,并试图找出这些作者们在相似的情形下是怎么做的。而且,我会比较参数更改前后的结果,例如预测分布、受影响的样本等等。

7. 你采用什么方法来使得交叉验证与最终提交能尽可能稳定?

一个好的交叉验证集是成功的一半。如果我找不到评估模型的好方法,我是不会继续下一步的。

为了建立一个稳定的交叉验证集,你必须很好地理解数据集和将面临的挑战。我还会检验并确保验证集具有与训练集类似的分布,我会尽力确保我的模型在我的本地交叉验证集和公共排行榜上都能获得提升。

在某些时间序列比赛中,我会将 aside data 作为验证集保留一段时间。

我经常以保守的方式选择最终提交结果,我总是选择对我的安全模型(Safe model)的进行加权平均集成,并倾向于相对冒险的那一个(在我看来,更多的参数等于更多风险)。但是,我从来不选择我无法解释的结果进行提交,即便这个结果有可能在公共排行榜上得到更高的分数。

8. 简单总结一下,哪些特质帮助你赢得了竞赛?

好的交叉验证集,从其它竞赛中获取经验,阅读相关论文,讲究纪律和坚韧不舍。

9. 哪类 Kaggle 竞赛你最喜欢,为什么?

自然保护和医疗相关的比赛是我最喜欢的,我觉得我应该做点什么来让我们生活的地球变得更加美好。

10. 机器学习中最令你兴奋的领域是什么?

我对深度学习的各种进展都很感兴趣。我想用深度学习解决除了计算机视觉以及自然语言处理之外的问题,所以我会尝试在我参加的比赛和我的工作中使用它们。

11. 在解决数据科学问题时,你的领域专业知识发挥了多大的作用?

实话实说,我不认为我的专业领域知识发挥了极大作用,原因如下:

1)Kaggle 官方会非常细致地准备数据集,这对于所有人都是公平的;

2)想要简单地通过使用成熟的方法赢得比赛非常困难,特别是在深度学习比赛中,因此我们需要更多创造性的解决方案;

3)数据更加重要,我们可能需要阅读一些相关的材料。

但是有一些例外。在 Planet Amazon competition 中,我确实从自己之前的热带雨林经验中获得了一些想法,但这些经验在技术上而言,不能称为领域专业知识。

12. 你认为自己最有创意的技巧、发现或者方法是什么?

在最开始的时候一定要准备好解决方案文档。我会强迫自己写一份清单,里面包括目前所面临的挑战,我应该阅读的解决方案和论文,以及可能遇到的风险,所有可能有效的交叉验证策略,可能有用的数据增强策略。而且,我会不断更新文档。大部分的文件最终都成为了我的获胜策略。

13. 你在现在的工作中是如何使用数据科学的,在 Kaggle 上的竞赛经验是否对此有帮助?

我们尝试使用机器学习来解决各种银行业务问题:预测银行网点的访客数量,预测 ATM 应该准备的现金,产品推荐,操作风险控制等等。

在 Kaggle 中的竞赛也改变了我的工作方式,当我想找到解决问题的方案时,我会尝试去寻找类似的 Kaggle 竞赛,因为它们是宝贵的资源,并且我还建议我的同事们研究类似的获奖解决方案,说不定可以从中获得灵感。

14. 你对权衡模型复杂度和训练测试时间有何看法?

我的看法是:

1)当正确率最重要时,不应该过度关注模型的复杂性。我们必须充分利用经过数月的努力才获得的训练数据。

2)现在如果只使用多个弱模型的集成是很难去赢得比赛的。如果你想成为第一名,通常需要有非常好的单一模型。当我想在比赛中获得第一名的时候,我经常强迫自己设计不同的模型,这些模型可以在公共排行榜上取得前 10 名甚至是前 3 的成绩。

3)以我自己的经验,我可以在竞赛中设计多个模型来探索这个问题的上限,然后选择一个简单的模型使其在实际情况下可行。我总是尽最大努力为竞赛组织者提供一个简单的例子,然后在获胜者采访电话中与他们进行讨论。我发现一些组织者甚至使用我们的解决方案和思想来解决他们面临的一些其他问题。

4)可以发现,当训练、测试运行时间很重要时,Kaggle 有很多机制来确保性能:kernel 竞争、团队规模限制、添加更多在打分时没有计算的数据等。我相信 Kaggle 也会根据挑战的目标而改进规则。

15. 你是如何在 Kaggle 竞赛中越来越领先的?

有趣的竞赛和 Kaggle 中强大的竞争对手是我变得越来越强的原因。

在这里有这么多优秀的对手,想要赢得比赛非常困难,他们把我推到了极限。我去年曾试图独自完成尽可能多的比赛,然后我必须猜测出其他竞争对手会怎么做。要做到这一点,我必须阅读大量材料并且构建多功能模型。在比赛之后,我还会阅读来自其他竞争对手的所有解决方案。

16. 最近你最关注哪些机器学习研究?

我期待今年可以参与一项深度强化学习竞赛。

17. 你仅仅花了 15 个月就占领排行榜榜首,这是如何做到的?

首先,第一名是衡量我在 Kaggle 上学到了多少东西以及运气好坏的标准。

我在前几次竞赛中,试图将近年来学到的理论转化为技巧,并且从其他人那里学到很多东西。

在我对 Kaggle 竞赛有了一定了解之后,我开始思考如何以系统化的方式进行比赛,因为我在软件工程方面有许多年的经验。

就这样大约半年后,我首次拿到第一名,变得更加自信。我想我可能在半年内成为一名特级大师。在 Planet Amazon competition 比赛中,我以第一名作为目标。

然后我觉得我应该继续使用之前提到的策略和方法,并且取得了更多的成功。在赢得 Cdiscount 竞赛后,我到达用户排名榜前列。

受益于 Kaggle 平台,我从其他人那里学到了很多东西,Kaggle 的排名系统也在我的进步中发挥了重要作用。同时我也感到非常幸运,因为我从未想过我可以连续获得 6 个奖项,在许多比赛中我的目标都是前 10 名或者前 1%。我不认为我可以再次复现这样的高光时刻。

但是,我来参加竞赛的目的并不是为了一个好排名,我把每场比赛都视为学习的机会,我会尝试从我不太熟悉的领域挑选比赛,这样做的结果就是我在去年强迫自己阅读了数百篇论文。

18. 你之前提到了自己喜欢阅读往期比赛中高分团队的解决方案。你还有没有什么想特别强调的?

我尊重所有的赢家和精彩解决方案的贡献者,我知道他们付出了多少努力。我总是以敬佩的态度阅读这些解决方案。

这里有一些来自 Data Science Bowl 2017 的令人难忘的洞见:PyTorch、医学图像的 3D 分割、来自 Web 流量时间序列预测的解决方案,它使用来自自然语言处理的序列模型来解决时间序列问题,另外还有 Tom (https://www.kaggle.com/tvdwiele)和 Heng (https://www.kaggle.com/hengck23)的优秀解决方案。

via:blog.kaggle.com

http://blog.kaggle.com/2018/05/07/profiling-top-kagglers-bestfitting-currently-1-in-the-world/

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CreateAMind

中文简短的《神经网络与深度学习》极佳入门书-出自量子物理学家

1251
来自专栏专知

【紫冬观点】 刘成林:模式识别背后的人工智能局限

中科院自动化所刘成林研究员详述了人工智能在目前发展阶段,人脸识别、文字识别等典型问题的研究难点和重点。同时,刘成林指出,人脸识别和文字识别作为典型的模式识别问题...

1803
来自专栏数据派THU

一文总览数据科学全景:定律、算法、问题类型...

作者:Pradeep Menon 翻译:王瑞玺 校对:梁傅淇 本文约3000字,建议阅读时间8分钟。 Pradeep Menon是一位在大数据,数据科学,数据架...

1937
来自专栏大数据文摘

职场 | 如何让你的数据直觉更敏锐

对于有大局意识的人来说,这无疑是一个很好的创业机会和职业选择。要想抓住职业机会,你需要超强的“码力”和深入的专业知识。

800
来自专栏技术翻译

深度学习到瓶颈期了吗?

深度学习和机器学习的进步都起到了最近AI成就了的核心作用,让计算机进行练习,通过消化和分析大量的数据,而不用明确地编程,就可以达到目的。在过去的两年里,谷歌以深...

1543
来自专栏量子位

谷歌传奇Jeff Dean给创业者的一小时AI讲座 | 86页PPT+视频

李林 若朴 编译整理 量子位 出品 | 公众号 QbitAI ? 少年,你知道Jeff Dean么? 传奇一般的Jeff Dean现在领导着Google Bra...

3643
来自专栏携程技术中心

干货 | 助理来也胡一川:深度学习在智能助理中的应用

作者简介 胡一川,来也联合创始人和CTO。来也专注于智能对话技术,让每个人拥有助理。此前,胡一川联合创立了影视推荐引擎"今晚看啥"并被百度收购,后加入百度任资深...

3957
来自专栏BestSDK

今日头条公布算法:解密“垃圾信息”是如何诞生的

“算法分发并非是把所有决策都交给机器,我们会不断纠偏,设计、监督并管理算法模型。”曹欢欢希望这次分享能让更多的人理解算法,并共同参与到算法模型的制定中来。此外,...

4318
来自专栏数据科学与人工智能

【数据挖掘】写给新人数据挖掘基础知识介绍

一、数据挖掘技术的基本概念 随着计算机技术的发展,各行各业都开始采用计算机及相应的信息技术进行管理和运营,这使得企业生成、收集、存贮和处理数据的能力大大提高,数...

25110
来自专栏祝威廉

从内容/用户画像到如何做算法研发

中午和一前同事一起用餐,发现还是有很多碰撞点的。交流了很多正在做的事情, 对方也提供了非常多的思想值得自己很好的思考。

1373

扫码关注云+社区

领取腾讯云代金券