Toping Kagglers:Bestfitting,目前世界排名第一

Toping Kagglers:Bestfitting,目前世界排名第一

Kaggle团队 |2018年5月7日

 

我们在排行榜上排名第一 - 这是两年前令人惊讶地加入该平台的竞争对手。Shubin Dai,他的朋友们更喜欢Kaggle或宾果游戏,他是一位住在中国长沙的数据科学家和工程经理。他目前领导着一家为银行提供软件解决方案的公司。在工作之外,在Kaggle之外,戴是一个狂热的山地车手,喜欢在大自然中度过时光。这里是最好的:

你能告诉我们一些你自己和你的背景吗?

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

从大学开始,我一直对使用数学来构建解决问题的程序感兴趣。我不断阅读各种计算机科学书籍和论文,很幸运能够跟踪过去十年中在机器学习和深度学习方面取得的进展。

你是如何从Kaggle比赛开始的?

如前所述,我一直在阅读很多关于机器学习和深度学习的书籍和论文,但发现我总是很难将我学到的算法应用到现有的小数据集上。所以我发现Kaggle是一个很棒的平台,有各种有趣的数据集,内核和很棒的讨论。我迫不及待想要尝试一下,并首次进入“预测红帽商业价值”竞赛。

在参加新比赛时,你的第一个行动计划是什么?

在竞赛发布的第一周内,我创建了一个解决方案文档,随着竞争的继续,我会跟进并更新。要做到这一点,我必须首先尝试了解手头的数据和挑战,然后研究类似的Kaggle比赛和所有相关论文。

你的迭代周期是什么样的?

  1. 仔细阅读比赛的概述和数据描述
  2. 查找类似的Kaggle比赛。作为一个相对较新的人,我收集并完成了所有Kaggle比赛的基本分析。
  3. 阅读类似比赛的解决方案。
  4. 阅读论文以确保我不会错过任何进展。
  5. 分析数据并建立稳定的简历。
  6. 数据预处理,特征工程,模型培训。
  7. 结果分析,如预测分布,错误分析,硬实例。
  8. 根据分析精心设计模型或设计新模型。
  9. 基于数据分析和结果分析,设计模型以增加多样性或解决硬样本。
  10. 合奏。
  11. 如有必要,返回前一步。

您最喜欢的机器学习算法是什么?

我根据具体情况选择算法,但我更喜欢使用简单的算法,例如在整体时使用岭回归,我总是喜欢从resnet-50开始,或者在深度学习竞赛中设计类似的结构。

你最喜欢的机器学习库是什么?

我非常喜欢计算机视觉竞赛中的pytorch。我在NLP或时间序列比赛中使用tensorflow或keras。在进行分析时,我在scipy家族中使用seaborn和产品。并且,scikit-learn和XGB始终是很好的工具。

您对超调整参数的方法是什么?

我尝试根据我对数据的理解和算法背后的理论来调整参数,如果我无法解释为什么结果更好或更差,我将感到不安全。

在深度学习竞赛中,我经常搜索相关论文并试图找到作者在类似情况下所做的事情。

并且,我将比较参数更改之前和之后的结果,例如预测分布,受影响的示例等。

您对实体交叉验证/最终提交选择和LB拟合的方法是什么?

良好的简历是成功的一半。如果我找不到评估模型的好方法,我不会进入下一步。

要建立稳定的简历,您必须充分了解数据和面临的挑战。我还要检查并确保验证集具有与训练集和测试集类似的分布,并且我将尝试确保我的模型在我的本地简历和公共LB上都得到改进。

在一些时间序列比赛中,我将数据留出一段时间作为验证集。

我经常以保守的方式选择我的最终提交,我总是选择我的安全模型的加权平均集合并选择相对危险的一个(在我看来,更多的参数等同于更多的风险)。但是,我从来没有选择过我无法解释的提交,即使公共LB得分很高。

简而言之,赢得比赛的是什么?

良好的简历,从其他比赛中学习,阅读相关论文,纪律和心理韧性。

你最喜欢的Kaggle比赛是什么?为什么?

自然保护和医疗相关比赛是我最喜欢的。我觉得我应该,也许可以做一些事情来改善我们的生活和地球。

您最兴奋的机器学习领域是什么?

我对深度学习的各种进步感兴趣。我想用深度学习来解决除了计算机视觉或NLP之外的问题,所以我尝试在我参加的比赛和常规职业中使用它们。

在解决数据科学问题时,域专业知识对您有多重要?

坦率地说,我认为我们不能从领域专业知识中获益太多,原因如下:

  1. Kaggle仔细准备了比赛数据,这对每个人都很公平;
  2. 仅仅通过使用成熟的方法来赢得比赛是非常困难的,特别是在深度学习比赛中,因此我们需要更多创造性的解决方案;
  3. 数据本身更重要,尽管我们可能需要阅读一些相关的材料。

