数据科学家是做啥的?看看Stack Overflow这位大牛两年的经历就清楚了

翻译 | AI科技大本营(rgznai100)

参与 | 波波

有个数据科学家常常调侃自己:既不如统计学家懂统计,又不如软件工程师懂软件……

可他一旦出手,却总能手到擒来、毫不含糊,比如分析川普竞选期间使用Twitter的规律:

(话说读完川普的1390条推文,你能看出点啥?)

数据科学家看出来的是,老川普在用安卓机(真土豪应该不用卖肾来买苹果),同时还不爱发图片(到底是老年人),较为和善的推文都是下属用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与展示广告团队运营组共同协作,对广告的展示和评估设计了许多方法,特别是应对广告拦截软件的举措,其中潜在的大量数据必定会使公司受益。

如果你对此感兴趣,可以去读Steve Feldman所写的“为什么Stack Overflow不在乎你屏蔽广告”:

https://stackoverflow.blog/2016/10/26/why-stack-overflow-doesnt-care-about-ad-blockers/

  • 写作

关于写作,David Robinson觉得对于做数据科学来说,也是必不可少的。

他说,“这是一项被我低估的优势。写作可以让我对自己所做的数据分析工作进行更多分享,比如分析了目前最冷门的编程技术。”

从去年的12月到现在,他写了许多有关公司内容的文章:

在纽约、旧金山、伦敦和班加罗尔做软件开发有哪些不同之处; https://stackoverflow.blog/2016/11/30/how-do-developers-in-new-york-san-francisco-london-and-bangalore-differ/ 软件开发、网站站长和Ninjas:关于职位名称的含义; https://stackoverflow.blog/2016/12/20/developers-webmasters-and-ninjas-whats-in-a-job-title/ 软件开发无国界:Stack Overflow的全球化; https://stackoverflow.blog/2017/01/30/developers-without-borders-the-global-stack-overflow-network/ 在校学生会使用Stack Overflow吗; https://stackoverflow.blog/2017/02/15/how-do-students-use-stack-overflow/ 会有人真正去访问Stack Overflow的主页吗; https://stackoverflow.blog/2017/03/09/anyone-actually-visit-stack-overflows-home-page/ 深夜最爱使用什么编程语言; https://stackoverflow.blog/2017/04/19/programming-languages-used-late-night/ 浅谈Stack Overflow的发展趋势; https://stackoverflow.blog/2017/05/09/introducing-stack-overflow-trends/ Stack Overflow上所呈现的移动端开发现状; https://stackoverflow.blog/2017/05/16/exploring-state-mobile-development-stack-overflow-trends/ Stack Overflow:让百万开发人员选择弃用Vim; https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim/ 常敲空格键的开发者比常敲Tab键的赚钱更多; https://stackoverflow.blog/2017/06/15/developers-use-spaces-make-money-use-tabs/

当然,团队的其他成员也写了一些有关数据分析的文章:

编程技术的变迁历史(Kevin Montrose) https://www.stackoverflowbusiness.com/blog/the-changing-landscape-of-programming-technologies 相比在旧金山,在瑞典做软件开发的好处 (Julia Silge) https://stackoverflow.blog/2017/01/16/benefits-for-developers-from-san-francisco-to-sweden/ 2016年度Stack Overflow女性用户调研 (Julia Silge) https://stackoverflow.blog/2017/01/19/women-in-the-2016-stack-over-survey/ 最喜欢在周末使用的编程语言 (Julia Silge) https://stackoverflow.blog/2017/02/07/what-programming-languages-weekends/ 2017年软件开发方面的招聘趋势 (Alyssa Mazzina和Julia Silge) https://stackoverflow.blog/2017/03/09/developer-hiring-trends-2017/ 最现实的软件开发者是…… (Julia Silge) https://stackoverflow.blog/2017/03/28/realistic-developer-fiction/ 在Stack Overflow上搜索职位的背后 (Aurélien Gasser) https://medium.com/@aurelien.gasser/a-dive-into-stack-overflow-jobs-search-62bc6e628f83 软件开发者进入劳动市场的现状 (Julia Silge) https://stackoverflow.blog/2017/06/12/new-kids-block-understanding-developers-entering-workforce-today/

写完博客,David Robinson把文章整理成书,他已经出版了一本电子书《经验主义贝叶斯:从一个棒球统计案例说起》。此外,他还跟Julia共同出了一本R语言的书——《利用R语言进行文本挖掘》(Text Mining with R),你可以在这里免费阅读:http://tidytextmining.com/。他说自己还会继续下去。

Julia和我在O’Reilly上发表和出版了一本书,叫《利用R语言进行文本挖掘》(Text Mining with R),现在已经在Amazon上架了并且可以免费在线阅读-(http://tidytextmining.com/)。David Robinson也出了一本电子书,《经验主义贝叶斯:从一个棒球统计案例说起》,这本电子书参考了一系列的博文。

在AI科技大本营微信公众号(rgznai100)会话回复“数据”,获得《经验主义贝叶斯:从一个棒球统计案例说起》电子书所参考的文章地址。

我很享受将一些博客整理成书籍的过程,明年我会继续做下去。

原文链接:

http://varianceexplained.org/r/year_data_scientist/ http://varianceexplained.org/r/two-years-data-scientist/

原文发布于微信公众号 - AI科技大本营(rgznai100)

原文发表时间:2017-07-21

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

英语基础不好,能学好编程吗?

英语基础不好,能学好编程吗?相信这是摆在很多学习编程但英语不好的人面前的困惑。 ? 那么英语到底影不影响对编程的学习呢,小编就来和你们说说。 如果你英文英语基础...

2436
来自专栏数据和云

学习Oracle的三重境界

最近在“恩墨微信大讲堂”仍然有很多朋友经常问起学习Oracle的方法,讲到学习之中的艰辛和困惑,这让我想起以前写过的一段文字,摘录在这里,供大家参考!这些文字是...

3449
来自专栏月牙寂

我的系统设计之道

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

3085
来自专栏Crossin的编程教室

在知乎上学 Python - 入门篇

本文对知乎上关于Python入门方面的问答、文章、专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间。

1831
来自专栏镁客网

万能指纹出现,能解锁各种指纹密码,以后都要用人脸识别了

1762
来自专栏程序员互动联盟

为啥计算机语言难学?

很多人觉得计算机太难学了,里面很多专业术语都不明白,如果单纯从人类语言的角度考虑,很多计算机语言的确很难直接体现出很人性化的地方,所以要学好计算机语言,首先不是...

3326
来自专栏ACM算法日常

新手入门 | 算法书籍推荐

公众号设立以来,很多同学都在问如何入门、提高,以及有什么好的算法书籍可以学习。这周空闲时间我就大概在网上整理了一下,由于每个人的性格、学习习惯都不...

4992
来自专栏斜述视角

数数背后的数学思维

在那个原始时代,那个时候人类还没有文字、没有数学,原始人都一起住在山洞里面,每天就是靠打猎、采集水果为生。

762
来自专栏数据科学与人工智能

【Python环境】《Python数据科学入门》试译 第一章 简介

“数据!数据!数据!”他焦急地高叫着,“(如果没有数据),巧妇难为无米之炊啊!” --Arthur Conan Doyle 数据力量 我们正生活在一个被数据淹...

2286
来自专栏架构师之旅

轻松学习设计模式之设计模式认知篇

伴随着上面的问题,我们逐步开始今天的话题,要想开始学习设计模式,我们必须要对它有一个了解,这样才能更好的理解和应用,在我看来设计模式就是一种成熟的面向对象软件开...

1354

扫码关注云+社区

领取腾讯云代金券