全文共5066字,预计学习时长15分钟
图源:Unsplash
红遍网络的数据科学项目,在实际面试中却毫无用处
对于有抱负的数据科学家如何真正获得一份高收入的数据科学职位,人们存在着巨大的误解,而这与项目有关。 我所说的“项目”,是指在JupyterNotebook上尝试一些最新的机器学习或深度学习算法,然后把工作成果上传到Github上,仿佛这最终会赢得招聘主管的青睐一样。 但他们其实并不会仔细查阅你个人项目中的代码。如果你这样想,你就有了我所说的项目心态。 项目心态形容的是这样一种心态:一个接着一个地做机器学习项目,并把它们写到你的简历上,最终会让你得到高薪的数据科学工作,而事实上,这样的简历不会给很多人留下深刻印象。 我怎么会知道呢? 因为我曾经就是那个傻瓜。在申请前,花了无数宝贵时间执行各种项目来丰富我的“作品集”。我在项目方面取得了很大进展,并获得了数据领域知名人士的认可。 但现在,我成了一名在旧金山工作的数据科学家,我才明白曾经有多么错误,更糟糕的是,这么多人在步我的后尘。这个故事警示你真的需要正确看待项目,以及项目将会给你带来什么(在不久的将来)。 Ps:请记住,我只申请了加州旧金山的数据科学家职位。所以我的论述可能不适用于你所在的地区或你申请的职位。这只是我个人的观点(实际上是两个人的观点,下文会提及)。 但这个故事也有普遍性,因为我看到世界各地的人们都受到“项目”的(虚假)诱惑力和潜力的吸引。图源:Unsplash
招聘主管实际测试的背后,其实是在检测你的“智力”
项目的“主宰”——面试的“小白”。 在我申请数据科学职位之前,我花了4-5周的时间来完成我的项目,因为我认为这是正确的。 作为一名昔日职业钢琴家,我想在音乐方面做点什么。这让我想到了神经网络,具体而言,用长短期记忆网络来生成新的音乐。 我花了整整两个星期的时间阅读这方面的学术论文,回想起来,我大概能理解其中的30%。但在这30%之内,有些东西真的让我很困扰。我觉得一些用人工智能生成曲调的研究人员并不具备深入的乐理知识。这一点从他们通过超级复杂的神经网络架构作曲的方式上可以看出,这些架构似乎并没有反映出真正的音乐家是如何作曲的。使用长短期记忆创作音乐的学术研究实例 这让我非常恼火,于是我决定从头开始,基于隐马尔可夫模型创建一个算法。在大约800行纯python代码之后,我开发了自己的音乐创作算法。我叫它PopMusic Maker。 基本上,PopMusic Maker将音乐数据作为输入,然后分解音符,找出这些音符之间的统计关系,并根据这些统计数据重新创作一首全新的流行歌曲。 Pop Music Maker的构建基础 项目一夜爆红,网络争议不断。 我在网站上发布了相关的文章,没过几天,文章就爆红了,每天都有成千上万的人开始阅读这篇文章。后来,TravisOliphant(Numpy的创始人兼Anaconda的创始人)和O'ReillyMedia的本·罗瑞卡在他们的社交媒体上分享了我的内容。 随着文章越来越受欢迎,每天都有数百人通过我创建的flask网站使用我的算法。这导致我的网站不断崩溃,因为我的代码部署的AWS EC2实例太小,无法处理巨大的流量。网上的一些人开始称我为骗子,因为当他们想尝试一下我的算法时,网站却无法运行。 很快,这些批评迅速在许多社交媒体网站上演变成一场全民的激烈争论。一些有博士学位的研究人员对我基于贝叶斯的错误研究方法表示愤怒。其他人则支持我,为我的成果辩护(包括本·罗瑞卡)。简单地说,我在某种程度上重新点燃了网上贝叶斯与频率论统计的圣战。 一开始我决定向那些因为某种原因而感到受辱的人道歉,我很和气地询问如何改进我的方法。但经过几天的道歉,我再也受不了了。争辩把我弄得精疲力尽,我只想远离互联网。于是我便关掉了所有的电子设备。图源:Unsplash
这个故事告诉我们什么呢? 讲了这个故事,可能你会认为,尽管存在争议,但在我的简历上体现这个项目会帮助我获得数据科学的工作。 但结果并没有。除了一个小型创业公司的人抛出橄榄枝外,没有人真正关心。总体而言,爆红只是一个小小的火花,被湾区科技的强风吹熄了。 更重要的是,招聘委员会的人并没有真的测试我的项目。因为招聘过程并不是基于你做了多少项目。这是我在许多数据科学求职者中常常看到的一个固有猜想。 不只是我有这样的观点;来自DoorDash的JeffreyLi谈到了在有抱负的数据科学家身上看到的缺陷: “我在市场上大多数数据科学家身上看到的最大缺陷是,将机器学习模型与业务影响联系起来的能力。很多非常聪明的人建立了这个非常复杂的五层神经网络,做出了非常好的预测,得分非常高。但当我们深入研究特定模式对业务的影响时,他们常常无法给出答案。” 如果数据科学招聘不是基于项目,那么它是基于什么?它基于招聘方所说的“智力测试”。面试的背后,其实是“智力测试”……我真的不喜欢“智力”这个词,因为这是一个暗示生物禀赋的词(要么有这种天赋,要么没有)。但不幸的是,我看到它频繁地,而且是隐秘地,出现于科技招聘。 我经常听到人们在背后说,“那个人因为不够聪明,不能胜任技术工作”等类似这样的话。我最早是从我的好友们那里听到这些话的,他们是加利福尼亚州湾区的软件工程师。 这个词让我感觉很压抑、很虚幻。 但是在对科技世界里“智力”这个词进行了很长时间的思考之后,我开始明白它的实际意思。通过理解它的含义,我发现它并没有什么“生物学”意义,也就是说任何人只要有足够的准备就可以提高智力水平。更重要的是,我发现了通过数据科学面试的秘诀。
“智力测试”通关秘诀:掌握这4项技能
智力测试是所有招聘过程的基础。它是支撑技术挑战、考察任务和白板问题的基础。测试有四个主要要素,分别是: 1. 分析思维2. 变量提取3. 边界情况检测4. 流程优化 前三项技能是最重要的。最好具备第四项技能,因为一旦招聘主管对前三点足够满意,就会问到第四点。但所有这四点都是用来展示未来技术工作的潜力和能力。 简要概括:下面的四项技能非常重要,对统计、代码和SQL的理解也同样重要。我认为这是一个众所周知且显而易见的真理,所以我不会在这里深入地介绍基础知识。 1. 分析思维 分析思维是指将一个巨大的问题分解成一个个小部分,然后依次处理的能力。简而言之,它是在构建一个包含多个检查点的心理路线图,从而达成最终的解决方案。 这部分的智力测试要么暗含在一个实际的编码挑战中,要么在一个理论的业务/产品问题中。主管会给你一个问题陈述,一开始可能是一个开放式的。这是有意为之,因为最终结果不是这个测试的重点。所以解决方案是否真的有效并不重要。重要的协调一个多步骤计划来处理一个复杂问题的能力。 之所以要考察这种能力,是因为在实际的数据科学工作中,会出现过于复杂的问题,以至于几乎不能达成解决方案。绘制战略路线图是必需的,同时还要概述影响业务或技术堆栈的每一步的优点和缺点。但要实现这一目标,数据科学家还需要具备灵活的战略头脑,以生成带有清楚的检查点的各种操作解决方案。 对于想要更好地掌握这项技能的求职者来说,应多多去尝试解决Leetcode上的问题,多浏览数据科学产品的问题。有关产品问题的一个例子是: 一家送餐公司准备发布一款全新UI应用程序。目标是通过增加送货人的配送次数来增加其收入。请概述一个测试策略,检验新版应用程序是否优于旧版。 2. 变量提取 变量提取指的是你能想出多少相关变量来解决目前的问题。例如,有这样一个场景:“一栋楼里有两部电梯,有些人抱怨其中一部比另一部慢。确认投诉是否合法都需要考虑什么因素?” 这类思维实验通常是由不熟悉数据科学但想要测试“智力”的产品/非数据人士提出的。这里的“智力”指的是,他们会重点评估你能提出多少与面试官一致的问题所需变量。 但是如何和从未见过的人在认知过程中保持一致呢?好消息是,这些实验中99%的变量(我认为)可归为以下这些类别: 1. 时间(高峰期会影响电梯的快慢吗?)2. 地点(会不会有些楼层的人比其他楼层多呢?)3. 技术问题(也许电梯存在技术问题,与人们的内在认知无关)4. 用户统计(大楼里都有些什么人?访客与工作人员使用的是同一部电梯吗?) 变量提取之所以重要,是因为它触及了实验的核心。进行实验需要测试相关的变量,如果你能想出更合适的变量来提高测试的准确性,甚至是招聘主管没有想过的,这是一项非常有价值的技能。 可以通过尽可能多地处理不同的数据来提高这方面的能力,分析各种时间序列数据、各种地理数据,所有这一切都能让你更熟悉数据,拓宽知识面。图源:Unsplash
3. 边界情况检测 边界情况检测通常在你和招聘主管一起处理前两个部分之后进行。从前两者得到足够的评估后,主管随后会向你抛出一个难题。他/她会想出一些办法来彻底推翻你想出的路线图和所提取的变量。 这是面试中很难的一部分,因为你会因为当场暴露自己的逻辑漏洞而感到慌乱。冷静下来,仔细倾听主管们给你的暗示。通常情况下,他们心里已经有了一些答案,你必须挖掘出来,他们会给出一点提示,指引你说出他们想要的答案。 他们抛出这样的难题,扰乱你的思维过程,看你在从未遇到过的情况下表现得有多好。实践中的数据科学工作流程会有数百个没有考虑过的边界情况,尤其是当实时生产时。 如何练习:确实无法练习。遇到这种情况的时候,深呼吸,如有需要,问一些问题,并听从主管的提示。 4. 流程优化 最后一个要素不是必需的,通常会在技术面试结束后的剩余时间出现。这项技能以智力测试的第一个衡量标准(分析思维)为基础。一旦你在脑海中想出了某个方法,经理就会问是否有比当前方法更好的解决问题的方法。 他们这样做是因为产业中所有的数据科学工作一开始都是粗略的,需要几次迭代来改进。但这一点只是在工作的初稿完成之后。这就是为什么我认为这方面的排名低于前三点的原因。
数据科学项目在求职中的实际作用
图源:Unsplash
我认为项目在申请的最初阶段确实能起到作用。对我来说,涉及到以下几点:
- 建立自信。很多人在申请公司之前把完成项目视为必要的准备步骤(一种内部惯例)。
- 解决变量提取和优化组件。项目过程中会用到许多不同形式的数据。它提供了用pipeline优化数据过程的空间。 3.提供一个获得第一通招聘电话的机会。招聘人员的职责不是智力测试,而是把应聘者交给招聘主管进行测试。这些项目还很好地向招聘人员展示了你的主动性和对数据科学的坚持。 但在最初的筛选之后,项目就没什么分量了。
究其原因,有以下三点:
- 项目不会帮助你通过技术挑战。
- 项目不会证明你作为数据科学家的潜力,只是告诉主管你复制或记忆现有代码的能力。
- 招聘主管没有时间一页页地看你的notebook。他们每天都会收到数百份申请,而且他们还要管理自己的团队,这已经是一份全职工作了。 最后需要强调的一点,重要是对你已完成工作的外界验证。 换句话说,你的机器学习项目获得83%的AUC并不能向主管证明你作为未来数据科学家的潜力。但是如果有数百人试过你的机器,可能会对你的能力展示更有帮助。 还是不相信我说的话?最后,请听哥伦比亚大学数据科学研究所所长JeannetteWing所说的: “计算机科学家每天都在想一些解决问题的技术和方法。
摘取其中的一些:
- 如何设计一个算法来解决某个问题
- 如何将某个问题分解成更小的部分
- 如何确定抽象层
- 如何确定组件之间的接口 通过思考这些解决问题的技术和方法,人们成功研发了一个大系统或解决了一个大问题,这就是我所说的“像计算机科学家一样思考”。 IBM首席数据科学家说道:“IBM的每个人都有一个共同点,那就是他们都是顾问。
他们需要与客户合作的能力,他们需要与高管开会,并且能够明智地谈论解决方案。” 人们往往高估了数据科学项目在求职过程中的作用,明白了这些的你,还想要追求项目经验吗? 不如脚踏实地,先学会文章这四个真正重要的面试技巧吧!
留言 点赞 关注
我们一起分享AI学习与发展的干货
如需转载,请后台留言,遵守转载规范