首页 观点正文

老司机用十几年的职业阅历告诉你:如何成为一名优质的数据科学家

 开随着“数据驱动”的价值越来越明显,越来越多的企事业开始组建或扩大数据分析队伍,“数据科学家”这个职位也越来越被大家关注。

 “数据科学家”是不是“统计师”更性感的版本?

  起码得有统计、应用数学、计算机的背景?

  干了5年的软件开发,写SQL如反掌观纹,换行做数据科学家很容易吧?

  我们市场部也想更加“数字化”,但不懂编程,应该如何起步?

 数据科学家的定义

 经历了一些不同阶段的大数据项目之后,我意识到,在“数据科学家”这个角色没定义好之前,“数据化”会遇到很多挑战。这个角色的定义相当模糊,造成很多混淆--很像对“数字化”本身的混淆。

 我翻阅了一下招聘网站上数据科学家的职责,有的专门通过统计和机器学习来建立预测模型,有的定义则更加宽泛。那么到底“数据科学家”具备什么样的技能,能做哪些事?很多希望实现“数据驱动”的企业对数据科学家的期望比较笼统,并且在不断修正中,这很正常,那么你,怎样才能更好地为这一职位做好准备?

 网上已经有很多种答案,本文并不想提出新的诠释,而是尽量将最主流的观点提供给大家,并结合现有的技术,为有志于成为数据科学家的朋友,提供建议。

 定义一:数据科学家起码是统计师

 “数据科学家是对统计师更性感的称谓” -Nate Silver

 Nate Silver是个著名的统计师,凭借2008年美国总统竞选中,成功地预测了所有50个州里的49个州竞选结果,而一战成名,并被《时代周刊》评为2009年度最有影响力的100人之一。

 他说:“数据科学家是对统计师更性感的称谓。......,数据科学家(这个称谓)有点多余,人们不应该批评“统计师”这个词”。

 不过,数据本身在变化——越来越多,越来越快,种类越来越丰富,统计师们用以前的办法难以应对,所以数据科学家至少是比统计师们更善于编程的那些人。

 定义二:数据科学家用编程和统计,将数据更有用

随着数据分析和业务需求的发展,以及分工的细化,这个称谓也在逐渐演化。 比如,Pandora的研究部门负责人Michael Hochester是这样定义数据工程师的:

 “数据科学家是一些能综合运用编程和统计技术的人,他们致力于通过各种方式让将数据更发挥作用。”他认为数据科学家分为两类:

 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社区编辑。美国宾州州立大学电子工程硕士, 曾就职于易鲸捷、Cisco Systems,Eastman Kodak等;2000年开始从事分布式多媒体通信系统研发,历经电信运营商级的互联网电话、安全监控/电子病历/慢病管理大数据、OLTP-On-HBase的分布式数据库等项目。现负责基于NVidia GPU的高速查询加工引擎的售前、方案架构、技术市场等工作,兴趣在于多GPU集群在关联、聚合和模型计算的技术,以及在金融、电信及商业的应用。

 注:本文转载自微信公众号-大数据杂谈,版权著作权属原创者所有,如涉及版权等事宜请联系小编更正。

责任编辑:陈近梅

分享: