如何成为一名数据科学家?

数据科学(Data Science)是从数据中提取知识的研究,关键是科学。数据科学集成了多种领域的不同元素,包括信号处理,数学,概率模型技术和理论,机器学习,计算机 编程,统计学,数据工程,模式识别和学习,可视化,不确定性建模,数据仓库,以及从数据中析取规律和产品的高性能计算。数据科学并不局限于大数据,但是数 据量的扩大诚然使得数据科学的地位越发重要。
    数据科学的从业者被称为数据科学家。数据科学家通过精深的专业知识在某些科学学科解决复杂的数据问题。不远的将来,数据科学家们需要精通一门、两门甚至多门学科,同时使用数学,统计学和计算机科学的生产要素展开工作。所以数据科学家就如同一个team。
    曾经投资过Facebook,LinkedIn的格雷洛克风险投资公司把数据科学家描述成“能够管理和洞察数据的人”。在IBM的网站上,数据科学家的角色被形 容成“一半分析师,一半艺术家”。他们代表了商业或数据分析这个角色的一个进化。

林仕鼎,百度大数据首席架构师认为:
    如 果从广义的角度讲,从事数据处理、加工、分析等工作的数据科学家、数据架构师和数据工程师都可以笼统地称为数据科学家;而从狭义的角度讲,那些具有数据分 析能力,精通各类算法,直接处理数据的人员才可以称为数据科学家。最后引用Thomas H. Davenport(埃森哲战略变革研究院主任) 和 D.J.Patil(美国科学促进会科学与技术政策研究员,为美国国防部服务)的话来总结数据科学家需要具备的能力:
    数据科学家倾向于用探索数据的方式来看待周围的世界。(好奇心)
    把大量散乱的数据变成结构化的可供分析的数据,还要找出丰富的数据源,整合其他可能不完整的数据源,并清理成结果数据集。(问题分体整理能力)
    新的竞争环境中,挑战不断地变化,新数据不断地流入,数据科学家需要帮助决策者穿梭于各种分析,从临时数据分析到持续的数据交互分析。(快速学习能力)
    数据科学家会遇到技术瓶颈,但他们能够找到新颖的解决方案。(问题转化能力)
    当他们有所发现,便交流他们的发现,建议新的业务方向。(业务精通)
    他们很有创造力的展示视觉化的信息,也让找到的模式清晰而有说服力。(表现沟通能力)
    他们会把蕴含在数据中的规律建议给Boss,从而影响产品,流程和决策。(决策力)

我认为有几个大方面:
    1)学好python。
    现在几乎所以公司的数据都可以api给你,而python的数据处理能力强大且方便。加之在machine learning的很多算法上,python也独俏一方。另外, 它的简明方便迅速迭代开发,15分钟写完个算法就可以看效果了。
    除此之外,py还有点酷酷的感觉。任何程序拿matlab和c++都是可以写的。
    对不规则输入的处理也给python一个巨大的优势。通常来说,在我现在日常的工作里,所有的数据都是以纯文本但是非格式的形式存储的(raw text, unstructured data)。问题在于,这些文本不可以直接当作各种算法的输入,你需要分词,分句
提取特征 整理缺失数据
    除掉异类(outlier)
    在这些时候,python可谓是神器。这里做的1-4都可以直接在scikit-learn里面找到对应的工具,而且,即使是要自己写一个定制的算法处理某些特殊需求,也就是一百行代码的事情。
    简而言之,对于数据科学面临的挑战,python可以让你短平快地解决手中的问题,而不是担心太多实现细节。

2)学好统计学习
    略拗口。统计学习的概念就是“统计机器学习方法”。
统计和计算机科学前几十年互相平行着,互相造出了对方造出的一系列工具,算法。但是直到最近人们开始注意到,计算机科学家所谓的机器学习其实
    就是统计里面的prediction而已。因此这两个学科又开始重新融合。
    为什么统计学习很重要?
    因为,纯粹的机器学习讲究算法预测能力和实现,但是统计一直就强调“可解释性”。比如说,针对今天微博股票发行就上升20%,你把你的两个预测股票上涨还是下跌的model套在新浪的例子上,然后给你的上司看。
Model-1有99%的预测能力,也就是99%的情况下它预测对,但是Model-2有95%,不过它有例外的一个附加属性——可以告诉你为什么这个股票上涨或下跌。
    试问,你的上司会先哪个?问问你自己会选哪个?
    显然是后者。因为前者虽然有很强的预测力(机器学习),但是没有解释能力(统计解释)。
