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)。

Toping Kagglers:Bestfitting,目前世界排名第一的更多相关文章

  1. Profiling Top Kagglers: Bestfitting, Currently #1 in the World

    We have a new #1 on our leaderboard – a competitor who surprisingly joined the platform just two yea ...

  2. 排名第一、第二的OCR软件

    排名第一.第二的OCR软件 第一:ABBYY FineReader      OCR世界排名第一,在俄罗斯获国际科技大奖奖超过卡巴斯基! 不仅仅只是文字识别,还能表格识别,版面还原,字体识别,文档结构 ...

  3. [No000075]有没有安全的工作?

    如果你经常使用互联网,可能知道有一种东西叫做Flash. 它是一种软件,用来制作网页游戏.动画,以及视频播放器.只要观看网络视频,基本都会用到它. 七八年前,它是最热门的互联网技术之一.如果不安装Fl ...

  4. 关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解

    先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...

  5. linux下网站搭建

    我们知道windows网站搭建一般是:IIS+Asp+Sqlserver,而 linux网站搭建是:Apache+php+Mysql.两者之间个有千秋,但是为什么我们许多的门户网站搭建都选择linux ...

  6. [转]三大WEB服务器对比分析(apache ,lighttpd,nginx)

    原博文地址:http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html 一.软件介绍(apache  lighttpd  ngin ...

  7. 三大WEB服务器对比分析(apache ,lighttpd,nginx)

    一.软件介绍(apache  lighttpd  nginx) 1. lighttpd Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点.lighttpd是众多 ...

  8. 从原理上理解NodeJS的适用场景

    NodeJS是近年来比较火的服务端JS平台,这一方面得益于其在后端处理高并发的卓越性能,另一方面在nodeJS平台上的npm.grunt.express等强大的代码与项目管理应用崛起,几乎重新定义了前 ...

  9. Java 第三天 Gradle和其它

    Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具. 下载地址 http://www.gradle.org/downloads 环境变量 ...

随机推荐

  1. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  2. python--面向对象之三个特性:封装、继承、多态

    一.面向对象简介 1.面向对象不是所有的情况都适用2.面向对象编程 a.定义类 class 类名: def 方法1(self, 参数名): 方法体 b.根据类创建对象,使用对象去执行类中的方法 obj ...

  3. 如何开发出优秀的APICloud应用

    APICloud定制平台项目实施规范 APICloud应用优化策略Top30 如何开发出运行体验良好.高性能的App 如何开发出客户满意.能够顺利交付的App 1. 引擎或模块问题: 遇到应用层无法解 ...

  4. 在Visual Studio中调试时,如何检查有关进程令牌的详细信息?

    从Visual Studio 2005开始,watch窗口获得了一个伪寄存器,用于调查有关进程令牌的详细信息.所以,你只要开始调试,在监视窗口中写下“$user”, 有时查看特权和组的扩展视图会很有趣 ...

  5. micronaut 学习一 基本安装

    一般来说,使用框架就是使用类库同时按照框架的类库套路编写代码,但是从越来越复杂的实际 场景来说,cli以及脚手架工具,可以帮助我们简化好多操作. 以下是micronaut cli 工具的安装以及一个简 ...

  6. GoCN每日新闻(2019-11-04)

    GoCN每日新闻(2019-11-04) GoCN每日新闻(2019-11-04)   1. Go中垃圾收集器是如何标记内存的 https://medium.com/a-journey-with-go ...

  7. HTML引入外部JS文件

    <!--引入外部文件的方式--> <script type="text/javascript" src="attack.js">< ...

  8. Oracle 的查询组合语句

    select   a.core_txn_srl_no||a.c_dept||a.c_batch||lpad(a.c_opr_no,5,'0')||case a.txn_dr_cr_ind when ' ...

  9. 分布式系统 与 Google

    google 论文 http://duanple.com/?p=170 google 论文与开源 http://duanple.com/?p=1096 分布式系统论文集 https://github. ...

  10. SAS 指定LOG LIST输出

    LIBNAME S '.\'; PROC PRINTTO LOG='.\LOG\PRINT_LOG.LOG';RUN; DATA A;SET SASHELP.CLASS (FIRSTOBS=2 OBS ...