Kaggle 大神 Eureka 的高手进阶之路

  • 时间:
  • 浏览:64

  雷锋网 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)环节多、影响因素复杂,是整个外卖行业的难题。首先,这个问题比较重要,有实际意义,另外,大家能比较容易地了解到这个问题背后的业务,因为大多数人都订过外卖。我们提供的数据集在特征维度上没有做特别的预处理,这也比较接近于真实情况。

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

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

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

  雷锋网原创文章,未经授权禁止转载。详情见转载须知。