而作为一个数据科学家,80%的时间你是需要跟客户,团队或者上司解释为什么A可行B不可行。如果你告诉他们,“我现在的神经网络就是能有那么好的预测力可是我根本就没法解释上来”,那么,没有人会愿意相信你。
    具体一些,怎么样学习统计学习?
    先学好基本的概率学。如果大学里的还给老师了(跟我一样),那么可以从MIT的概率论教材【1】入手。从第1章到第9章看完并做完所有的习题。
    (p.s.面试Twitter的时候被问到一个拿球后验概率的问题,从这本书上抓来的)。
    了解基本的统计检验及它们的假设,什么时候可以用到它们。
    快速了解统计学习有哪些术语,用来做什么目的,读这本【5】。
    学 习基本的统计思想。有frequentist的统计,也有bayesian的统计。前者的代表作有【2】,后者看【3】。前者是统计学习的圣书,偏 frequentist,后者是pattern recognition的圣书,几乎从纯bayesian的角度来讲。注意,【2】有免费版,作者把它全放在了网上。而且有一个简易版,如果感觉力
    不从心直接看【2】,那么可以先从它的简易版开始看。简易版【4】是作者在coursera上开课用的大众教材,简单不少(不过仍然有很多闪光点,通俗易懂)。对于【3】,一开始很难直接啃下来,但是啃下来会受益匪浅。
    注意,以上的书搜一下几乎全可以在网上搜到别人传的pdf。有条件的同学可以买一下纸制版来读,体验更好并且可以支持一下作者。所有的书我都买了纸制版,但是我知道在国内要买本书有多不方便(以及原版书多贵)。
    读完以上的书是个长期过程。但是大概读了一遍之后,我个人觉得是非常值得的。如果你只是知道怎么用一些软件包,那么你一定成不了一个合格的data scientist。因为只要问题稍加变化,你就不知道怎么解决了。
    如果你感觉自己是一个二吊子数据科学家(我也是)那么问一下下面几个问题,如果有2个答不上来,那么你就跟我一样,真的还是二吊子而已,继续学习吧。
    为什么在神经网络里面feature需要standardize而不是直接扔进去?
    对Random Forest需要做Cross-Validatation来避免overfitting吗?
    用naive-bayesian来做bagging,是不是一个不好的选择?为什么?
    在用ensembe方法的时候,特别是GradientBoosting Tree的时候,我需要把树的结构变得更复杂(high variance, low b  ias)还是更简单(lowvariance, high bias)呢?为什么?
    如果你刚开始入门,没有关系,回答不出来这些问题很正常。如果你是一个二吊子,体会一下,为什么你跟一流的    datascientist还有些差距——因为你不了解每个算法是怎么工作,当你想要把你的问题用那个算法解决的时候,面对无数的细节,你就无从下手了。
    说个题外话,我很欣赏一个叫Jiro的寿司店,它的店长在(东京?)一个最不起眼的地铁站开了一家全世界最贵的餐馆,预订要提前3个月。怎么做到的?70年如一日练习如何做寿司。70年!除了丧娶之外的假期,店长每天必到,8个小时工作以外继续练习寿司做法。
    其实学数据科学也一样,沉下心来,练习匠艺。

3)学习数据处理
    这 一步不必独立于2)来进行。显然,你在读这些书的时候会开始碰到各种算法,而且这里的书里也会提到各种数据。但是这个年代最不值钱的就是数据了(拜托,为 什么还要用80年代的“加州房价数据”?),值钱的是数据分析过后提供给决策的价值。那么与其纠结在这么悲剧的80年代数据集上,为什么不自己搜集一些呢?
    开始写一个小程序,用API爬下Twitter上随机的tweets(或者weibo吧。。。)
    对这些tweets的text进行分词,处理噪音(比如广告)
    用一些现成的label作为label,比如tweet里会有这条tweet被转发了几次
    尝试写一个算法,来预测tweet会被转发几次
    在未见的数据集上进行测试
    如上的过程不是一日之功,尤其刚刚开始入门的时候。慢慢来,耐心大于进度。

4)变成全能工程师(full stack engineer)
    在公司环境下,作为一个新入职的新手,你不可能有优待让你在需要写一个数据可视化的时候,找到一个同事来给你做。需要写把数据存到数据库的时候,找另一个同事来给你做。
    况且即使你有这个条件,这样频繁切换上下文会浪费更多时间。比如你让同事早上给你塞一下数据到数据库,但是下午他才给你做好。或者你需要很长时间给他解释,逻辑是什么,存的方式是什么。
    最好的变法,是把你自己武装成一个全能工作师。你不需要成为各方面的专家,但是你一定需要各方面都了解一点,查一下文档可以上手就用。
    会使用NoSQL。尤其是MongoDB
    学会基本的visualization,会用基础的html和javascript,知道d3【6】这个可视化库,以及highchart【7】
    学习基本的算法和算法分析,知道如何分析算法复杂度。平均复杂度,最坏复杂度。每次写完一个程序,自己预计需要的时间(用算法分析来预测)。
    推荐普林斯顿的算法课【8】(注意,可以从算法1开始,它有两个版本)
    写一个基础的服务器,用flask【9】的基本模板写一个可以让你做可视化分析的backbone。
    学 习使用一个顺手的IDE,VIM, pycharm都可以。