但是,有一些例外。例如,在亚马逊地球竞赛中,我确实从我的个人雨林经历中获得了想法,但这些经验在技术上可能不称为领域专业知识。

你认为你最有创意的技巧/发现/方法是什么?

我认为这是在一开始就准备解决方案文档。我强迫自己制作一份清单,其中包括我们所面临的挑战,我应该阅读的解决方案和论文,可能的风险,可能的简历策略,可能的数据增加以及添加模型多样性的方法。而且,我一直在更新文档。幸运的是,这些文件大部分都是我为竞赛主办方提供的解决方案。

你目前在工作中如何使用数据科学,并且在Kaggle的帮助下进行竞争?

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

在Kaggle上竞争也改变了我的工作方式,当我想找到解决问题的解决方案时,我会尝试找到类似的Kaggle比赛,因为它们是宝贵的资源,我也建议我的同事研究类似的,获胜的解决方案,以便我们可以从他们那里收集想法。

您对高模型复杂性和培训/测试运行时之间的权衡有何看法?

以下是我的意见:

  1. 训练/测试运行时只有在真正成为问题时才很重要。当准确性最重要时,模型的复杂性不应该太过关注。当获得的培训数据来自几个月的努力工作时,我们必须充分利用它们。
  2. 现在只使用弱模型的集合来赢得竞争是非常困难的。如果你想成为1号,你通常需要非常好的单一型号。当我想确保参加单人比赛的第一名时,我经常强迫自己设计不同的模型,可以达到LB的前10名,有时甚至是前3名。组织者可以选择其中任何一个。
  3. 根据我自己的经验,我可以在竞赛中设计模型来探索这个问题的上限,并且选择一个简单的模型以使其在真实情况下可行并不困难。我总是尽力为组织者提供一个简单的组织者,并在获胜者的电话中与他们讨论。我发现一些组织者甚至使用我们的解决方案和想法来解决他们面临的其他问题。
  4. 我们可以发现,当训练/测试运行时非常重要时,Kaggle有很多机制来确保性能:内核竞争,团队规模限制,添加更多在评分时未计算的数据等。我相信Kaggle也会改进根据挑战目标制定规则。

你是如何在Kaggle比赛中变得更好的?

有趣的比赛和Kaggle的优秀竞争对手让我变得更好。

在这里有这么多伟大的竞争对手,赢得比赛是非常困难的,他们把我推到了极限。去年我试图尽可能多次完成我的比赛独奏,我必须猜测所有其他竞争对手会做什么。要做到这一点,我必须阅读大量材料并构建多功能模型。我在比赛结束后阅读了其他竞争对手的所有解决方案。

您是否对最近或正在进行的机器学习研究感到兴奋?

我希望今年可以参加Kaggle的强化学习比赛。

你在排行榜上升得非常快(仅用了15个月)。你是怎么做到的?

首先,No.1是衡量我在Kaggle学到了多少以及我是多么幸运。

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

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

大约半年后,我获得了一等奖和一些信心。我以为我可能会在一年内成为一名大师。在亚马逊地区的比赛中,我试图获得一枚金牌,所以当我发现自己处于第一位时,我感到很惊讶。

然后我觉得我应该继续使用我之前提到的策略和方法,并获得更多的成功。在我赢得了Cdiscount比赛后,我攀升到用户排名榜首。

我认为我从Kaggle平台中受益,我从其他人那里学到了很多东西,Kaggle的等级系统也在我的进步中发挥了重要作用。我也感到非常幸运,因为我从未预料到我能连续获得6个奖项,我的许多比赛的目标是前10名或前1%。我不认为我可以再次复制旅程。

但是,我在这里并不是一个好的排名。我总是将每场比赛视为一次学习的机会,所以我尝试选择我不熟悉的领域的比赛,这迫使自己去年阅读了数百篇论文。

您之前提到过,您喜欢阅读过去比赛中得分最高的比赛解决方案。有没有你会强调特别有见地?

我尊重所有获奖者和精彩的解决方案贡献者,我知道他们付出了多少努力。我总是以令人钦佩的态度阅读解决方案。

一些最令人难忘的见解来自2017年数据科学碗:pytorch,医学图像的3D分割,网络流量时间序列预测的解决方案,使用NLP的序列模型来解决时间序列问题,以及来自Tom的美丽解决方案(https://www.Kaggle.com/tvdwiele)和Heng(https://www.Kaggle.com/hengck23)。

猜你喜欢

转载自www.cnblogs.com/roygood/p/10404453.html