首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kaggle 大神 Eureka 的高手进阶之路

Kaggle 大神 Eureka 的高手进阶之路

作者头像
AI研习社
发布2018-03-28 09:47:17
1.1K0
发布2018-03-28 09:47:17
举报
文章被收录于专栏:AI研习社AI研习社

作为全球首屈一指的数据科学、机器学习竞赛和分享平台,Kaggle 以其比赛多样、数据集全面、社群活跃的优势而备受推崇。从学生到上班族,Kaggle 的用户群体范围极广。目前,Kaggle 上大量的比赛吸引无数人参与,一方面,既能拿到奖励,另一方面,也能获得实战经验。但由于竞争的激烈性,对于国内选手来说,想在榜单上拿到较高名次并不容易。

而在 Kaggle 排行榜上,有一位中国选手,面对如此激烈的竞争,一举杀入前五,最高排名第三。他就是目前在排行榜上位列第四的 Eureka(Eureka Kaggle 主页:https://www.kaggle.com/pengyan)。

Eureka 真名燕鹏,目前任职于美团点评。据 AI 研习社了解,燕鹏 2005 年毕业于清华大学,当时的研究方向为计算机视觉。毕业十多年的他,最早接触 Kaggle 却已经到 2014 年了。此前,他毫无数据挖掘类比赛的经验,在加入 Kaggle 后这三年多的时间内,他参加四十多场比赛,完成了从一名初级选手进阶为高手之路。而作为一名经验丰富的做题者,他在美团点评工作期间也经历了角色的转变——由做题人再到出题人。

燕鹏为什么会在毕业多年之后选择 Kaggle 平台参加比赛?经过这三年多的比赛,他看到赛事发生了什么改变,有什么经验分享给大家,而他的心态又发生了什么改变?对于出题,他的看法又如何?

下面的几个问题或许能解答你心中的疑惑。

以下为 AI 研习社对燕鹏的采访实录,做了不改变原意的编辑整理。

1. 你于 2014 年加入 Kaggle,已经参加了上面的四十多场比赛,第一次参加 Kaggle 比赛的原因是什么?是什么吸引着你不断参加各类比赛?

每个人在做具体工作的时候,虽然能够做出一些成绩,但是这个成绩可能无法全面衡量你在这件事情上的能力。在工作上,可能你还是自己跟自己比,或者是跟之前做这件事的人比,你现在做出来的东西可能只是比之前做的人好一点,或者比自己之前做的好一点。究竟你的数据挖掘能力怎么样,其实并不能很好地体现出来。

出于这种考虑,恰好听到这么一个平台,我就去 Kaggle 上看了看。在那里,有很多公共数据,也有一些比较牛的人,通过与他们不断交流和竞赛,就能较好地评估自己的能力。

在 Kaggle 平台上,能够接触到各行各业的问题,开阔视野。在公共数据集上和国际高手切磋,也能够学习到一些比较实用的招数。比赛和研究的区别,是比赛中的方法一般都是比较有效的,在这个过程中也可以不断优化自己对新问题的解决思路。

2. 你参加过的比赛中,有广告、交通、金融、教育、医疗等各式各样的问题,在解决这些问题的方法上,是否总结过有哪些共性?

就我个人对这些比赛的分类,主要分为挖掘、图像、语音、NLP 四类。

你可以这么理解数据挖掘类问题,除了语音、图像和 NLP,剩下的所有问题,都可以归结为此类问题。例如根据实际业务,做各种各样预测的问题(预测销量、点击率、推荐排序等),都可以定义为数据挖掘问题。或许我的定义并不准确,不过我没有想到一个更好的表达词。

这四类问题需要用到的一些技术或者技巧,彼此之间可以相对独立,每类问题都有各自的套路。

对于数据挖掘类问题来说的话,具体是广告、交通、金融还是教育,其实影响不大。主要的共性就是理解数据,理解问题,从数据中找到有用的信息用来预测,这类问题胜负更多的是在特征上。

对于图像问题,可能就较少涉及到特征了。图像问题现在主要用到深度学习的相关技术,基于深度学习做了很多改进或者演绎,已经完全不需要在特征层面上去做什么了。

像图像、语音类比赛,其实我目前接触的还比较少,这种比赛这两年才开始兴起。

3. 你提到在数据挖掘比赛上面,胜负更多在特征上,为什么这么说呢?在特征上有什么套路?

基本上大家都会用同样的一些工具去训练同样的模型,在模型方面差别很小。所以,模型没那么重要。

融合是基于单模型来的,要是单模型不好,那么很大概率上融合也好不了。此外,融合的套路应该也基本上都固定了,但凡常玩的人也都知道。所以,融合基本上达不到创新,很难出现别人不知道的招。

因此,机会还是在特征上,现在只有特征还没有一个通用的标准,大家自己做自己的,有可能做出点不一样的东西。

其实特征工程主要分两点。第一点:你可能需要了解业务,从业务本身出发,找到一些对预测有帮助的信息和线索。这是基于你对业务的熟悉,对业务的理解出发的。

第二点就是需要想办法把这种信息转化成适用于模型的特征。

4. 除了前面在特征工程方面的经验,有些比赛上,比赛主办方会提供原始数据,在数据预处理阶段,你有什么经验分享呢?

在比赛中会遇到这样的情况,这时候可能也需要一些方法:

基于对业务的理解,这种相对比较少一点,更多的还是基于数据本身。你可以用一些数据挖掘中常用的数据清理的方法,过滤异常值,过滤缺失严重的特征等等。

有时候做预处理,最终还是需要一些反馈。比如从数据上看,可能需要扔掉某些东西。我们需要去试一试,扔掉这些东西之后,在最终的比赛中,提交的预测结果会不会变好。或者采用以结果导向的反馈,这样迭代去往下走。

另外,每个比赛其实都有一些自己独特的数据,即使是同样领域的问题,数据的分布也可能差别很大。这时候之前的经验可能就不适用当前的问题,我们必须接受这样一个事实,需要针对数据重新去建立问题的解决方案。其实这还是一个偏实践的问题,实践推动着你往前走。

5. 从最开始接触数据挖掘类比赛到现在,试题主要发生了哪些改变?

一年前的比赛里面,十个有八个都跟数据挖掘相关。不过目前有一个趋势,图像类型的比赛变多,NLP 以及语音相关的题目也开始慢慢出现。

6. 如今选择比赛的时候有什么个人喜好或选择标准吗,和最初参赛时相比,心态上有哪些变化?

之前更多选择自己熟悉的领域,比如广告,主要也是想从中获取到一些知识,直接用于工作中。目前,我最感兴趣的都是我不太熟悉的领域,例如图像类、NLP 类,这对我来说也是最难解决,最有挑战性的。

目前看来,这些比赛其实殊途同归,除了广告类的比赛,参加其他方面的比赛也能获得很多宝贵的经验,应用于实际工作中。

其实玩比赛,最主要的目的不是去赢,而是去学,那里面有很好的学习资源。比如,你的解决方案最后可能与别人的差距很大,可以看看最后赢的人是怎么解决这个问题的,他的经验肯定对你有帮助。当一场比赛结束之后,前几名一般都会分享经验,你可以结合自己的经验,把前几名的方案融汇到你的知识框架里去,这样的话,再玩可能就会好很多。(目前 AI 研习社正在做系列赛事冠军经验分享报道,感兴趣的同学可以持续关注)

7. 看到你有关注 Kaggle 上的强劲对手 bestfitting、Giba、KazAnova 等人,对他们怎么看?私下有和他们进行过交流吗?是否有探讨过比赛经验等?

Giba 和 KazAnova 常年霸榜,他们几乎参加过所有的比赛,经验丰富;bestfitting 是最近刚玩 Kaggle 的,一年多就迅速登顶,这也非常惊人。私下里我和他们其实没怎么联系过。之前我有与一些国际上的大牛合作,也学到了很多东西,不过现在他们都玩的比较少了,所以排名不是特别高。

8. 与那些国际大牛合作,你觉得他们身上有哪些特质值得我们学习一下?

那时候我没什么经验,可以跟着他们学到很多。后来,经验可能就没那么重要了。

我有个比较明显的感觉,跟国外大多数人合作的时候,大家很愿意分享,比如他做了一个实验或者做了一次尝试,不管成功还是失败,他都愿意告诉大家。例如我拉一个群,他会告诉群里所有的人他的经验,这样就会帮助其他人尽快找到好的方向,避免做些重复的事情。这是我觉得他们做的比较好的一点。

国内的问题是,大家都喜欢分享成功经验,有时候做了一次失败的实验,他就不会说了,其他人有可能还会做一个同样的失败实验——这会导致成本变高,效率变低。

9. 你现在还会在 Kaggle 上追求排名吗?

我玩 Kaggle,一方面是因为兴趣,另一方面,kaggle 上有一些我工作中需要的很实用的东西,它是我的学习路径。

我现在时间没有那么多,也越来越忙,好成绩基本上是用时间堆出来的。Kaggle 上的比赛得分是非线性的,第一名得分特别多,从现在的分差来说,我要是拿个第一,可能我就是总排行第一了,但是需要运气。大家的实力相差不是那么大,而且很多比赛最后都是小数点后几位的竞争。

我也没有刻意追求排名,我觉得现在这个名次也挺好。其实还有很多在 Kaggle 上的人,他们的能力比我要好,只不过他们玩的少,所以名次不如我。

10. 在参加这么多场比赛之后,关于从一个新手进阶成高手,有何经验分享?

第一,对比各种比赛平台,玩 Kaggle 一定是最好的学习路径,因为 Kaggle 上有很好的分享机制和氛围,你能够跟着其他人的分享一步一步去学到很多东西,这一定是一个最好的学习路径和资源。

第二,需要坚持。实际上这些比赛也没有多难,很多都是靠经验。你多学、多看、多实践,这样应该就会比较好了。

第三,投入。对于一场比赛,我现在花的时间可能比较少,但如果一个人可以每天坚持花 10 个小时、8 个小时,全力以赴去做,到最后应该也不会太差。很多人最后成绩上不去,是因为玩一两场比赛之后,发现成绩不太好,就不去努力了,但实际上,你要真想玩,那你就得坚持,不断地去看论坛上的帖子,想想人家是怎么做的,再去改进自己的方案,那样总会迎来收获。

11. 你曾经说过,想要在 KDD 等比赛上取得高分,数学很重要,实践也很重要,对数据得敏感。具体来说,你是如何提升这些方面的能力的呢?除了参加比赛实践,还会定期看一些相关论文吗?如何锻炼出对数据的敏感度?

我一直比较喜欢 ESL(The Elements of Statistical Learning)那本书,它在业界也很有名。

这本书很难看懂,几个很牛的大师把他们的经验、理解写进去了,它跟那种传授知识的书不太一样的地方是,这里有好多作者本人的见解,我觉得这是挺不容易的。但这本书肯定不适合入门,一般来说入门的话,我比较推荐中国台湾大学林轩田老师的视频。 不管是书还是视频,都是介绍机器学习基础原理的,但是现在这个方向发展太快,所以要是想能够快速跟进的话,还是需要读论文。

我现在做的工作大多偏业务,或者说我更多的精力是放在更好地帮助业务上,因此对论文看得也不系统,可能在出现一些 case 的时候去查一查,但从长远来看,因为行业变化特别快,所以还是应该去关注一些最新的东西,系统地看一些论文。

另外对于数据的敏感度,这个不好说。我现在能给的建议是多去 Kaggle 上学习。在每个比赛刚开始的时候,都会有人做大量的数据分析工作,并且分享出来,你可以去看看那些人的思路,这样也许会有一点点帮助。

12. 美团点评于 2017 年举办了首届 MDD Cup 算法大赛,要求选手预估测试样本集中订单的送达时长。你作为命题人,从参赛到命题,思路需要经过那些转换?

这次美团点评的比赛我们有一个命题组,我只是其中一员,最终的题目以及规则是大家集体决定的。

本次试题很有特点,素材来自我们外卖配送的真实业务场景。送达时间的预估问题(ETA)环节多、影响因素复杂,是整个外卖行业的难题。首先,这个问题比较重要,有实际意义,另外,大家能比较容易地了解到这个问题背后的业务,因为大多数人都订过外卖。我们提供的数据集在特征维度上没有做特别的预处理,这也比较接近于真实情况。

从命题的角度看,主要就是样本和评价指标的选择,尽可能保证最终比赛的解决方案对实际的工作有帮助。基本上所有比赛都是来自于真实的业务场景和问题,但差别在于比赛组织者是否有足够的经验,能够把业务问题转化成机器学习比赛的问题。在这里,如果数据处理不合适,或者是有地方没注意到,最后拿到的解决方案有可能是完全没用的。

因为我玩的比较多,可能会在选题和数据选择上,尽可能规避掉一些将来可能会让比赛变得没用的因素。

在美团点评,类似的有挑战的技术场景很多,欢迎热爱技术的同学加盟。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档