随着“数据驱动”的价值越来越明显,越来越多的企事业开始组建或扩大数据分析队伍,“数据科学家”这个职位也越来越被大家关注。
–“数据科学家”是不是“统计师”更性感的版本?
–起码得有统计、应用数学、计算机的背景?
–干了 5 年的软件开发,写 SQL 如反掌观纹,换行做数据科学家很容易吧?
–我们市场部也想更加“数字化”,但不懂编程,应该如何起步?
经历了一些不同阶段的大数据项目之后,我意识到,在“数据科学家”这个角色没定义好之前,“数据化”会遇到很多挑战。这个角色的定义相当模糊,造成很多混淆–很像对“数字化”本身的混淆。
我翻阅了一下招聘网站上数据科学家的职责,有的专门通过统计和机器学习来建立预测模型,有的定义则更加宽泛。那么到底“数据科学家”具备什么样的技能,能做哪些事?很多希望实现“数据驱动”的企业对数据科学家的期望比较笼统,并且在不断修正中,这很正常,那么你,怎样才能更好地为这一职位做好准备?
网上已经有很多种答案,本文并不想提出新的诠释,而是尽量将最主流的观点提供给大家,并结合现有的技术,为有志于成为数据科学家的朋友,提供建议。
定义一:数据科学家起码是统计师
“数据科学家是对统计师更性感的称谓” -Nate Silver
Nate Silver 是个著名的统计师,凭借 2008 年美国总统竞选中,成功地预测了所有 50 个州里的 49 个州竞选结果,而一战成名,并被《时代周刊》评为 2009 年度最有影响力的 100 人之一。
他说:“数据科学家是对统计师更性感的称谓。…,数据科学家(这个称谓)有点多余,人们不应该批评“统计师”这个词”。
不过,数据本身在变化——越来越多,越来越快,种类越来越丰富,统计师们用以前的办法难以应对,所以数据科学家至少是比统计师们更善于编程的那些人。
定义二:数据科学家用编程和统计,将数据更有用
随着数据分析和业务需求的发展,以及分工的细化,这个称谓也在逐渐演化。 比如,Pandora 的研究部门负责人 Michael Hochester 是这样定义数据工程师的:
“数据科学家是一些能综合运用编程和统计技术的人,他们致力于通过各种方式让将数据更发挥作用。”
他认为数据科学家分为两类: (参见"What is data scientist"一文)
A 类: 分析型
主要像统计学家那样,进行静态的数据分析,并能清洗数据。他们用不同办法处理较大的数据集,可视化,非常熟悉某个领域,能很好解读数据等等;
分析型数据科学家也能通过写代码来处理数据,但不像工程师那样专业。他们更擅长实验设计,预测、建模、统计推断和其他统计工作。结论会更直白,而不是像 P 值和置信区间那么学术化。提炼出简洁有力的结论,并传达给其他人,是数据科学家常常被低估而异常重要的职责之一。
B 类: 搭建型
除了统计知识之外,搭建型数据科学家编程很强,关注于用在线生产数据搭建模型,并和其他系统连接,实现自动更新结果、或自动和用户互动,比如推荐系统(产品、你认识的人、广告、电影、查询结果等等)。
一个好的分析师具备哪些特点?
我最喜欢这个问题,网上的答案也五花八门。 有推荐一大堆技术的,有一大堆统计名词的。 Monica Rogati 的答案值得回味:她在《一个好的分析师由哪些条件组成?》里提出四点:
1. 务实
技术和模型是否最优,远不如所带来的影响更重要。 几个星期的工作,是否能为公司带来相应收益,结论能带来多大的改变? 务实,意味着在开始之间搞清楚:1)可能的,和最有可能的结果;2)所需的时间、人力和资源。
花几个星期研究一个新算法,甚至学一个新技术,很能带来成就感。但对公司来讲,是不是真的比一个基于简单的启发法 (Heuristics) 的结论有用得多? 不考虑机会成本,就可能纠结于一个最多能带来 2% 提升的难题,而忽略了能带来 20% 提升的课题。
所以,当产品经理跟你讲:“能不能帮忙把 xxx 产品今年的数据帮我汇总一下”,一定要问问用途,比如“为啥需要啊?”,“想看哪方面?”,对方也许关心渠道增长,或者想进行捆绑营销。不清楚目的,而一头扎进各种报表,不仅费时费力,而且结论的针对性和深度有限。
2. 好奇
数据分析有点像侦探工作。 重大发现都是从蛛丝马迹开始,看似无关的线索可能有深藏其后的关联。追,可能能获得重要的洞察,不追……也没人怪你。线索 = 数据,多种来源、不同规范程度的数据。80% 的精力都会耗费在提取、清理和规范数据上,所以,缺乏好奇心,就很难坚持追下去,而最终真相的价值可能超过最新最酷的机器学习算法。
3. 技术和解决问题的能力
技术、能力和业务知识,缺一不可。
技术意味着对统计、算法和软件工具的熟悉。 并不非要有统计学的硕士学位,但起码得明白最小二乘法之类的基本统计方法和如何解读结果。
能力意味着能解决实际问题,能坚持不懈地用各种技术进行探索,灵活地编程,使用命令行,对不同数据源进行清洗、转换, 应用不同的算法和模型。 计算机学位也不是必须的,实际上很多技术侠连正式的计算机课程都没修过。
业务知识是指和具体领域、公司或部门相关的背景知识。比如分析医疗设备数据时,如果了解哪些耗材配套哪些设备? 哪些医院科室常做哪些检测?就可以更明智地使用数据。
没人能对所有这些都熟悉。好在信息时代让学习变得更加简单。最快的途径是边做边学,比如自己做些小项目,并跟着有经验的数据科学家学习。不同的公司所看重的技术、工具、业务知识也不同。 很多公司非常看重统计学基础,比如提供网络游戏和社区的 Twitch 的数据科学家 Brad Schumitsch谈到:
“在 Twitch, 我们的数据科学团队由三部分组成:统计、编程和产品知识。 我们从来不招统计学不强的人。你可以是个很强的程序员,但如果不懂贝叶斯定理, 我只能建议你去我们工程部。”
所以,不同企业或不同阶段,对技术、能力和业务知识这三方面的侧重不同。 Google 的数据科学家可能有博士学位,对计算机和数学很有研究。电商领域的同样岗位可能对电商非常熟悉,却不一定经过正式的数学或计算机培训。
4. 沟通能力
能不能把复杂的概念阐述得言简意赅,而不用专业术语? 能不能几秒钟之内就做一个简明扼要的图? 能不能忍住不把所有前提、场景、局限性都一股脑倒出来,来保证结论的绝对正确?
是不是觉得可视化和简洁的结论只是给不懂技术的人,或者不如你聪明的人看的?
我的大数据导师老丁曾是惠普全球运营报表部门的老大,当时我负责此平台开源后的市场工作。宣传资料做了两版之后,老丁扔过来一句话“太技术”,等到第三版,老丁急了,扔过来一本乳品生产企业的宣传册,说“按这办”。“乳品”vs“数据库”,我有点懵…老丁是 80 年代放弃成为第二批计算机学科院士的机会,毅然投入美帝数据库一线工作几十年的老 IT 了,那全局观,那思路,不可能错啊。
N 个月之后,我明白了。 宣传也好,数据科学家也好,有一点是相同的:我们的结论不应只追求正确,更重要的是简洁。让别人彻底明白,才有可能及时促成行动。
这个过程责任重大,所涉及到的前提、场景和局限性都很重要,但应先等一等,不能一股脑抛给你的听众。它们终究会被简化掉,由数据科学家主动去简化,不比被以后的人随意简化强吗?
如何成为数据科学家?
数据科学家的收入和职业前景不错,那么如何才能找到一份数据科学家的工作? 另一个相近的版本是,很多企业建立内部数据科学部门的时机也逐渐成熟,如何培养内部人员成为数据科学家? 网上能找到不少关于数据科学家方方面面技能的教程、课程或视频,包括分析方法、开源工具、编程语言等。如果英文较好,还能从 InfoQ、Quora、StackOverflow 等获得不少国外大牛的指点。不过许多攻略都是这样:1)你需要 A、B、C、D 这些技能;2)这里是链接。Python 的链接在这,R 的链接在那,机器学习的视频在最下面,再去安个 Hadoop 和 SPARK。 这是最常见的学习方式,但很费时费力,效果没那么好。 很多培训用的是处理过的规范数据,演示效果很好,但现实却不太一样。 实际上,大家更认可“边干边学”的效果,可是在找到数据科学家的工作之前,怎么才能得到“干”的机会? Monica Rogati 的《How Can I become a data scientist》和Tomi Mester 的《 How to get your first job in Data Science 》都提出了很好的方法。
第一步 四种工具
如果你想从最基础开始,有四种工具比较常用。这些工具都是免费的,Tomi Mester 提供了一个英文的攻略:
- Bash 和命令行;
- Python
- SQL
- R
- 有时需要 Java
一般来说,不同的公司会选用其中两到三种。好消息是,一旦学会一种,学其他的也很快。 总共花一两周,选其中两三种掌握基本使用,就可以进入下一步。
Tomi 的攻略需要安装和连接到云上的虚机。这些服务国内众多的云服务商都能提供,可以直接选国内的即可。 具体的安装,如果自己不熟悉,也可以请朋友帮忙,不一定要花太多时间。
第二步 先定个小目标,比如动手做几个小项目
亲手做些项目,不仅是最快最有效地的学习办法,而且能让你的简历更引人注目,在面试时加分不少。
选个感兴趣的题目
结合可以找到的数据,选选自己感兴趣的题目,比如空气质量、气候变化、民航运输、旅游、医疗支出等等。网上有不少数据可以免费或者很便宜地下载。除了国内数据,一些美国网站上也有很多世界范围的公众数据,比如天气、各国经济、疾病、自然灾害等等。 常用的网站有国家统计局(“国家数据”)、美国政府公开数据 Data.gov 、Kaggle 比赛的数据集、世界数据图册、 CEIC 、证监会、新浪财经、 AWS 公用数据集、数粮、机器学习的 UCI 数据集等等。 如果是公司支持的项目,还可以从公司 IT 部门拿到数据。 重要的是,应该从容易上手的项目做起,找到数据,争取一周之内得出结果。
发个微博或微信,看看反映
在动手分析之前,先大概看看数据,把你想做的项目和初步印象用一两句话,在微博和微信上看看大家的反应。既要现实一点(能在一个星期内做出结果),又要保持乐观(相信自己能做出来,能找到些有趣的结论)。猜想一个可能的结果,不一定很准确(甚至可以编编),并邀请大家反馈,比如 Monica Rogati 曾经这么发微博:
“我用 LinkedIn 数据研究创业者,发现他们比想象的老,学物理的比学护理或神学的多。也许是因为风投们很难投一个新的宗教吧?”
“我用Jawbone 的数据研究天气对运动的影响–纽约人没有加州人那么容易受天气变化的影响,你们觉得是因为纽约人更强,还是他们主要在室内运动?”
“我结合BBC 的讣告和维基,来看看 2016 这一年对名人来讲,是不是真的很衰。”
如果你想学习某种技术的话,还可以这么写,比如:
Shelby Sturgis :“我为老师和管理者做了个 Web 应用,通过分析学校排名、考试分数的变化和不同科目的成绩,来帮助他们提高教育质量。我用了 MySQL、Python、Javascript、Highcharts.js 和 D3.js, 来存储、分析和展示加州 STAR 考试数据。”
“我用了 TensorFlow 来自动对黑白照片上色和还原,帮奶奶做了这个拼贴图–最棒的圣诞!”
想象自己在交流会和面试里反复介绍,刊登在《今日美国》或《华尔街日报》上。你会觉得无聊,难以讲清还是觉得自己聪明,并感到自豪?如果答案是否定的,就重新再找,或者回到上一步,直到找到 2-3 个信服的想法。 问问其他人–这个有意思吗? 你愿意面试做这个的人,来做数据分析的工作吗?
除了找数据和粗略地了解相关的技术和工具,此时你还没有写任何代码,或者做任何具体分析。你可以很方便地多次重复这个阶段,而不要太着急地一头扎进某些教程或者课程,花几个月时间毫无所获。
开始干
分析数据。清洗。绘制图表。重复。看看每个字段常见的前十个值。研究一下异常值。看看分布情况。如果数据不是很零散,可以把类似的值分组。分析相关度,处理缺失的数据。尝试不同的聚类和分类算法。调试。找找为什么有的效果好,有的不好? 如果数据多的话,搭建 AWS Data Pipeline。对非结构化数据尝试用不同的 NLP 库。可能会用到 Spark,numpy, panda, nltk, 矩阵分解和 TensorFlow。这些技术不是为了学而学,而是因为解决问题必须用到。
找个懂统计学、软件工具或业务分析的朋友,会有很大帮助。每周花一个小时或每两周聚一次,都会很快帮你理顺思路,或者解决实际问题。
做个侦探,提出新的问题和新的方向。数据的收集方式是否合理? 引入另外的数据集会怎么样?这应该是个有趣的过程,偶尔遇到障碍时,可以向网上、论坛、老师或做相同工作的朋友求助。 如果感觉不好玩,就重新找个题目。如果感觉很差,就重新思考要不要当数据科学家。如果这部分不能让你充满干劲,你很难坚持和干好真实数据工作中占 80% 的乏味的苦活。
表达
用简单的语言和干净、说服力强的图表来一目了然地表达。 学会用可视化工具非常重要。 如果你建了个原型,可以做一个简洁、有趣的演示或视频。把技术细节和代码放在链接里。发出去,并收集反馈。公开展示能让你提高标准,得到高质量的代码、表达和图形结果。
重复这一过程,逐渐就能形成自己的项目集,给招聘人员看,直到加入梦寐以求的团队。
有没有捷径?
很多朋友从事市场、财务等工作,不具备统计学背景,更没有编程经验,如何转向数据科学?
2016 年底,一个朋友带给我一个很典型的场景:她在一家医疗仪器公司,负责市场工作,积累了不少的数据,包括客户、销售、产品等方面,分别来自于 CRM、财务和产品管理系统。最大的表 100 多 G,维度也比较全面。公司希望能培养自己的数据科学家,她也很感兴趣,问题是,如何开始?
一般来说,如果对 Excel 的统计函数(如 sum, sumif, count, 时间转换等),vlookup 和数据透视表比较熟悉,可以从可视化工具入手。如果公司有预算,可以考虑 Tableau,Power BI 等;也可以选用国内帆软、魔镜等。 Tableau 的教学视频比较系统,很容易从 0 基础开始。
同时可以快速翻阅几本经典书,包括《深入浅出数据分析》、《统计学》、《R 语言实战》、《深入浅出 Python》等。对数据分析本身的使命、基本概念、常见方法等获得总体了解,能让你更快地找到自己的目标,为自己的项目整理思路。
同样重要的,要以自己的项目为主线,限定期限,避免为技术细节,扎到浩瀚的资料里。遇到问题再去 Quora、知乎、Stackoverlow、微信群和相关工具的论坛问问题,项目进展会快得多,有时候几分钟就会有人给你答案。 做完第一个项目之后,再逐渐用更复杂的指标、算法或工具,再用一两周时间做出下一个项目,以此类推。
即使完全没基础,也不用担心。花点时间看看上面提到的书或可视化工具的教学视频,大概了解数据分析的基本概念和方法,你就可以开始选自己的题目,开始探索数据科学家的星辰大海,迎接崭新的未来。
感谢杜小芳对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论