印度小伙用两年,从菜鸟到最年轻Kaggle大师,成功就职世界500强

大数据文摘出品

编译:Joey、林苗、张秋玥

一位21岁的印度小伙,刚刚大学毕业,学的是电子与传播学工程,与数据科学毫无关系,但是却用了两年的时间,成长为印度最年轻的“Kaggle 二级大师”,并拿到世界500强企业的offer,让我们一起来看一下这个年轻人的开挂之路。

如今,网上很多关于数据科学的文章都在讨论这个领域需要哪些技能来“入行”、在面试中需要注意些什么、以及对于数据科学家这一岗位的看法。然而我却很少看到人们写文章介绍他们刚入门时的想法。

其实,每个人在踏入数据科学这样一个崭新领域时都会有些手足无措,只不过因为这个领域实在是太“年轻”了,所以很少有人提到他们曾经的那份茫然。毕竟,“机器学习”、“数据科学”这样的专有名词在我们的生活中冒出来也是几年前才开始的事情,在那之前他们统统被称为“计算统计学”。

在这篇文章中我会介绍在数据科学这条路上一路走来的经历,尤其是刚刚开始时的感受。

刚开始时,我的表现并没有很出彩。况且,实话实说,我从未特别喜欢数学这个学科。然而,如今我已经开始由衷地欣赏这个领域的研究,因为它们让我们能够发现很多隐藏的秘密。

我叫Shahebaz,最近刚刚从JNTUH University(印度 - 贾瓦哈拉尔尼赫鲁科技大学)毕业,专业是电子与传播学工程。我最近在Kaggle,也就是一个数据科学项目在线比赛的网站,赢得了不少奖牌:包括解题竞赛中的四银一金以及讨论区的31枚金牌。如今,我已经是印度最年轻的 “Kaggle 二级大师”——我今年21岁。