5)读,读,读!
    除了闭门造车,你还需要知道其它数据科学家在做些啥。涌现的各种新的技术,新的想法和新的人,你都需要跟他们交流,扩大知识面,以便更好应对新的工作挑战。
    通常,非常厉害的数据科学家都会把自己的blog放到网上供大家参观膜拜。我推荐一些我常看的。另外,学术圈里也有很多厉害的数据科学家,不必怕看论文,看了几篇之后,你就会觉得:哈!我也能想到这个!
    读blog的一个好处是,如果你跟他们交流甚欢,甚至于你可以从他们那里要一个实习来做!
    betaworks首席数据科学家,Gilad Lotan的博客,我从他这里要的intern :D Gilad Lotan
    Ed Chi,六年本科硕士博士毕业的神人,google data science http://edchi.blogspot.com/
    Hilary Mason,bitly首席科学家,纽约地区人尽皆知的数据科学家:hilarymason.com

在它们这里看够了之后,你会发现还有很多值得看的blog(他们会在文章里面引用其它文章的内容),这样滚雪球似的,你可以有够多的东西早上上班的路上读了:)

6)要不要上个研究生课程?
    先说我上的网络课程:
    Coursera.org
  https://www.coursera.org/course/machlearning
    前者就不说了,人人都知道。后者我则更喜欢,因为教得更广阔,上课的教授也是世界一流的机器学习学者,而且经常会有一些很妙的点出来,促进思考。
    对 于是不是非要去上个研究生(尤其要不要到美国上),我觉得不是特别有必要。如果你收到了几个著名大学数据科学方向的录取,那开开心心地来,你会学到不少东 西。但是如果没有的话,也不必纠结。我曾有幸上过或者旁听过美国这里一些顶级名校的课程,我感觉它的作用仍然是把你领进门,以及给你一个能跟世界上最聪明 的人一个交流机会(我指那些教授)。除此之外,修行都是回家在寝室进行的。然而现在世界上最好的课程都摆在你的面前,为什么还要舍近求远呢。

总结一下吧
我很幸运地跟一些最好的数据科学家交流共事过,从他们的经历看和做事风格来看,真正的共性是
他们都很聪明——你也可以;
他们都很喜欢自己做的东西——如果你不喜欢应该也不会看这个问题,
他们都很能静下心来学东西——如果足够努力你也可以。
(来源:知乎网)
附录书籍:
【1】Introduction to Probabilityand Statistics
【2】Hastie, Trevor, et al. Theelements of statistical learning. Vol. 2. No. 1. New York: Springer, 2009. 免费版
【3】Bishop, Christopher M.Pattern recognition and machine learning. Vol. 1. New York: springer, 2006.
【4】Introduction to StatisticalLearning 免费版
【5】Wasserman, Larry. All ofstatistics: a concise course in statistical inference. Springer, 2004.
【6】 http://d3js.org/
【7】 http://www.highcharts.com/
【8】Coursera.org
【9】 http://flask.pocoo.org/

时间: 2024-11-07 07:48:36

如何成为一名数据科学家?的相关文章

数据科学家可能成为2015年最热门职业

腾讯科技讯 1月3日,你擅长数学,会用Python编程,而且还对某个行业了如指掌? 如果你拥有这样的技能集,那你就有可能当上数据科学家.而如果你当上了数据科学家,那你的日子就可以过得风风光光了--LinkedIn的最新投票结果显示,"统计分析和数据挖掘" 是2014年最大的求职法宝. 美国招聘网站Glassdoor的报告称,数据科学家的平均年薪为118709美元(约合人民币737550元),而程序员的平均年薪为64537美元(约合人民币400974元).麦肯锡公司的一份研究预测称,到2

几个月就能化身为数据科学家?

关于做一名数据科学家,我有一些想法.成为一名数据科学家并不容易,需要付出很多努力,但如果你对数据科学充满兴趣,那一切都是值得的. 时常有人问我:如何成为一名数据科学家?必修的课程是什么?需要多长时间?你是怎么成为数据科学家的?我已多次回答过这些问题.所以在我看来,写一篇汇总的文章也许能帮助那些想要成为数据科学家的人. 关于我自己 我(俄罗斯,莫斯科)在密歇根州立大学经济学院获得硕士学位,并在 ERP 系统规划领域做了 4 年的分析师和顾问.我的工作涉及与客户交谈,讨论他们的需求并将其落地,编写文

