您的位置:首页 > 其它

一窥Twitter产品链,数据科学家怎样在各类公司发挥作用?

2017-11-16 00:00 477 查看


原文标题:Doing Data Science at Twitter
作者:Robert Chang
翻译:孙涛
校对:苏金六
本文长度为[b]6000字[/b],建议阅读[b]12分钟[/b]
从入职Twitter两年的Robert Chang所写的这篇文章中,你既可以一窥Twitter整个产品链的构成,又能获悉数据科学是怎样在各类型公司中发挥作用的。




动机

2015年6月17日,我在Twitter工作整整两周年了(https://twitter.com/search?q=%23twitterversary&src=typd)。回顾过去,Twitter公司数据科学面貌发生了不少变化:

Twitter很多核心产品原先并非基于机器学习,而如今机器学习却在其中扮演与日俱增的作用(例如:你不在时,我们替你)(https://blog.twitter.com/official/en_us/a/2015/while-you-were-away-0.html)

工具方面,我们摒弃了Pig语言,转而用Scalding(https://github.com/twitter/scalding)来编写所有新的数据管道。Scalding是基于cascading的Scala
DSL,易于明确Hadoop MapReduce任务

一步步地,我们选择了嵌入式模型,因为数据科学家能与产品和工程团队合作更紧密

上面这些仅仅是众多变化中的一小部分。个人方面,近期我的工作领域也从Growth(增长部)拓展到PIE部(产品,仪表化和实验),研究我们的自主A/B测试平台的统计方法。

在Twitter工作是令人热血的,因为我能第一手地观察和学习一家大型科技公司是怎么运用数据和数据科学来创造具有竞争力的优势。

同时,我想研究数据科学的想法愈发浓厚。

“大数据就像青少年性行为:大家都在谈论,却没人知道怎么搞。人人以为别人都在搞,所以自己也宣称正在搞”------Dan Ariely

目前已经有数不胜数的讨论(http://www.datatau.com/;https://www.quora.com/topic/Data-Science)围绕着如何成为数据科学家。这些讨论信息量极大,很多人获益,我就是获益者之一。但是讨论者过分强调技术、工具和技巧。而我认为满怀斗志的数据科学家知晓实战的工作内容和前景是件同样重要的事情。

为此,我留下了在twitter的两周年印迹(这篇文章)。我想用这篇文章来分享我的个人经验,也希望同行们能有所借鉴我的经验。
 
A类数据科学家v.s. B类数据科学家

在加入Twitter之前,我印象中的数据科学家应该得是全才,从数学/Stat(数据统计分析软件),到CS(客户机/服务器)/ML(机器学习)/算法,再到data viz(数据可视化)。除了专业技巧之外,写作和沟通技巧也同样很重要。进一步说,优化、引导和管理项目对于后期的项目执行至关重要。哦对了,你还得宣传数据导向文化。总之,祝你好运!

入职数月后,我明白了一个事情,虽然全才的确存在,无数人也在不断努力成为全才,但是要想马上达到所有上述的要求是不切合实际的。几乎和数据相关的一切都离不开数据科学。而作为一个新人的我,想找到一席之地是心有怵怵的。

渐渐地,我意识到数据科学家之间是有清晰明了的分类的。我当时还不能理解得那么透彻,直到后来Michael Hochster(https://www.quora.com/profile/Michael-Hochster)在Quora上的回答让我茅塞顿开。他精妙的归纳到:

A类数据科学家:A表示分析(Analysis)。该类科学家主要专注于用统计学方法来理解和处理数据。他们和统计学家很相似(也算是),但他们还知道处理数据的实际细节,而这些是不会包含在统计学教学大纲里的,例如:数据清理、处理大型数据库的方法、可视化、特定领域专业深度知识、数据相关写作等。

B类数据科学家:B表示建模(Building)。该类科学家同A类数据科学家一样都有一定统计学背景知识,但他们更是优秀的码农甚至是训练有素的软件工程师。B类数据科学家主要专注于将数据应用到生产中。他们建立模型来和用户交互,经常推荐像产品、可能认识的人、广告、电影和搜索结果等。

我希望我能早点知道这些。实际上,作为一个满怀抱负的数据科学家,在做事业规划时,一定要把这种数据工程师之间的差异性牢记在心。

说到自己,我专业背景是数学、运筹学和统计学。我认为自己是A类数据科学家,但是我也很欣赏B类和工程更加关联的项目。
 
初创型公司、成长型公司和具有一定规模的公司中的数据科学

在找科技类工作时最普遍的一个选择就是该选择大型公司还是小型公司(https://medium.com/the-year-of-the-looking-glass/start-ups-versus-big-companies-f275800e78e5)。关于这个话题已经有很多不错的探讨,然而专门涉及数据科学的信息少之又少。问题也就是说,在依赖于公司阶段和规模的情况下,数据科学的角色会如何变化。

不同阶段的公司产生数据的速度、种类和数据量是不同的。一家着眼于让产品和市场匹配的初创型公司可能不需要Hadoop,因为没有那么多需要处理的数据。成长型公司和数据关系更加紧密,但可能使用PostgreSQL
(https://www.postgresql.org/)或者Vertica就已经绰绰有余了。但像Twitter这类大公司如果不用Hadoop和Map-Reduce框架就不能高效处理所有数据。
在Twitter我理解最深的一点就是数据科学家从数据中获取价值的能力和所在公司数据平台的完善度息息相关。你得想明白以后想成为哪类数据科学家,也得评估下公司是否支持你的目标。这不仅很明智,而且对确保上述相关性的合适正确也非常重要。

初创型公司:主要的分析工作聚焦于日志记录、ETL程序建立、数据建模和模型设计,从而来跟踪和储存数据。目标则是关注于分析基础建立而不是分析行为本身。

成长型公司:因为公司在成长,所以数据量也可能在增加。数据平台因此需要调整,但在已有的分析基础上,会有一个到洞察的自然过渡。除非公司本意是为了策略差异化而运用数据科学(http://multithreaded.stitchfix.com/blog/2015/03/31/advice-for-data-scientists/),不然很多分析工作都是在围绕制定KPI、推动增长和寻找下一个增长点。

具有一定规模的公司:当公司形成规模了,数据方面也会形成规模。公司需要使用数据来产生新优势或维持既有优势。例如,搜索结果需要优化,建议需要更加关联,物流和运作需要更高效——在这个时间段和工作环节中,像机器学习工程师、优化专家、体验设计师等专业人士都会扮演着重要角色。

我加入Twitter的时候,Twitter已经拥有非常成熟的数据平台和稳定的基础设施。仓库干净可靠,ETL程序每天能轻松处理成百上千的Map-Reduce任务。更重要的是,我们有一批才华卓越的数据科学家,潜心研究数据平台、产品洞察、增长、实验、搜索/相关和其他聚焦领域。
 
我的历程

我是当时第一个投身增长部的数据科学家。而且事实上,把产品、工程学和数据科学融合在一起就花费了好几个月,才最终让数据科学家在整个过程中扮演着至关重要的角色。基于我和产品团队紧密合作的经验,我把我的职责分成四个方面:

产品洞察

数据管道

实验(A/B测试)

建模

 
我将介绍在这四个方面我的体验和学习。
 



1. 产品洞察

在消费者导向科技公司工作的独特之一就是我们可以利用数据来理解和推测顾客的心声和偏好。当用户和产品互动时,我们会记录有用信息,存储下来用于后期分析。

这个过程称作日志记录或者仪表化,而且内容一直在变化。数据科学家经常发现某个分析异常困难,因为数据要么变形了,要么就是不合适或者缺失了。因此,数据科学家和工程师建立良好的合作关系非常重要,因为数据科学家能够帮助工程师确认bug或系统中非计划行为。反过来,工程师也能够帮助数据科学家解决“数据缺陷”问题,让数据更饱满、更相关和更准确。

下面是我在Twitter的几个产品关联分析的例子:

推送通知分析——多少用户可以享受推送通知功能?遍布用户端?还是客户端?各种推送通知的点击率如何?

短信发送率——如何计算Twitter依靠不同运营商的短信发送率?我们在新兴国家的发送率更低么?如何提升呢?

多个账号——为什么在某些国家一人拥有多个账号的情况更多见?是什么驱使了人们去开好几个账号?

分析可从多层面入手——有时你只需要根据简单的数据来提供直接的答案(推送通知分析的例子),有时你得想出一些新方法来计算新颖重要的运算标准(短信发送率的例子),最终你可能得深入理解用户行为(多个账号)。

通过分析产品来做洞察是一个反反复复的过程。它需要你不断质疑提出的问题,理解任务环境,做出正确数据库来回答问题。随着时间的推移,你就会成为数据方面的大师,理解数据的真实含义。你能更加准确的评估完成一个分析需要多长时间。更重要的是,你会慢慢地从一个被动的状态转变成主动积极的状态,开始推荐一些领导们没想到的有趣分析。因为这些领导们不知道数据在那些环节有这么重要的作用,也不知道迥然不同的数据源可以互补并以一种特殊的方式来合并。

用到的技能:


日志记录和仪表化。识别数据缺陷。和工程师建立良好关系。

操控、识别和使用数据库的能力。

理解不同类型的分析。更准确的判断分析的难度和所需时间。

知道你的查询语言。使用R或者Python的经典数据清理技巧。

 




2. 数据管道

尽管A类数据科学家可能不编写直接面对客户的代码,但令人惊讶的是,他们却经常把代码存进代码库里,用于数据管道处理。

你如果知道Unix中管道符号“|”是用来优化一系列命令的执行的,那么你也会知道数据管道也很简单,就是组合在一起的一系列运算,可帮助我们反复自动获取、清理和整合数据。

加入Twitter之前,我的分析工作大部分都是临时性的。代码在我的电脑上运行一两次,很少复查,不受监控。而现在数据管道诞生了,一系列新的问题又出现了,例如依赖性管理、进程调度、资源分配、监督、错误反馈和警告发送。
下面是创建数据管道的典型过程:

STEP1:得意识到若能反复产生数据库,那么世界会得到改善。
STEP2:
确定需求后,从设计最终产品入手,例如设计输出数据库的数据模型。
STEP3:编写代码,可以用Pig、Scalding或者SQL,这个取决于数据存放形式。
STEP4:提交代码来做代码评审。收到反馈后可做一些额外调整,因为要么你的任务逻辑可能是错的,要么你的代码在速度和效率上可能不是最优。
STEP5:实施空运行来测试一切是否如期运行。
STEP6:合并代码到master上。部署代码并安排任务。
STEP7:创建监督、错误报告和警告提示等功能以防任何错误。

很显然,数据管道比临时性分析要更加复杂,但优点就是任务可以自行运行,产生的数据可以启动dashboard,从而分享给其他用户。更重要的也是容易忽略的一点,就是这是一个很好的学习过程。你接受了工程方面最好的训练,打下了基础,说不定以后你就需要建立特定管道,例如机器学习模型(本文最后部分我会讨论)和A/B测试平台。

用到的技巧:

控制版本,目前最常用的软件是Git

学会做代码评审并高效提供反馈

当任务失败时知道如何测试、空运行和修正代码

依赖性管理、任务安排、资源分配、监督、错误报告和警告发送。

 



3. 实验(A/B测试)

此时此刻,你正在使用的Twitter App可能和我用的会有微妙的不同。你拥有的一些功能特征可能我根本看不见。因为Twitter有很多用户,所以后台会让一小部分用户先体验一些还未公布的新功能,来观察分析这些特定用户的反应,并和那些不享受新功能的用户进行比较。这就是A/B测试,用来测试哪种情况更好。

个人认为A/B测试是在大型消费者导向型科技公司工作的特别福利之一。作为一个数据科学家,你得通过运行随机、可控的实验来建立因果关联(使用观察数据真的很难做到这一点)。在Twitter,“没有一天不在运行实验”——工程副总裁AlexRoetter说到。A/B测试已扎根于我们的DNA和产品发展周期中。

做A/B测试的典型过程是:采集样本->分配bucket->开始处理->测量结果->对比分析。听起来很简单?恰恰相反,我认为A/B测试是最被低估和最需要技巧的分析工作。这些技巧在学校是学不到的。为了阐述我的观点,我们再来看看上面五个步骤和一些实际可能遇到的问题:

采集样本——我们需要多少样本?每个bucket得有多少用户?我们如何确保实验有说服力?

分配Bucket——哪些用户可以参加实验?代码中从哪儿开始放置bucket并开始显示处理结果?Bucket的放置会导致数据稀释么(例如有些用户虽然享受额外功能却从未发现)?

开始处理——是否有其他团队也在努力攻克app中的同样“领地”?如何解决实验冲突?又如何确保数据不受污染?

测量结果——实验假设是什么?实验的成功标准是什么?我们可以追踪么?又怎么追踪?我们需要额外做记录么?

对比分析——假设我们发现已登陆用户使用“#”的频率大幅度增加,这是信息噪音导致的么?我们如何确定结果具有统计学显著性?就算有统计学显著性,那有实际显著性么?

若想解决上述问题,得精通统计学。即使你在设计实验的时候非常严格,保不准别人拖后腿。项目经理可能会忍不住过早地读取数据或者只挑选想要的结果(这就是人性)。工程师可能会忘记记录用来计算成功标准的特别信息。也可能实验代码也错了,导致形成非预期偏差。

作为一个数据科学家,一定要“吹毛求疵”,严管团队。因实验设计出错而浪费的时间是不能挽回的。更糟糕的是,基于错误数据的错误决定比任何东西都更具有摧毁性。

用到的技能:

假设检验:统计检验、P值、统计显著性、统计功效、效应大小、多重检验

实验中的隐患:延滞效应、标准筛选、数据稀释和bucket异常

 
 



4. 预测型模型与机器学习

在Twitter工作期间,我第一个大项目是给现有的邮件通知产品增加一系列疲劳规则,从而让用户收到更少的垃圾邮件。尽管这还挺高大上,但是我们也深知邮件推送是挽留用户的最大法宝(我们是对此做过实验才得出的结论),因此在两者之间达成一种平衡才是关键。

理解了这个关键点后,我很快决定专注于开发触发式邮件。只有交互发生时,邮件才会抵达用户收件箱。作为一枚满怀抱负、年轻有为并一心想证明自身价值的数据科学家,我决定建立一个别致的机器学习模型来预测用户的邮件点击率。我一鼓作气,用Pig收集了一大堆用户层面特征,并建立了一个随机森林模型来预测邮件点击。我的想法的核心就是如果用户长时间保持很低的点击率,那么我们就可以放心的封停那封邮件。

但是有一个问题——上面所有的任务都是在我自己计算机上用R语言完成的。虽然人们欣赏我的成果,但是他们却不能使用我的模型。因为我的成果还没有产品化,基础设施也不能和我的模型兼容。多么痛的一课!

一年后,我有一个很好的机会,可以和增长部的另外两位数据科学家一起建立流失预测模型。因为之前已经积累了建立数据管道的经验,这次我发现建立机器学习管道其实挺大同小异的——得有训练阶段,可以离线通过Python进行周期性模型更新;得有预测环节,得每天整合用户特征,再让预测功能一展拳脚来给每个用户打出流失率分值。

我们花费数周创建管道,最终确定它有很好的预测效果,并且通过评分应用到Vertica、HDFS 和 Manhattan(Twitter自己的重要商店)。由于我们的模型让分析专家、数据科学家和工程服务都更容易评分,这无疑在宣传和推动我们模型的使用。这是我学到的关于建立产业化模型最重要的一课。

讨论到现在我一直特意不提建立机器学习模型所需要的其他步骤——确定问题、定义标签、收集训练数据、筛选工程师、建立雏形和客观验证模型。这些当然很重要,但是我感觉这些知识已经被研究的很透彻了,关于这些话题也有很多好建议(http://ml.posthaven.com/machine-learning-done-wrong)。

我认为大部分优秀的数据科学家,特别是A类数据科学家都有着相反的问题。他们知道怎么做,但是不确定如何把这些模型应用到生态系统中。我的建议是多和在这个方面拥有丰富经验的B类数据科学家交流,从而找到自己需要的技能,发现突破口,磨练技能。这样在时机成熟之际,你就可以转到这些项目上了。让我用下面引用的话来总结下这部分:

“机器学习不等同于R语言脚本。机器学习是立足于数学,用编码来表达,再汇集成软件。你得成为一个工程师,学习编写可读、可反复使用的代码:你的代码会被其他人反复的阅读,远超过你自己,因此要学着用一种别人也能阅读的方式去编写代码。”——Ian
Wong,来自于他在哥伦比亚数据科学课上的嘉宾讲座。

用到的技能:


模式识别:识别那些可以通过建模技术来解决的问题

建模和机器学习的所有基础:探索性数据分析、特征建立、特征筛选、模型筛选、训练/验证/测试和模型估值

产品化:上述提到的关于数据管道的所有东西。设置你的输出值,这样别人和别的服务都能访问。

 
一些后续思考……

成为一名数据科学家是令人激动的。发现一个特别的洞察结果是无与伦比的欢喜的。从零开始一步一步创建数据管道或机器学习模型会让人得到深深的满足感。在A/B测试中,有一种“扮演上帝”的乐趣。当然这条路荆棘密布、困难重重,并非说的那么轻松。不过,有志者事竟成,那些满怀热情、才华横溢的有志者定能橘子洲头、挥斥方遒。
 
原文链接: https://medium.com/@rchang/my-two-year-journey-as-a-data-scientist-at-twitter-f0c13298aee6
 译者简介

孙涛,生物医学工程研究生在读,在业余时间喜欢阅读有关数据分析、机器学习之类的书,学习python语言编程等,希望能在数据派平台上熟识更多爱好数据科学的伙伴,今后能在数据科学的道路上走的更远。

翻译组招募信息

工作内容:将选取好的外文前沿文章准确地翻译成流畅的中文。如果你是数据科学/统计学/计算机专业的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友,数据派翻译组欢迎你们加入!

你能得到:提高对于数据科学前沿的认知,提高对外文新闻来源渠道的认知,海外的朋友可以和国内技术应用发展保持联系,数据派团队产学研的背景为志愿者带来好的发展机遇。

其他福利:和来自于名企的数据科学工作者,北大清华以及海外等名校学生共同合作、交流。

点击文末“阅读原文”加入数据派团队~

为保证发文质量、树立口碑,数据派现设立“错别字基金”,鼓励读者积极纠错
若您在阅读文章过程中发现任何错误,请在文末留言,或到后台反馈,经小编确认后,数据派将向检举读者发8.8元红包
同一位读者指出同一篇文章多处错误,奖金不变。不同读者指出同一处错误,奖励第一位读者。
感谢一直以来您的关注和支持,希望您能够监督数据派产出更加高质的内容

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派THUID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。





点击“阅读原文”加入组织~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