数据科学家是做啥的?看看Stack Overflow这位大牛两年的经历就清楚了
2017/7/26 14:33:01
数据科学家看出来的是,老川普在用安卓机(真土豪应该不用卖肾来买苹果),同时还不爱发图片(到底是老年人),较为和善的推文都是下属用iPhone发的(终究是担心被炒鱿鱼)。
因为在川普这1390条推文中,有762条来自安卓机,628条来自iPhone,安卓机所发的负面语气(讨厌、悲哀等)要比iPhone高出80%,两者明显不是同一个人。
做这个分析的数据科学家就是David Robinson,他最近刚刚写过自己在Stack Overflow的第二个年度总结,他觉得整年的付出非常值得。
当然,他的主业不是盯川普,而是从Stack Overflow的数据鸟瞰整个软件开发生态,从数以百万计的用户、问答和日访问量中分析出结论。
对初学者来说,光是看看那些被同时使用的“标签”,就能发现技术的天然集群,从而自动把框架和软件包分类到它们所属的上一层级语言和集群中,完全不用手工注释。
不过,C#和SQL Server可能并不总是同时出现在同一个问答里,但它们往往会被用于同一技术堆栈的某个部分。有鉴于此,就需要参考一下Stack Overflow Careers的职业数据,看看哪些技术会被同一批开发者所用。
此外,Stack Exchange旗下还有各种不同主题的问答站,观察哪些社区倾向拥有同类活跃的用户,就可以建立起网站内部相互关联的网络。
这样的数据分析,有时候真的能直接影响产品的功能。
举例来说,在数量上掌握技术集群,能让我们改进开发者类型的模型,而这个模型会驱动Providence的目标(把用户和他们感兴趣的工作机会匹配到一起)。从商业的角度来说,帮助销售部、市场部以及社区团队解读数据,提供不同角度的洞见,对于做决策是非常有价值的。
以上这些实例,就是数据科学家要做的典型工作。但还算不上David Robinson的日常工作项目,他整天都在忙的事情还有:
-
设计、开发和测试机器学习功能
在Stack Overflow,如果你浏览的大部分问题都跟Python、JavaScript有关,你将会收到Python网络开发工作的广告。这是因为他们的Providence机器学习系统会主动把用户跟他们感兴趣的工作机匹配到一起。一
David Robinson在数据团队的目的,就是设计、改进和执行这些机器学习算法。比如,努力平衡工作机会的地理位置和用户在技术上的匹配度,确保用户能看到多样化的工作机会,而不是反复显示同样的职位。
这项工作主要包括设计和分析A/B测试,尤其是优化目标算法、广告设计与其他能促进点击率(CTR)的因素。这在统计学习上其乐无穷,有些情况你能发现学生时代的实验方法的新用法,有些情况你要积极去学新的统计方法。
-
开发数据科学框架并教授R语言
David Robinson是Stack Overflow第一个用R语言的人,R语言是一个很棒的工具,可以直接处理数据并回答有趣问题。
为了让其他工程师也能像他一样轻松地用R语言来学习数据中有趣的东西,David Robinson开始像AirBnb那样来开发R语言的内部数据包,构建可靠的工具和框架而非“一次性”的分析脚本,让人们各种各样的问题上都用得上。它们能够查询数据库,并从句法上分析内部的API,包括向用户隐藏各种安全和基础设施方面的问题。
这就牵涉到了建立一门R语言辅导课和撰写“入门”的材料。为此,David Robinson开过一门公开教程,介绍查询数据库的内部sqlstackr包。它后来延伸成一个总体的dplyr/tidyr/ggplot2介绍,David Robinson认为这比连接开发者与dplyr的普通教程更有用,因为那毕竟是他同事更为关心的东西。
David Robinson的想法是,随着数据团队的成长,以及更多工程师掌握了R语言,这些数据包和内部指南最终成长为一个真正的内部数据科学平台。
从去年的9月份开始,每周五都有R语言的学习活动,期间他会和一些工程师们通过编写R语言的程序来分析数据并创建和开发相关的模型。而这些分析结果和模型已经用在了实际的产品中,包括在数据团队以及其他开发团队之中。nj
大约有6个工程师会定期地参与R语言的学习活动,而他们都干出了不错的成果。他特别欣赏的是Ian Allen和Jisoo Shin,他们在这几个月的学习活动中提出了许多好的观点。Ian Allen和Jisoo Shin两人是去年夏季加入的公司,曾对学习使用R语言来辅助产品功能上的设计非常感兴趣。这些参与到R语言学习的工程师最终都证明了数据分析也可以成为工程师们日常工作中的一部分。
-
写产品化的代码
David Robinson说,这一年来,他写的代码也悄然发生着变化。
Stack Overflow网站背后实际上使用的是C#代码,在他工作的第一年,是需要写C#的,尽管更多的时候在用R;直到第二年,他才完全停止写C#。David Robinson上一次提交C#程序这种产品化的代码是在一年前了,作为一个果粉,他终于可以不用碰Windows了。
这种变化体现了一个数据科学家在工程师团队里的角色变迁。David Robinson现在的日常工作是数据分析而不是上线产品的新功能,可以更专注于写R程序,而不需要在其他编程语言之间切换,从而提升工作效率。
他现在和工程师们配合工作,通过数据分析和更新模型来改善线上的产品。一直以来,David Robinson都会通过写一些技术文档,来记录需要查询的数据源和提出的模型。这种流量数据非常难于提取和分析,但通过编写程序将这些数据转化为可查询的数据库表格,他后续的数据分析和挖掘工作才得以顺利完成。
-
招聘第二个数据科学家
作为团队中唯一的一位数据科学家,David Robinson表示相当艰辛:
目前我的大多数统计工作都是需要仅靠自己来完成的,对此我需要极其地谨慎。这是因为即使我在报告中使用了错误的统计假设方法,而身边几乎也没有能够人会意识到。”
这个问题一直存在着,直到去年的12月份,他们终于雇佣了第二个数据科学家:Julia Silge
对于Julia的加入,David Robinson表示特别兴奋,因为自从他们在2016年的rOpenSci会议上相识并共同开发tidytext包,他们这一年来一直在一起工作。Julia是一位优秀的同事,多了她,他们既能够在统计分析工作上合作,也能够专注于工作中的各个小部分。她在写作和沟通上同样经验丰富,这对接下来的目标至关重要。
-
跨团队协作
前面提到的Providence个项目,是招聘类广告信息方面的数据科学工作,目的是想让有求职需求的Stack Overflow用户能看到他感兴趣的广告。让查看Python和Javasrcipt相关问题的用户,找到Python方向的Web开发工作,这样的机制能为公司带来重要利润,这也说明数据对于商业的推动是多么的重要。
Stack Overflow的另一个广告项目是展示广告(Display Ads),不同于招聘类广告,展示广告主要是为相关技术人员推销对应的产品和服务。David Robinson与展示广告团队运营组共同协作,对广告的展示和评估设计了许多方法,特别是应对广告拦截软件的举措,其中潜在的大量数据必定会使公司受益。