为什么数据科学家们总是在离职的路上

相信在这个时代的当下,大家或多或少都有看到过类似"数据科学是21世纪最性感工作"的故事,以及数据科学家在这个时代显得是一份十分理想且具有超强吸金能力的工作.因为这个领域需要大量高技能人才,他们需要寻求解决复杂问题的办法(这对于"极客"来说是一件很有吸引力的好事).总之,大家的描述都让这份工作在技术人的眼中显得十分梦幻.可爱. 但事实是,正如英国<金融时报>在这篇文章中所说,数据科学家通常"每周花1-2小时寻找新工作".此外,文章还指出

数据科学家应该掌握的5个工具

本文转自:http://www.36dsj.com/archives/34020 当谈及到分析你编纂的数据时,有大量的工具可以帮助你更好的理解数据,本文总结出了一个包括5个数据科学工具的列表,同时这也是你在当今的社会形势下人们应该掌握的5个数据科学工具. 即使是知识渊博的数据科学家也能提升他们的技术水平.当谈及到分析你编纂的数据时,有大量的工具可以帮助你更好的理解数据.我们与我们的数据科学指导者探讨了很久,最后总结出了一个包括5个数据科学工具的列表,同时这也是你在当今的社会形势下应该掌握的5个数

数据科学家:神话 &amp;amp; 超能力持有者

一个打破神话的季节,正在降临. 我将坦诚地揭穿人们关于数据科学家所持有的惯有看法.在下文中,我将一个一个展示这些观点,宛如将一个又一个的玻璃瓶子摔碎在墙壁上一样. 关于数据科学家的神话主要是这些:        神话#1: 数据科学家们本身就是一种神奇生物,就像独角兽一样神奇叵測. 数据科学家实际上是很真实的.从人们開始进行多元统计分析.时间序列分析和运用其它核心分析方法时,他们就已经存在了.在某种程度上,假设你建立模型,并使用各种分析工具来找寻那些不显著的数据模型,那么你也许也是一位数据科学家

从本科生到数据科学家,为啥这个职业门槛高?

参与文末话题讨论,每日赠送异步图书 --异步小编 William  Chen是Quora的一位数据科学家,在那里他协助Quora发展壮大,为这个世界分享知识.在拿到哈佛大学的统计和应用数学双学位之后,他直接成了一位数据科学家,也是世界上第一批在校期间接受了完整的数据科学课程并且最终在毕业之后直接加入了数据科学领域的学生之一.全职加入Quora之前,他曾经在Quora和Etsy做数据实习生.他很喜欢讲述各种与数据有关的故事,并且也在Quora上广泛地分享他的知识. William也是<数据科学家访

42步进阶学习—让你成为优秀的Java大数据科学家!

作者 灯塔大数据 本文转自公众号灯塔大数据(DTbigdata),转载需授权 如果你对各种数据类的科学课题感兴趣,你就来对地方了.本文将给大家介绍让你成为优秀数据科学家的42个步骤.深入掌握数据准备,机器学习,SQL数据科学等. 本文将这42步骤分为六个部分, 前三个部分主要讲述从数据准备到初步完成机器学习的学习过程,其中包括对理论知识的掌握和Python库的实现. 第四部分主要是从如何理解的角度讲解深入学习的方法.最后两部分则是关于SQL数据科学和NoSQL数据库. 接下来让我们走进这42步进

自学成才的数据科学家告诉你5个学习大数据的正确姿势!

对于数据科学来说,现在是发展的黄金时期.这是个新领域,但增长迅速,同时数据科学家的缺口也很大,据说他们的平均年薪可以达到10万美元.哪里有高薪,哪里就吸引人们,但是数据科学技能的差距意味着许多人需要努力学习.      第一步当然是询问“我怎么学习数据科学”,这个问题的答案往往是一长串的课程和书籍阅读,从线性代数到统计数据,这几年我也是这样学习过来的.我没有编程背景,但我知道我喜欢处理数据. 我比较不能理解在完全没有理解别人的背景时就给他一份长长的书单或者技能表.这就类似于一个老师给你一堆教科书

为什么数据科学家们选择了Python语言?

本文由 伯乐在线 - HanSir 翻译,toolate 校稿 英文出处:Quora [伯乐在线导读]:这个问题来自 Quora,题主还补充说,“似乎很多搞数据的程序员都挺擅长 Python 的,这是为什么呢?”下面是 Jeff Hammerbacher 的回复.(693 赞) Python是一种解释型.动态语言,具有明确而高效的语法.Python具有良好的REPL(Read-Eval-Print Loop ,‘读取-求值-输出’循环),还可以通过dir()和文档字符串从REPL中开发新模块.这