Rachel:我之所以开设数据科学专栏,是因为我时常会收到咨询相关问题的邮件。如果你也有此类困惑,可以给我发邮件到rachel@fast.ai,将你的问题清晰而简洁的列出来。上一期的大数据专栏讲述了你应该怎样组建你的数据科学与工程师队伍,并给了对深度学习感兴趣的学生一些建议。
此次专栏的话题是我从收到的邮件中归纳出来的。提问人往往编程能力有限,住在湾区之外,但有意向成为一名数据科学家,比如以下这些邮件:
Q1:我在一家大银行做财务分析师,想往技术领域转行做软件工程师。我对机器学习很感兴趣,看过您的邮件《人工智能的多种危机》。如果要进入人工智能领域工作,我是否需要博/硕士学位?
Q2:我目前数学博士六年级在读,马上就要毕业了。我对大数据很感兴趣,如果要进入这个领域工作,我能做什么或者应该准备些什么,才能具备相关公司需要的技能呢?我正在读一些相关方面的书籍,试着找一些我能做的小项目。我要去哪里找到吸引雇主的项目呢,您对此有什么建议吗?
Q3:我有STEM(科学、技术、工程和数学)学历,以前做过研究人员和教师。我现在正在职业转型中,想寻找那些需要分析和指导技能的工业界岗位。我的知识更侧重于科学方面而不是软件。我认为互联网将成为一个势不可挡的领域,使得我们能够在没有实际分享的情况下收集信息。您能不能推荐一些在教师预算能力内的编程课程?您认为哪些编程语言或相关技能对开发工作是最有效的?
A:我认为自己没有正统的数据科学的教育背景,虽然乍看起来好像我有:我在高中学了两年C++,在大学主修计算机科学(还有数学),获得了概率论博士学位,曾做过金融工程师。然而,我的计算机课程都是理论性的,我的数学毕业论文也都是基于假设的(和计算没有任何关系!!),这些年我C/C++用得越来越少,而MATLAB越来越多(真想吐槽我为什么要这么做?!?我有时甚至在MATLAB上写网页爬虫......)我在大学所学的知识能让我证明NP完全问题或图灵可计算问题,但这些与测试、版本控制、网页程序、网络如何工作没有一点关系。我之前做金融工程师的公司用的也是现在高新技术产业并不会用的专有软件/语言。
在能源贸易行业做了两年金融工程师后,我发现我最爱的是这份工作中的编程和数据。我烦透了大公司的官僚主义和过时的专用软件,想做些改变,于是参加了2012年2月的数据科学会议,学习更多湾区的数据科学知识。在那里,我被彻底完全地感染了。对大数据的热情、一切令人激动的工具(很多我之前根本没听说过)、那些放弃学术界或大公司生活而专注于他们所热爱的创业公司的大咖故事...各种和以前大相径庭的见闻让我耳目一新。
开完会后,我在旧金山又待了几天,向创业者们做访谈,和那些好久不见的熟人喝咖啡,我发觉我应该搬到旧金山去——每个人都愿意给予我帮助,而且大家都特别喜欢Four Barrel Coffee(几乎和我聊过的所有人都愿意在那里约见)
我曾经是个追星族,但转到科技行业后我就彻底退圈了...一开始我和那些科技领域的人谈话时,总觉得他们像在说另一种语言。
我在德克萨斯州长大,20多岁的时候生活在宾夕法尼亚和北卡莱罗纳州,不认识任何技术领域的人。我从没上过统计学课程,以为概率论就是真正的分析。我对创业公司和技术公司的运营没有任何了解,我第一次采访一个初创公司的时候,一个被采访者自夸他们公司如何不用扩张人手就快速获利,我惊恐地反问道:“你的意思是这个公司不赚钱?!”(是的,我大声地说了出来,用一种惊讶的语调)。那场面我现在想起来都觉得丢人。在另一场采访里,我压根没搞明白“impression”这个概念(当播放一则互联网广告时),以至于我花了不少时间才理顺问题的逻辑。
我在这里待了5年了,以下是一些我希望在我当初转行时应该知道的东西。我知道我是白人、美国公民、在毕业的学校拿过不少奖学金、也没有学贷,而且转行时还单身、没有孩子,对于不满足这些条件的人来说,他们可能会面临更加险阻的道路。你可以对于我的这些趣闻轶事半信半疑,但我希望下面的这些建议能够真正帮到你:
1
为转行数据科学做准备
1. 最重要的事:找到一种可以使你在当前工作中学到东西的工作方式。去做一个包含更多编程或数据分析并对你的雇主有价值的项目。接受任何看似无聊的任务,试着让它自动化运行。即使这个过程要花5倍的时间(即使你只做一次),你也要做下去,因为这是一个学习的过程。
2. 分析任何你已有的数据:即将发生的购买潮研究(比如要买哪种微波炉),个人健康指数的追踪数据,你烹饪的营养指数,你正在为孩子找的学前班。把它转变为一个小型研究项目,并为它写一个博客。例如,如果你是个老师,你可以分析你的学生的毕业成绩。
3. 学习最重要的数据科学软件:Python的数据科学技能栈(pandas/numpy/scipy)是最应该学习的技能(读这本书!),紧随其后的是SQL。如果我要转行数据科学,我会在学习其他语言之前重点学习Python和SQL。Python适用范围很广也很灵活。如果你决定更多的参与软件开发工作或全力以赴学习机器学习,你将因此获益良多。
4. 用Kaggle。浏览辅导材料、参加论坛、参加比赛(不用担心你的名次,每天都做得更好一点就行了),这是学习实用机器学习技能的最好方法。
5. 寻找你领域里的数据科学和技术见面会。随着近几年大数据的爆炸,现在全世界很多城市都有这些见面会。比如,Google最近在加利福尼亚州举办了一个TensorFlow峰会,但是世界各地都有在线上观看直播的群体(包括阿布贾、尼日利亚、哥印拜陀、印度和摩洛哥)
2
在线课程
在线课程是非常好的资源。你在自己家中就可以向世界上最顶尖的数据科学家们学习。课后作业通常是最能学到东西的地方,所以千万不要跳过它们。这里列举了几个我最喜欢的课程:
Andrew Ng(吴恩达)在Coursera的经典课程machine learning(虽然没有在 Octave\MATLAB上花费过多时间,但是他依然在解释算法方面做得很好。用Python来完成课后作业可能会更好,像这样http://www.johnwittenauer.net/machine-learning-exercises-in-python-part-1/)
fast.ai的Practical Deep Learning for Coders课程。透露一下:我参与了创建这个课程,并且我们收到了很多来自学生的正面反馈。唯一的要求就是你具有一年的编程经验。
Udacity(优达学城)的data science sequence
Udacity(优达学城)的Web Development Course。严格来说,你不是必须懂得这些才能成为一名数据科学家,但是成为一个更好的软件开发者有助于使你成为更好的数据科学家,并且知道如何开发你自己的web程序也是很有用处的。
但就像上面那个提问者强调的,过多的信息、教程和在线课程会让人感到无所适从。学习数据科学的最大风险之一,就是不断从一件事跳到另一件事,但是却从来没有真正完成一件事,或者是深入学习某一个主题足够长的时间。找到一个“足够好”的课程或项目并持续做下去是非常重要的,加入或创建一个交流会、一起完成一门在线课程将对此很有帮助。
在线课程对于你获取知识是非常有用(完成全部的课后作业十分重要,你就是在这个过程中学到东西的),尽管目前来看,从他们那里拿到结课证书并不会有什么助益(仅仅是目前——我知道这是一个正在成长的新领域)。这是我面试了很多数据科学求职者以及我自身多次求职的经验之谈。
3
消息渠道
Twitter出人意料地是一个找到有趣文章和机会的途径。例如,我的合作者杰里米·霍华德为他最喜欢的机器学习论文和博文 机器学习论文和博文提供了超过1000条链接(附注:你需要登录Twitter才能阅读这个链接的内容)。也许弄明白关注谁将花费你一定的时间(这个过程包括关注、取消关注、搜索等),一个捷径是查看上面的链接中哪些人写出了你比较喜欢的推文,然后直接关注他们。查找公司里那些你感兴趣的数据科学家,查找那些你使用的或感兴趣的库和工具的作者。当你找到你喜欢的教程或博文候,找出它的作者,接着查找他们转发了谁的推文。如果你不确定如何发送推文或推送些什么,我推荐你把Twitter看作一个你喜欢的(公共的)书签链接。我会尽我所能地把所有我可能在几月之内会回来参考的文章或教程发成推文。
machine learning subreddit是一个近期资讯的很好渠道。你可以找到很多一开始无法理解,但是几个月后你会理解得越来越多的资讯。
注册一些时事通讯,比如Import AI newsletter 和 WildML news会很有帮助。
4
搬到湾区
尽你所能搬到湾区!我知道对许多人来说这是不可能的(尤其是你有小孩或者签证/合法居住权问题)。但这里有如此多的数据科学见面会,学生组织,讨论会和研究会。这里也是一个由活跃、有雄心、渴望学习的数据科学家们组成的神奇的社区。我都弄不明白哪些对我的学习最有帮助了。尽管我在搬到这里之前就开始自学机器学习,但来到旧金山以后我的学习过程立即加速了很多。
来到旧金山的第一年对我来说是一段疯狂学习的时期:我参加了大量的交流会,完成了几个在线课程,参加了数不清的讨论会和研究会,在一个专注于数据的创业公司中工作学到了很多,更重要的是,遇到了很多可以请教的前辈。我完全低估了与那些开发令人激动的工具和技术的人进行常规交流的神奇效用,那种被一群热爱学习和推动先进技术的人包围着的感觉是很难描述的。我有幸参加了上面提到的那个全世界人瞩目的TensorFlow研发峰会,我最喜欢那个峰会的一点就是那些我遇到的人。
一个搬来这里的好办法就是接受一个“不是你梦想中的工作”。比如,尽量获得一个周围满是值得学习的人的职位,尽管这个职位在其他方面并不吸引你。我在2012年初决定转行,那时Insight或其他数据科学训练营还不存在。我申请了几个“梦想中的工作”却都被拒绝了。事后,我觉得这是因为我缺乏一些必备技能,不知道如何营销自己,以及求职准备不足等。
2012年3月,一个令我兴奋的创业公司的分析师职位给我带来了希望,伴随着一份可以让我在日后成为一个数据科学/建模从业者的非正式协议。总的来说,这是一个不错的选择,于是我迅速搬到了旧金山。我加入的那家公司在很多方面都很不错(包括有一个把时间花在Bishop模式识别的每周阅读组和可以见到Trevor Hastie 和Jerome Friedman的交流活动),并且我的经理很支持我去做职责以外更多的工程性项目。一年以后,我获得了我一直梦寐以求的工作:在一家有着优异数据集的创业公司兼任数据科学家和软件工程师。
这里还有一些不错的训练营,这些训练营可以提供很多机会,帮你接触数据科学领域的有趣的人和公司。
Insight Data Science是一个为STEM(科学、技术、工程、数学领域)博士开设的7周免费加强训练营。缺点:因为只有7周,所以训练主要集中在关系网和求职方面。我觉得这主要是对那些已经具备大部分所需技能的人。另外,进入训练营的竞争也很激烈。
像Galvanize和Metis这样的数据科学训练营。优点:12周身历其境的体验提供了训练体系和交流机会。缺点:这些训练营相当贵。你需要思考从你的背景到你的需求有多远的距离。确切点说,如果你只有一点编程经验,那么参加训练营是必须的,但如果你正从相关领域转型过来,可能就过头了。另外,你独立自学的积极性如何?如果你比较纠结,那么责任制和体系化的训练营可能会有帮助。
是否应该参加一个训练营需要考虑很多因素。其中重要的一点就是你需要多少组织和外部激励。现在在网上可以获得很多惊艳的资源,但你的纪律性如何?你得接受那些你需要学好的东西。比如我发现学习在线课程和完成课后作业对我非常有帮助,过去我常常嫌弃这些课程和作业的难度比起完成一个独立项目来就像小儿科,但现在我接受了它们并努力去完成。另一个需要问的问题是你需要学多少东西,并且你自己能学多快?如果你要学的东西很多,那么训练营也许可以加速学习过程。我觉得训练营最突出的作用就是教你如何将一堆不同的工具/技术一起使用。
如果不想走工作这条路,你也可以搬来这里。但有几点要求,包括:充足的存款、合法的美国居住权、没有孩子等,所以对很多人来说这并不是一个选择。然而,如果你有条件的话(比如通过投资获得美国的永久居住权),这也是一个不错的选择。找一份全职技术工作(如数据科学或者工程学)需要大量学习来准备面试,并且要面临高强度工作的挑战,甚至在家也不能放松。
我在自己的全职工作岗位上做了几次快速求职,事后看来,这导致我做出了几次不是最优的决定。你肯定能找到很多方式去用面试、编写小项目和参加研讨会和学习小组来充满你的时间。另外,当我转而去教人们多久换一次工作,两份工作之间花时间去学习新东西或旅行(不用担心你简历上的空窗期,只要你能很好的回答你这段时间都学了什么)时,有两件事令我很惊讶。
附加说明:我5年前搬来这里时并没察觉到湾区的性别歧视,种族歧视,年龄歧视,变性人歧视和道德败坏(尽管它浮夸的宣称去创造一个更好的未来)。但仅仅几年以后,我就气馁的想要彻底离开高科技产业。背叛、冷淡和残忍的故事比比皆是:举例来说,我身边有人因为家庭发生紧急情况而被同事利用,我的许多朋友和亲人都有类似的糟糕经历。尽管如此,由那些充满激情的、有吸引力的人们组成的并且可以使用最先进的科技的社区使我留在了这里,并且给了我选择。现在,我为在fast.ai从事解决最有趣的问题并将产生巨大的影响的工作而感到幸运。
5
以下是有关问题的答案
我需要人工智能的硕士或博士学历吗?
我坚信答案是否定的,而且我正致力于使这件事变得更现实。事实上,AI博士通常不能很好地处理相关的实际业务问题,因为这不是他们学习的内容。学术界专注于拓展领域的理论边界,并且是由在顶级期刊发表文章而驱动(这与创造一个商业可行的业务是非常不一样的!)。在这里你可以了解更多关于fast.ai的教育理念,也可以看看我们免费的在线课程Practical Deep Learning for Coders。
我应该在学完Python之后学习Ruby吗?
一个有追求的数据科学家没有理由要学Ruby。它和Python太相似,不会教给你新的概念(就像学习函数式语言或底层语言那样),而且它也没有形成一个数据科学生态系统。
我要在哪里找到让雇主感兴趣的小项目?
我想在网上找些随机数据集应该不难,但是我猜雇主真正想知道的是我怎样解决实际问题。不要觉得你的小程序应该独一无二,或者用了一个独特的、不寻常的数据集。把你从Kaggle网站获得的数据集应用到小项目中就不错。就算你的项目没有突破也没关系。当创建小程序、博客文章或者教程时,把你的受众定位成这方面知识能力仅次于你的人,因为他们正是你最适合去帮助的人。你可能会担心一个项目或博客不能引起该领域内资深人员或经验人士的兴趣。没关系,只要你做好这些工作就很不错了。