在接触数据科学之前,我绝大多数的时间都花在了做一名“有节操的黑客”(也就是检验系统漏洞啦)、进行逆向开发以及常规的软件开发上。我也曾做过科技写手、安卓开发者以及 MEAN 开发者。(我的GitHub链接:https://github.com/shaz13)

而如今,我有幸能够和许多创新者、人工智能研究学者、数据科学家,在一个最富有创造力的数据科学团队一起工作——这一切都在印度班加罗尔的法国兴业银行研究中心。

从最开始说起

我其实最近才开始参加Kaggle上面的那些竞赛。大概从九个月之前开始,我才渐渐开始在比赛中赢得奖牌。说起来可能会比较奇怪,我曾经不敢参加 Kaggle 的竞赛——它们太难了!

所以,我究竟是如何开始的呢?

事情还要从2017年说起,我当时在为开源项目Oppia.org进行开发,作为一名项目成员我开始学习Python 2.7 。顺便提一句,我学的是“过时的”Python 版本(2.7),因此我现在又要重学一遍Python 3 。

我当时仅仅会建数组和组合字符串——很明显,我当时就是一个菜鸟Python程序员。

不过作为一名开源项目贡献者,我当时学到了编程的“艺术”、使用Git进行版本控制,还认识到结构良好、文档清晰的代码是多么重要。

有一天,当我在搜索Python 2.7除了能用来完成那个开源项目以外还能干什么的时候,我找到了Kaggle。当我打开 Kaggle的网页,看到泰坦尼克项目的描述,我不禁盯着它发愣——

“在以下这个挑战中,我们要求你完成一项关于‘究竟哪种人能够生还’的分析”。

当我读到这里,我真的愣住了。预测谁能够生还?真的不是来搞笑的吗?我立马就查了一下Kaggle这个网站到底是不是个骗人的,结果又一次愣住了——我意识到数据科学这个领域像极了一本在21世纪触手可及的科幻小说。

我看到的这一切就像一部科幻电影,它与我身处的现实世界截然不同。见到如此强大的存在,我怎么能够心甘情愿地“回到现实”?

我决定跨入这个领域,那时“学习数据科学”的热情几乎把我淹没——实话实说,那股热情现在还未消退呢。

我是如何学习的?有什么推荐的资源吗?

选择悖论——选择越多反而得到的越少。

如今,网络上有数不胜数的课程,这也印证了“选择悖论”——尤其是当你简简单单地Google一句“如何成为一名数据科学家”的时候。这种感觉就好比在众多佳肴中仅仅选择一道作为前菜。考虑到文章的篇幅,我列举我觉得比较好的一些资源。

关于Python学习的推荐书目

关于Python学习,我只有一句想说的:如果你用Python写代码且你的水平比较接近平均水平,那么下面这本书值得你买来学习。

Python数据结构与算法(Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser)

这本书深入研究了面向对象编程的概念、数据结构以及Python中的算法。我尤其喜欢它每一章节结尾处的练习题。如今当我在面对自己的项目时,我仍然会把它拿出来作为我优化和整理代码的参考书目。

手把手教你机器学习基础

在学会Python基础知识后,我购买了不少关于机器学习的书籍,其中比较值得推荐的有以下这些。

Python机器学习入门(作者:Andreas C. Müller与Sarah Guido)

这是一本介绍基础的机器学习知识的好书,对于初学者尤为友好,而它的作者则是著名机器学习框架Scikit-Learn的创始人。

读完这本书之后,我对Scikit-Learn已经非常熟悉,我甚至因此向Scikit-Learn提交了一个Pull请求(说不定就被采纳了呢)。

不过,如果你对数据科学已经比较熟悉并且在任何机器学习竞赛中已经获得过前20% 或者更好的成绩,你可能会觉得之前那本书非常无聊。但是,如果你真的认真读完了它,仍然会学到很多使用的技巧和方法,并能在未来的竞赛中百尺竿头更进一步。

另一个我觉得非常好用的慕课网站是“使用R语言进行统计性机器学习(入门)”(链接:http://www-bcf.usc.edu/~gareth/ISL/ )

如果我有朝一日成为了面试官,我会问面试者他们是否,学过并掌握了这一门课的知识,我也会观察他们能否正确应用他们。

哦,顺便提一句,这本书用的是R语言,但是我仍然会推荐它。

其他资源的推荐

对于在学术背景下,想要深入学习并探索统计学本质的人来说,《统计学习要素》是一本非常好的推荐书籍。这本书在ISLR和ESL上都有免费资源。所以你不用自掏腰包,也能找到大量的、免费的、关于机器学习的内容。

《统计学习要素》

经常有人问我——你在学习机器学习时用的是哪个MOOC课程?答案是哪门都没用。我并没有发现特别有用的在线课程,至少,我所注册的那些网站上都没有。原因如下:

•与传统纸质书相比,我们很难在视频中找到相关的参考概念;

•当讲解一个前后连贯的系统课程时,纸质书能介绍更多的细节。

这并不是说我讨厌MOOC课程。事实上,我正打算今年去做一些自己的MOOC课程。我建议前期先通过看书把某一方面课程的基础打扎实,暂时先不要把时间花在看视频上面。毫无疑问,通过看书和相关的资源,肯定能加深我对某些概念的理解,让我能用不同的视角对这些概念进行解读。

一个有理想的萌新生活

我经常在LinkedIn上面收到一些想要进入数据科学领域的人的信息。但是,如果你们之前的相关经验不足,攀登高峰的道路可能会非常曲折。现在我会根据我的经验,帮助你们走出这个困境。

下面是我曾经问过自己的问题:

1. 如何开始学习数据科学?

2. 我已经学了很多的算法,接下来要干什么?

3. 如何通过数据科学面试,找到一份工作?

4. 参加Kaggle项目有用吗?比赛能起到什么作用?

我曾经非常渴望有人能回答我这些问题!

现在,我可以通过我自己比较有成效的学习,来回答这个问题。答案并没有那么简单——它非常的复杂。

部分原因是因为专业领域问题:数据分析师,数据科学家和机器学习工程师是三个完全不同的头衔。(即使是使用同一头衔的岗位)各个公司里面相对应的工作性质也是不一样的。

1. 数据分析师需要进行一些SQL查询、建模或者业务分析。有些数据分析师也会转岗成为项目经理;

2. 数据科学家需要构建基本的模型,有些甚至需要博士学位。需要开展一些科研工作,或者在大规模的系统上进行模型调参或者环境部署;

3. 机器学习工程师主要是拥有数据科学知识的软件工作专家。

问题的关键在于...

对于你想要做的数据科学工作,并没有一个固定的任职要求说明书。

很多公司都还不清楚:“数据科学的背后到底是什么?主要解决什么问题?”在这样的情况下,连续的学习就变得非常重要了,这不是通过MOOC这种有时效的课程能做到的。

不忘初心,以实践为导向,方能始终。比如,从你的安卓手机中收集数据,爬取汇总推特上的消息,研究一下你最喜欢的演员的关系图,在你喜欢的电影里中使用一些机器学习的案例,等等。

我的“给图像起标题”项目

想象力是无限的,机器学习的发展潜力也是无限的。现在,我们来讨论一下,成为一个更好的数据科学家,需要get哪些技能。

成为数据科学家的学习清单

这张清单是成为数据科学家的必备知识。如果你想要进入某个具体的领域,那就需要学习更多的技能。

1.掌握统计学和概率论 :这两门学科相当于是数据科学领域里面的面包和黄油。我强烈建议要先学好统计学,除非你现在已经正在撰写相关领域的论文,或者从事学术研究。

尽管在现实生活中,跟写代码相比,你很少使用统计学知识。但是扎实的统计学知识,不仅能让你成为一个更优秀的数据科学家,更能帮你做出一些重要的决策。

2.参加数据科学比赛:比赛重在参与学习,不要太计较输赢。我能理解,赢得比赛和奖金听起来非常诱人。但是,开始时还是要放轻松点。在第一次进入50强榜单之前,我大概累计参与了1000多次比赛。罗马不是一天建成的,也没有人能一蹴而就。比赛能帮助你在竞争激烈的环境中省视自己。

3.让你做过的项目为你代言:持续更新你的GitHub文档,至少从头到尾实施2-3个项目(说明文档也要包括进来哦)。尽管,比赛是能让你使用技能的一种方式,但也有人并不赞同这种观点。比赛并不等同于现实的数据科学任务。他们就相当于是一家五星级餐厅端上来的现成拼盘。从零开始参与某一个具体的项目,能让你从现实的数据科学任务中积累经验,这才是最重要的。

有关数据科学的其他

如果你正在面试的工作职位描述,是要求有8-10年的spark经验“资深”数据科学家。那就赶紧跑吧!Spark从2011年才出现好吗!

有很多公司想朝数据科学发展,仅仅是因为听上去很厉害。有时候,你只需要用一个.groupby()函数,而不是机器学习。

在将来,这些工具的作用会大打折扣。首先要选择好你想要成为数据科学家的具体领域,再在这个领域中参与一些具体的项目和比赛。

公司会更倾向于聘请一些已经有公司项目经验的人。

假设你要去一家餐馆吃印度烤饭。你是喜欢一个还需要在YouTube上看食谱的新厨师,还是一个专门做印度烤饭的专业厨师?公司也是这样的。他们也更想要一些已经做过印度烤饭的,有经验的人。更好、更正宗的印度烤饭!

比如,我经常参加金融或者自然语言处理方面的比赛。在我几个月前参加的一个面试里面,相关的经验成了我的最大优势。我可以通过向面试官咨询很多该领域相关的问题,从而知道这个公司正在做什么项目,以及我认为自己在这个项目中适合做什么。

总而言之,要对你喜欢的项目保持热情,而不只是简单的工作。

最后,不要半途而废!

我曾经设想过一个很难以想象的场景。如果没有了Tensorflow怎么办?

你会发现你不再是一个数据科学家或者机器学习工程师!

是不是很好笑?但这却是事实。我相信,未来肯定还会诞生很多工具或数据科学库。曾经,XGBoot也是商业机密类的算法,但现在是完全开源的。以后还会有一些其他的工具来改变数据游戏的规则。

AutoML已经在领导下一个时代的数据科学解决方案。我个人发现H2O.ai上的无人驾驶AI非常棒!

H2O上的无人驾驶AI之火

当某项重复性的任务被自动化之后,总会带来一些工业上的变革。我们要及时获得业界前沿资讯,并学习核心技能,而不仅是专注于探索某些库的句法。可以尝试探索:

  • 生成对抗网络(GANs)
  • 强化学习
  • 机器学习的可解释性

要让自己保持对知识和行业趋势的敏感性。如果你不能使用.transform()和.fit()函数来改进自己,那你未来也就将会成为一个拟合度不高的分类器。

相关报道:

https://medium.com/analytics-vidhya/from-a-novice-to-the-youngest-kaggle-competition-master-and-landing-in-a-fortune-500-cc8acf49de

本文分享自微信公众号 - CDA数据分析师(cdacdacda)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-16

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

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券