网上有篇百万点击的帖子,R 和Python:数据科学1V1 Battle,两种语言相互竞争,试图成为“数据科学中The One”。学姐觉得两者都是强大的工具,各有各的优势(即,高级统计库vs实现生产代码);一般来说,考虑它们如何互补比选择一个更有意义。
经常搜索数据科学家职位的同学会发现,并不是所有的数据科学招聘信息的首选技能列表中都包含了R和Python。这就产生了一个潜在对比:当公司雇佣一个精通R但不懂Python的数据科学家时,他们想要的是什么?反之亦然?
为了寻找答案,小编研究了无数的职位JD,标题,和工作地点。从一个受欢迎的职位与两个不同的搜索查询网站:一个包含条款数据科学与R但没Python和包含python但没R,特定工作返回搜索结果达到约30%少于Python搜索特定的工作。毫不奇怪,包含这两种语言的搜索比任何一种特定语言的搜索返回的结果都要多得多。
西海岸Python,东海岸爱R?
作为第一步,我查看了针对R和Python工作搜索最常见的10个城市的职位分类。当我收集数据时,这两种语言的职位数量最多的地方是纽约和波士顿(尽管两周后我发现,硅谷接手了Python的工作,而纽约和波士顿的R工作保持不变)。在前两个城市之后,职位分布有了一些变化。
DC对能流利使用R 数据科学家的需求最大,旧金山对精通Python数据科学家却情有独钟。我猜DC对R数据科学家的需求可能是政治数据科学家的公司驱动的,他们中的许多人可能拥有政治学博士学位,而R在这一领域有着深厚的根基。
数据科学职位“双标”
要了解这些职位的招聘有何不同,其实有一个快速的方法;**计算每组招聘职位中出现的数据科学工具和技术的数量。**也就是说,在R和Python数据科学工作中使用了哪些工具和技术。
通过对你搜“Research”或“Machine Learning”,“Cloud”这些词在JD中有一些不同之处。在R Data science的招聘信息中,我们可以清楚地看到,最常用的词是“Research”,其次是“SQL”和“Statistics”等术语。在Python数据科学的招聘启事中,“Machine Learning”是最常见的,其次是“SQL”、“Research”,以及处理AWS和spark等大数据的工具。
Topic Modeling On Job Descriptions
我们可以使用Topic Modeling更深入地研究工作中JD的内容。首先在模型拟合之前做一些文本清理,同时尝试了解有多少Topic适合建模,而不是随意选择一个数字。关于这方面的帮助,我们可以求助于R中的“ldatuning”包。
在向ldatuning提供一个文档术语矩阵(DTM)之后,它将返回一些不同的度量标准,用于评估要处理的主题的数量。下图是来自R职位描述的信息;看起来25个主题是一个合理的选择。Python描述的结果几乎相同,因此Python模型中也使用了25个主题。
下面是产生的Topic,首先从R职位开始。这些术语按照它们在每个Topic上的权重按降序排列。有些话题不是很有趣,因为它们与招聘惯例和福利相关(例如,10,13,14,17,22),甚至与纽约市(6)也有关系,因为很多招聘信息都是在纽约发布的。多个Topic似乎代表了健康和保健行业(18,23)。
其他的描述科学研究,特别是生物和临床试验研究(2,7,25)-这有助于解释达勒姆,NC在名单上的位置,因为它是生物技术/制药研究的温床。商业世界的主题15广泛涉及商业,20似乎与金融有关,24描述市场研究。
Topic 5可以证实上面关于政治学工作的假设,因为它包含了与政策、政府和调查相关的术语。最后,我们来谈谈我称之为一般数据科学的话题;例如,主题3、8、11、16和18涵盖了团队合作、广义分析、机器学习、统计和数据库等Topic。
接下来,我们可以从Python JD转移到主题分析结果。忽略经验和福利相关的话题,我们看到一些类似的Topic正在出现。例如,主题14一般代表健康研究、9个市场营销、11个金融、24个商业,而我们有一般的数据科学主题,比如4、20、25个强调团队合作、机器学习和分析。
现在,让我们来看看差异,这里有一些很大的差异。这是一个提到大数据相关主题的。Topic 1中除了专门处理大数据的平台(hadoop、spark)外,还包含了big这个词;主题23似乎也以某种格式表示大型数据。主题21描述了云计算,有两个主题是关于数据库的(10,22),以及多个与软件工程相关的主题(15,19)。
从中懂了什么?
当然,R和Python的数据科学家的职位信息有很多相似之处(例如,SQL - Data必须存在于某个地方),但也有一些关键的区别。
从最高层次上看,招聘具有R经验的数据科学家似乎是在寻找具有丰富分析经验的学术型研究人员。因为R在学术界占主导地位,也很符合R职位描述中的许多研究主题。招聘Python流利数据科学家的帖子似乎是在寻找更有计算机科学或工程背景的人,与数据工程师或机器学习工程师的描述相符。
在另一个层面上,在2014年的Quora上被Michael Hoster (Stitchfix的现任数据科学主管)阐述过了,他解释了两种不同类型的数据科学家:
**类型A数据科学家:**是用于分析的。这种类型主要关注数据的意义,或者以一种相当静态的方式使用数据。
A类数据科学家可以编写足够好的代码来处理数据,但不一定是专家。A型数据科学家可能是实验设计、预测、建模、统计推断或其他统计部门通常教授的方面的专家。但是,一般来说,数据科学家的工作成果并不是学术统计有时似乎暗示的“p值和置信区间”(例如,对于在制药行业工作的传统统计人员来说,有时是这样)。在谷歌,类型A数据科学家被称为统计学家、定量分析师、决策支持工程分析师或数据科学家,可能还有更多。
**类型B数据科学家:**B是用于构建的。B型数据科学家与A型数据科学家共享一些统计背景,但他们同样是强大的程序员,可能是受过培训的软件工程师。B类型的数据科学家主要对在产品中使用数据感兴趣。他们建立与用户交互的模型,经常提供推荐(产品,你可能认识的人,广告,电影,搜索结果)。在谷歌,B型数据科学家通常被称为软件工程师。B型数据科学家可能会使用“数据科学家”这个术语来指代他们自己,因为这个领域的定义一直在变化,所以他们可能是对的。但我看到这个术语在我这里提出的一般方式中使用得最多。
这两种类型之间的区别也在Robert Chang的另一篇媒体文章中得到了很好的解释和扩展。在我看来,A型数据科学家似乎与我们发现的招聘R型数据科学家和招聘Python数据科学家广告中的B型数据科学家的信息非常吻合。
最近,AirBnB将其数据科学部门重组为3个分支:数据科学家-分析、数据科学家-算法和数据科学家-推理。从这里的数据来看,似乎Python型述的数据科学家适合算法分支,R型数据科学家适合推理分支,或者可能适合分析跟踪。
最后,R和python是数据科学的关键工具,了解它们无疑会比只了解其中一个更有帮助。