数据天才:数据科学家修炼之道(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-14 13:55:08

点击下载

作者:吴博,(美)Vincent Granville(文森特·格兰维尔)

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数据天才:数据科学家修炼之道

数据天才:数据科学家修炼之道试读:

前言

这是一本跟数据科学和数据科学家有关的“手册”,它还包含传统统计学、编程或计算机科学教科书中所没有的信息。凭借作者在数据科学领域20多年的领导者地位,他在本书中收集了他认为对从事数据科学职业最重要的一些信息。在过去3年里,本书中的很多内容首先被发表在Data Science Central官网上,被数百万的网站用户所阅读。本书介绍了数据科学与其他相关领域的差异,以及使用大数据能给组织带来的价值。

本书有3个组成部分:一是多层次地讨论数据科学是什么,以及数据科学涉及哪些其他学科;二是数据科学的技术应用层面,包括教程和案例研究;三是给正在从业和有抱负的数据科学家介绍一些职业资源。本书中有很多职业和培训相关资源(如数据集、网络爬虫源代码、数据视频和如何编写API),所以借助本书,你现在就可以开始数据科学实践,并快速地提升你的职业水平。如果你是一位决策者,你会在本书中找到一些信息,来帮助你建立更好的分析团队,以及决定是否需要及何时需要专业的解决方案,以及哪些方案最为恰当。这本书是写给谁的

这本书是写给数据科学家和相关专业人士的(如业务分析师、计算机科学家、软件工程师、数据工程师和统计学家),以及有兴趣转投大数据科学事业的人。本书也是为学习定量课程、想成为数据科学家的大学生所准备的。最后,本书也可供数据科学家的上级领导、想创建数据科学初创公司开展业务或提供数据科学咨询的人阅读。

这些读者将在本书中找到有价值的信息,特别是在以下几章中。● 第2、4、5、6章对数据科学工作者特别有价值,因为它们包含

大数据技术内容(如聚类和分类技术),以及前沿数据科学技术,

如组合特征选择、隐性决策树、分析类API、判断MapReduce何

时有用等。这些章节里很多案例研究(如欺诈检测、数字分析、

股票市场策略和其他更多)的说明非常详细,详细到可以让读者

在实际工作中面临类似数据时,能沿用这些案例的分析方法。然

而,它们的文字描述都很简单,高层管理人员不用花太多时间在

细节、代码或公式上,也能阅读下来。● 修读计算机科学、数据科学或工商管理硕士课程的学生,会在第

2、4、5、6章中找到对他们有用的信息。特别是在第2、4、5章,

他们能从中找到进阶内容,如实际的数据科学方法和原则,这些

在一般的教科书或典型的大学课程里都没有。第6章还介绍了现

实生活应用和案例研究,并包含更深入的技术细节。● 求职者将会在第3章中找到有关数据科学的培训和课程资源。第

7、8章为求职者提供了大量的资源,包括面试问题、简历模

板、招聘广告样板,经常招聘数据科学家的公司的清单,以及薪

资调查等。● 对于想要创建一个数据科学创业公司或顾问公司的企业家,在第

3章中会找到商业计划书样板、创业公司点子和针对顾问职位的

薪酬调查。同时,在本书中,数据顾问会了解如何提高数据科学

工作沟通效率,掌握数据科学项目的生命周期,并得到相关书籍、

会议参考和许多其他资源。● 对于试图评估数据科学的价值和它们对企业项目的益处,以及评

估MapReduce架构何时有用的高管们,会在第1、2、6(案例部

分)、8章(招聘广告样板、简历、薪金调查)中找到有价值的

信息。这些章节的重点通常不是技术。顶多会在第2章和第6章

介绍一些新的分析技术。这本书涵盖了什么

本书的技术部分包括数据科学的核心内容,比如:● 将大数据和传统的算法应用到大数据时的挑战(例如在进行大数

据聚类或分类时的解决方案)。● 一种统计科学上新颖、简化、对数据科学友好的方法,重点在于

它是一种健壮的无模型方法。● 顶尖的机器学习方法(隐性决策树和组合特征选择)。● 新型数据的新指标(综合指标、预测能力、波动系数)。● 创建快速算法所需的计算机科学要素。● MapReduce和Hadoop,以及Hadoop进行计算时的数值稳定性。

重点还是最新的技术。在本书中你不会找到关于旧技术的资料介绍,如线性回归(除非在引文里涉及),因为这些在经典书籍里已经讨论了很多。在本书中,对逻辑回归类的知识讨论不多。我们只是将逻辑回归与其他分类器混合,提出一种数值稳定的近似算法(近似的解决方案往往和精确模型一样有效,毕竟没有任何数据完全符合理论模型)。

除了技术,本书还提供了有用的工作资源,包括工作面试的相关问题、简历模板和招聘广告样板。本书的另一个重要组成部分是案例研究。本书的案例研究,有些带有统计或机器学习的意味,有些则跟商业或决策科学或运筹学有关,有些则关乎数据工程。大多数时候,我喜欢Data Science Central(这是个数据科学家的领先社区)上最新发表和非常热门的主题,而不是我特别重视的话题。本书是如何架构的

本书由三大主题构成。● 数据科学和大数据是什么和不是什么,以及与其他学科的区别(第1、2、3章)。● 职业和培训资源(第3章和第8章)。● 用作教程的技术材料(第4章和第5章,以及第2章中关于大规模

数据集聚类和分类的内容,第8章中关于Hadoop的新变化和大数

据的内容),以及案例研究(第6章和第7章)。

本书为潜在的和现有的数据科学家和相关专业人员(以及他们的管理者和老板)提供了宝贵的职业资源。宽泛而言,本书适用于所有处理更大、更复杂、更新、频率更快的数据的专业人士。本书还提供一些数据科学的秘诀、技巧、概念(其中许多是原创和首次公开的)、带实施方法和技术的案例研究,以及已经在不同领域,不论是手动还是自动,能成功分析现代数据的技术。阅读本书你需要什么知识

http://cygwin.com/install.html上下载Cygwin软件。Python也是开源的,且有一个有用的、被称为Pandas的库。

如果你有一两年大学基本定量课程的知识基础,就足以理解书中大多数内容。本书不需要微积分或高等数学的相关知识——事实上,它几乎不包含任何数学公式或符号。

然而,本书也包含一些高度概括性的进阶材料。本书中的一些技术讲义,是针对那些对数学更有倾向和有兴趣深入挖掘的读者。有两年大学微积分、统计学和矩阵理论知识的读者,将能更好地理解这些技术细节。本书提供了一些源代码(R、Perl)和数据集,但本书的重点不是编码。

本书通过多种技术水平混合的介绍方式,让你不用具备高级数学知识,也有机会深度探索数据科学(这有点像Carl Sagan向主流公众介绍天文学的方式)。惯例标记

为了帮助你从本书中学到最多的东西,而不是一头雾水,我们将在本书中使用惯例标记。

注意 本书中的注意、提示、交叉参考,以及对当前讨论的辅助说明,将像这个注意的方式显示。

至于文本的样式标记如下。● 当我们介绍术语和重要的词时,我们会用楷体突出它们。● 快捷键用这种方式表示:Ctrl+A。● 我们在书中显示文件名、链接和代码的格式如下。

persistence.properties● 我们介绍代码的格式如下。 对于大多数代码,我们使用Courier

New字体,不加粗。致谢

我要感谢来自Wiley的Chris Haviland和Carol Long,他们对本书的出版有很大的贡献,承担了不少风险,他们把我很多有价值、分散未经组织的在线文章,整合成一本连贯、全面和有用的书。从许多方面来看,这个复杂的过程类似于将非结构化数据转化为结构化数据,这是许多数据科学家经常面对的常规挑战,而这本书也正好提供了将非结构化数据转化为结构化数据的解决方案。同时,我要感谢我的商业伙伴和共同创始人Tim Matteson,他帮助Data Science Central这个网站成为数据科学社区的领导者,还变成了一个现代的、专注于产生价值的创业项目。最后,我要感谢我们社区的所有成员,感谢他们的评论和支持。如果没有他们的帮忙,本书也无法出版。第1章数据科学是什么

不是什么。理解数据科学也不例外。正因为数据科学这个词已被滥用,围绕大数据和数据科学又有诸多炒作,因此本章开篇要探讨什么不是数据科学。首先,我们要思考真数据科学跟伪数据科学的差异。其次,我们要了解数据科学训练是怎样从大学课程进化而来的。再次,我们会检视一些现实世界场景中应用现代数据科学的例子。

最后,我们回顾下数据科学的历史,以及它如何从计算机科学、业务优化及统计学演化成现代数据科学的过程。本章结尾是我近期参与讨论而提炼出的问答环节,描绘了数据科学家、数据架构师和业务分析师的分歧和矛盾之处。

本章提出的问题比解答的问题多,更多的解答细节将在后续章节中给出。这一做法是为了让你学会数据科学家的思维方式,抓住如今大数据行业的重点,摒弃那些过时的手法,从而明白如果对数据科学这一职业感兴趣,哪些内容不需要深究。举例来说,你需要知道统计学、计算机科学和机器学习,但并不需要对这些领域无所不知。你没必要纠结排序算法复杂度的细节(只需要了解排序算法复杂度的一般性结论),也不用知晓如何计算矩阵的广义逆,甚至连矩阵广义逆是什么(这可是统计学理论的一大核心)都不必知道,除非你对数据科学数值层面的东西很在行。技术讲义

对数学和技术知识掌握很少的读者也能阅读本章。你们可以选择跳过列在“技术讲义”里的高深内容。

交叉参考 本书提到的大部分术语可以在第8章中找到定义。真伪数据科学对比

数据科学书籍、认证和文凭,如雨后春笋般层出不穷。不幸的是,许多仅仅是镜花水月:许多人钻了这一新名词的空子,将旧酒(比如统计学和R编程)放在“数据科学”这个新瓶里。

补充说一下R语言编程跟伪数据科学为何扯上了关系:R是一种有20多年历史的开源统计编程语言及编译环境,是商业化产品S+的后继者。R一直以来都局限于内存数据处理,在统计圈子里非常流行,并因其出色的可视化效果为人称道。一些新型的开发环境通过创建R程序包或者将其扩展到分布式架构里(比如将R与Hadoop结合的RHadoop),将R(限于在内存里处理数据)的能力扩大。其他程序语言当然也存在跟伪数据科学沾边的情况,比如说SAS,但不及R这么流行。说到SAS,它价格高昂,在政府机构或者实体企业的应用更为广泛。但在过去10年数据快速增长的领域(如搜索引擎、社交媒体、移动数据、协同过滤推荐等)运用不多。R跟C、Perl或者Python的语法不一样(后三者语法根源一样),其简易性使得写R的程序员比较广泛。R还有很多程序包和不错的用户界面,SAS却难学很多。

更混淆的事情是,管理决策层在搭建其数据科学家团队时,有时也不是很清楚他们想要的到底是什么。他们往往最终招募的是很纯粹的技术极客、计算机科学家,或者缺乏恰当大数据经验的人。人力资源部门对于数据科学的了解也不会好到哪里,因此导致更为严重的问题,他们给出的招聘广告就是不断重复类似的关键词:Java、Python、MapReduce、R、Hadoop和NoSQL。但数据科学真的就是这些技能的混合吗?

Cloud)。

Hadoop是MapReduce的一种实现,就像C++是面向对象编程的实现一样。NoSQL意味着“Not Only SQL(意为不单只是SQL)”,是指能更新颖、更高效地访问(比如MapReduce)数据的数据库或数据库管理系统,有时它是作为SQL(标准数据库查询语言)之下的隐藏层而存在的。

交叉参考 参见第2章,更多地了解MapReduce所不能做到的事情。

名称-值对的形式。我想说的结论是,有时MapReduce、NoSQL、Hadoop、Python(一种优秀的脚本语言,往往用于处理文本和非结构化数据)会被认为是Perl的后继者,但它们根源于几十年前就开发出的系统和技术,只是在过去的10年里变得更成熟而已,但数据科学并不只是这些。

事实上,你可以成为一名真正的数据科学家,且不需要掌握这些技能。NoSQL和MapReduce不是新概念——在这些关键词被创建之前,就有很多人接触到它们。但要成为一名数据科学家,你需要以下能力。● 敏锐的商业头脑。● 真正的大数据专业知识(例如,可以在几个小时内快速地处理一

个5 000万行的数据集)。● 认知数据的能力。● 对模型具有猜疑精神。● 了解大数据“诅咒”。● 有能力沟通并理解管理人员正在试图解决哪些问题。● 能正确评估付你工资所能带来的回报(ROI)或效益提升(lift)。● 能够快速地识别一个简单的、健壮的、可扩展的解决方案。● 能够说服并推动管理人员,即使不情愿,也要为了公司、用户和

股东的利益,转到正确的方向上。● 真正热爱数据分析。● 成功案例的实际应用经验。● 数据架构知识。● 数据收集和清理技能。● 计算复杂度的基础知识——如何开发健壮的、高效的、可扩展

的、可移植的架构。● 良好的算法知识。

数据科学家在商业分析、统计学和计算机科学等领域也是通才,比如会掌握这些专业知识:健壮性、实验设计、算法复杂度、仪表盘和数据可视化。一些数据科学家也是数据策略师——他们可以开发数据收集策略,并使用数据来发现可操作的、能对商业产生影响的见解。这就要求数据科学家具有创造性,能根据业务要求,制定分析、提出解决方案。

要理解数据科学,所需的基本数学知识包括:● 代数,如果可能的话,包括基本矩阵理论。● 微积分入门课程。要掌握的理论不多,只需要理解计算的复杂度

和O标记法即可。了解特殊函数,包括对数、指数、幂函数。微

分方程、积分和复数不是必要的。● 统计与概率的入门课程,要了解随机变量、概率、均值、方差、

百分位数、实验设计、交叉验证、拟合度和稳健统计的概念(不

需要了解技术细节,而是达到本书介绍的程度即可)。

从技术的角度,要掌握的重要技能和知识有R、Python(或Perl)、Excel、SQL、图形(可视化)、FTP、基本的UNIX命令(sort、grep、head、tail、管道和重定向操作符、cat、cron定时等),以及对如何设计和访问数据库有基本了解。了解分布式系统如何工作和在哪里能发现瓶颈(是在硬盘和内存之间的数据传输,还是在互联网上),这也很重要。最后,要了解网络爬虫基本知识,这有助于获取互联网上能找到的非结构化数据。伪数据科学的两个例子

这里有两个伪数据科学的例子,说明数据科学家要开展工作,为什么需要遵循标准和最佳实践。这里讨论的例子,并不是说它们是不好的产品——实际上,它们有很多的内在价值——但跟真的数据科学无关。原因有以下两点:● 首先,部分统计学家没有参与到大数据革命中。虽然有些人还写

了关于应用数据科学的书,但只是重新包装原来的统计课程。● 第二,适合大数据集的方法需要变化——按2005年的大数据定

义,当有2 000万行数据时,才有资格成为大数据——但2010年

后不能再这样划分,因为大数据至少是TB级的。

不少人认为数据科学是统计学的一个新名字,他们把数据科学和伪数据科学,以及2005年的大数据定义与2013年的大数据定义弄混淆了。现代数据也有很大的不同,已经被描述为3个V:速度(velocity)(实时、快速流动)、多样化(variety)(结构化、非结构化,如微博内容)和大数据量(volume)。我会增加真实性(veracity)和价值(value)。要了解详细信息,请阅读第2章对数据流动速度超过处理速度的讨论。

交叉参考 更多关于统计学家与数据科学家的对比,请参阅第4章。例子1:某一本数据科学电子书

小数据,最后几章例外,在那里你会学到一点SQL(嵌入在R代码中)的知识和如何使用R包从Twitter提取微博内容,且创造出作者所说的词云(它和云计算没关系)。

即使提取Twitter内容的项目也还是小数据,也没有分布式体系结构(例如,MapReduce)。事实上,该书从来没有谈到数据架构。该书的水平是初级的。每章以简单的英语(适合高中学生阅读)简短介绍大数据和数据科学,跟该书实际涉猎的小数据科学不搭,跟项目和技术展示脱节。

也许作者增加了这些简短的段落,是为了可以将他的“R统计”的电子书,重新改名为“数据科学的介绍”。它是免费的、很好的、写得很棒的书,且会使高中学生对统计和编程感兴趣。但它与数据科学无关。例子2:数据科学证书

我们讨论一下美国受人尊敬的公立大学提供的数据科学证书。该证书课程咨询委员会主要是高级技术人员,大多数人有学术职位。数据科学家被介绍为“一种新型的数据分析师”,但我不赞同。当你查看招聘广告时,你会发现数据分析师包括统计人员和平均工资收入低的其他人,主要是因为这些职位不是高级职位。数据科学家不是初级职位。

这所大学的课程有很强的数据架构和计算机科学背景,它的计算机科学课程也非常好。这是数据科学的一个重要组成部分,但它只涵盖了数据科学的三分之一。它也有一些陈旧的统计学内容,以及跟健壮性和其他统计主题相关的课程,但没有涉及对数据科学家很有用的那几个主题(例如,六西格玛、近似解、80/20规则、交叉验证、实验设计、现代模式识别、效益提升力指标、第三方数据、蒙特卡洛模拟或数据科学项目的生命周期)。修读该课程需要Java和Python作为先修课。因此该课程价格昂贵——需要几千美元。

专家。即使突然接触到时间序列,你也不需要去学习所有的东西,但是你必须通过快速的在线搜索,找出解决方法,这是很重要的关键技能,所有的数据科学家都应该具备。在这种情况下(比如遇到时间序列问题时),如果需要的话,则可以了解它的相关图、趋势、变化点、标准化和周期性。在第4章的三类指标那一节描述了这些主题:中心性、波动性、颠簸性。新大学的面貌

请允许我与你们分享两个故事,说明当今有抱负的数据科学家面临的一个重大问题。我最近读到一个副教授的故事,他给一个班级上课的薪酬是2 000美元,但根据该课程的学费和学生的数量,这所大学在该课程上赚了50 000美元。那么其余48 000美元的利润去哪儿了呢?

我的妻子申请了一个为期一年的研究生课程,花费22 000美元。然后她收到一封信,说给她发放35 000美元的贷款,以支付该课程。但是,如果她需要一笔贷款来支付这个课程,她一开始就不会继续该课程了。

成本要少得多。

注意 并不是所有国家都和美国一样,有高成本的教育。对于一个美国学生来说,在中国或欧洲修读一门数据科学课程,可以最大限度地降低成本,同时还可以学到高质量的内容,积累国际经验,这对美国学生来说也是有意义的。

既然我们批判数据科学的一些传统课程的授课方式和美国传统大学的教育成本,那么现在让我们看一看数据科学高等教育的未来。

正确的培训是根本,因为这关乎你如何成为一名优秀的、合格的数据科学家。许多新的数据科学课程是在线提供的(如在Coursera.com上的那些课程),或通过企业(而不是大学)类似地共享提供,如在线提供或按需提供。新的数据科学“大学”,总结而言有以下特点。

新数据科学课程有如下特点。● 花更少的时间来学习,只要6个月,而不是几年。● 按需求或在线提供课程和资料。● 专注于运用现代技术。● 去掉陈旧内容(微分方程或特征值)。● 培训材料里包括经验法则、交易技巧、技术、真正的实施方法、

实际建议。● 教学成本很低甚至没有,所以学生没有必要大量借贷。● 有时是由公司或具有前瞻性思维的大学赞助或组织的(内容应该

中立)。● 不再包括知识孤岛(例如,运筹学、统计学与商业分析相互隔

离)。● 需要参与实际的、真实世界里的项目(鼓励进行合作),而不是

为了通过考试。● 包括高度紧凑的,以及深度总结的培训材料,必要时还部分使用

免费的在线资源。● 用学徒制取代博士课程。● 提供实质性的帮助,帮助学生找到不错、薪酬高的相关工作(要

交费用,并成功完成所需的课程;如果是由公司资助的课程,则

不需要费用:因为公司已经聘请你,或即将雇用你)。● 开放给每个人,不管学生以前的教育、语言、年龄、移民身份、

财富或居住的国家。● 甚至比现有的传统课程更为严格。● 不是照搬书本内容,能减少作弊或抄袭的问题。● 课程资料经常更新:不断增加新的发现和新方法。● 课程材料的架构专注于垂直行业(例如,金融服务、新媒体/社

交媒体/广告),因为要识别和理解现实世界的问题,特定的行业

知识是重要的,并且在上岗时,能够快速上手新的工作(即没有

学习曲线)。

同样,新的数据科学“教授”有以下特点。● 不是终身的教授,但也不是兼职的。● 在许多情况下,没有受雇于传统的大学。● 是跨学科的专家,不断地适应变化,并确实为课程和行业带来了

有意义的变化。● 与行业领导者有着很好的联系。● 被高度尊重和众所周知。● 有在企业获得的经验,或自己独立获得的经验(担任顾问,擅长

发布现代化的数字内容)。● 他们在网上发布研究成果和其他资料,这是一种比传统杂志更快

地推动科学发展的途径。● 不必花大部分时间写经费申报书,而是侧重于应用及传授科学。● 很少面对任何官僚机构。● 在一些情况下,可以在家里工作,消除了博士夫妇所面临的工作

地点不同的问题。● 研究活动很自由,虽然可能倾向于可以赚到高收入、利润丰厚的

项目。● 积累开放共享的知识而不是专利,并广泛传播这方面的知识。● 在某些情况下,更直接贴近市场。● 比传统的终身教授赚更多的钱。● 可能没有博士学位。

交叉参考 第3章包含数据科学学位和培训课程的具体信息。数据科学家

数据科学家在工业、政府和其他组织中具有独特的作用。这个角色不同于统计人员、业务分析师或数据工程师等岗位。下面的章节将讨论他们的差异。数据科学家与数据工程师

数据科学家和数据工程师的主要区别,可以用ETL和DAD的区别来解释。● ETL(提取/变换/载入)是数据工程师,还有数据架构师或数据

库管理员(DBA)的职责。● DAD(发现/获取/提炼)是数据科学家的职责。

数据工程师往往把重点放在软件工程、数据库设计、生产环境代码上,并确保数据在来源(在那里它被收集)和目的地之间平稳地流动(在目的地那里通过统计摘要提取和处理,或通过数据科学算法产生结果,并最终转移到源或其他地方)。数据科学家却需要了解数据的流动和如何优化(尤其是使用Hadoop时)。实际上不是优化数据流本身,而是数据处理的步骤,从数据中提取出价值。数据科学家与工程师和商业人员一起工作,定义指标、设计数据收集方案,并确保数据科学流程与企业数据系统(存储、数据流)有效地集成。对于在小公司工作的数据科学家,尤其如此,这也是数据科学家应该能编写可被工程师重复使用的代码的原因。

有时数据工程师也操作DAD,有时数据科学家也操作ETL,但这并不常见,且他们通常是在公司内部才这么做。例如,数据工程师可以做一些统计分析,以优化一些数据库流程,而数据科学家可以做一些数据库管理,以管理一个保存汇总信息的、小型的、本地的私有数据库。

DAD包含以下内容。● 发现:识别良好的数据源和指标。有时(与数据工程师和业务分

析师一起工作),对应该创建的数据提出需求。● 获取:获取数据,有时通过API、网络爬虫、互联网下载或数据

库,有时是从内存数据库获取数据。● 提炼:从数据中提取信息,做出决策,增加投资回报率,并采取

行动(比如,在自动投标系统中,确定最佳的投标价格)。它包

括以下内容。● 通过创建数据字典和进行探索性分析,对数据进行探索。● 清洗数据杂质。● 通过数据汇总进一步提炼数据,有时是通过多层汇总或分层汇总

来实现的。● 对数据进行统计分析(有时会采取像实验设计这样的做法,所以

在前面的“获取”阶段也可以进行),自动和手动都可以。可能

需要设计统计模型,也可能不需要。● 在某些自动过程中呈现结果或集成结果。

数据科学是计算机科学、商业工程、统计学、数据挖掘、机器学习、运筹学、六西格玛、自动化和行业知识的交叉点。这些不同的领域,加上业务的愿景和行动,汇集了一系列的技术、流程和方法。数据科学是连接不同组件的过程,有助于业务优化,并消除那些降低业务效率的孤岛。它也有自己独特的核心,(例如)包括以下主题。● 高级可视化。● 分析即服务(AaaS)和API服务。● 大规模数据集的聚类与分类。● 计算大数据的相关性和R平方。● 任何数据库、SQL或NoSQL都应该有的11个特征。● 快速特征选择。● Hadoop/Map-Reduce。● 网络拓扑。● 大数据中关键词的相关性。● 在常规空间、超平面、球面上或单纯形上的线性回归。● 无模型置信区间。● 特征的预测能力。● 无模型的统计建模。● 大数据“诅咒”。● MapReduce不能做的事。

请记住,一些雇主寻找的是具备丰富统计知识的Java或数据库开发人员。这些开发人员是非常罕见的,所以雇主反而有时会试图雇用数据科学家,但希望他在开发生产代码方面很优秀。所以职位到底是需要具备统计知识的Java开发者,还是具有较强的Java技术的统计学家,你应该事先询问雇主(如果可能的话,在电话面试的过程中去询问)。然而,有时招聘经理不知道他真正想要的是什么,如果你告诉他你的专业知识所带来的附加价值,你可能会说服他雇用你,哪怕欠缺他们预期的某些技能。对于雇主,招聘Java软件工程师,再要他们学习统计学,比反过来更容易。数据科学家与统计学家

许多统计学家认为,数据科学是关于分析数据的,但它远不止分析数据。数据科学还涉及实现算法、自动处理数据,并提供自动化的预测和行动,比如:● 分析美国宇航局的照片,以寻找新的行星或小行星。● 自动报价系统。● 自动驾驶(飞机和汽车)。● 在Amazon.com或Facebook上推荐书和朋友。● 针对所有酒店客房的客户定制(实时)定价系统。● 在计算化学中模拟用于癌症治疗的新分子。● 流行病的早期检测。●( 实时)估计美国所有房屋的价值(Zillow.com)。● 高频交易。● 为用户和网页匹配谷歌广告,以最大限度地提高转化率。● 为所有谷歌搜索返回高度相关的结果。● 信用卡交易评分(欺诈检测)。● 税收欺诈检测与恐怖行为检测。● 天气预报。

所有这些都涉及统计科学和TB级的数据。大多数做这些类型的项目的人,并不称自己为统计学家。他们称自己为数据科学家。

数据科学家进行的DAD大相径庭。关键是,最终随着越来越多的统计学家学会这些新技术,而更多的数据科学家学会统计科学知识(采样、实验设计、置信区间——不只是第5章中描述的那些),数据科学家和统计学家之间的边界将变得更加模糊。事实上,我可以看到另一种数据科学家正在兴起:具备深厚统计知识的数据科学家。

数据科学家和计算机科学家的区别是,数据科学家有更强大的统计学背景,特别是在计算统计方面,但有时则是在实验设计、采样和蒙特卡洛模拟方面。数据科学家与业务分析师

业务分析师专注于数据库设计(高层次的数据库建模,包括指标定义、仪表盘设计、检索和生成管理报告,并设计报警系统)、评估各种业务项目和支出的投资回报率及预算问题。一些业务分析师从事营销或财务的规划、优化和风险管理工作。许多业务分析师从事高层次的项目管理工作,直接向公司主管汇报。

增长黑客(最近创造的一个词,来形容一种角色,它能够快速增加公司互联网访问流量,扩大公司或产品的影响力,这种工作涉及较强的工程和分析技能)。

数据科学家让业务分析师有提升空间,例如,帮助将报表制作过程自动化,使数据提取速度更快。数据科学家还可以教给业务分析师FTP和基础的UNIX指令知识:ls -l、rm -i、head、tail、cat、cp、mv、sort、grep、uniq -c及管道和重定向操作符(|, >)。然后,可以在数据库服务器上编程或安装一段代码(业务分析师通常是通过浏览器或工具,如Toad或Brio访问服务器),以检索数据。所有的业务分析师都必须做的是:

1. 创建SQL查询(甚至要有可视化工具),并保存为SQL文本文件。

2. 将它上传到服务器并运行程序(例如,一个Python脚本,读取SQL文件并执行它,检索数据,并将结果存储在CSV文件中)。

3. 输出结果(CSV文件)到业务分析师的电脑中,做进一步分析。

和数据科学家,这样的合作是双赢的。在实践中,这样的合作已经帮助业务分析师提取的数据比他们过去所使用的数据要大100倍,而且提取速度快10倍。

总之,数据科学家并不是业务分析师,但前者可以极大地帮助后者,包括帮助业务分析师将任务自动化。此外,如果数据科学家能带来额外的价值,具备额外的经验,他更容易找到工作,特别是在只有一个职位预算的公司,当雇主不能确定是雇用业务分析师(开展整体分析和数据任务)还是数据科学家(有商业头脑,可以执行一些通常分配给业务分析师的任务)时。在一般情况下,业务分析师是优先聘请的,但如果数据和算法变得过于复杂,也会雇用数据科学家。如果你创建自己的创业公司,你需要扮演两个角色:数据科学家和业务分析师。13个真实世界情景中的数据科学应用

现在让我们看看13个在真实世界情景下的例子,了解现代数据科学家可以帮助我们做些什么。这些例子将有助于你学习如何专注于一个问题和如何形式化一个问题,以及如何仔细评估所有潜在问题——总之,是学习数据科学家在提出解决方案之前,如何定位问题和进行战略性思考。你也会看到为什么一些广泛使用的技术,如标准回归,可能并不适合所有情况。

注意 本章重点是问题本身,以及如何评估它们。第4章、第5章将讨论这些问题的解决方法。

数据科学家的思维方式不同于工程师、运筹学专业人士、计算机科学家。虽然运筹学涉及很多分析,但这一领域的焦点是具体业务优化层面,如库存管理和质量控制。运筹学涉及国防、经济、工程、军事等领域。它采用马尔可夫模型、蒙特卡洛模拟、排队论、随机过程,以及(由于历史原因)Matlab和Informatica工具。

交叉参考 参阅第4章,数据科学家与业务分析师、统计学家和数据工程师的对比。

数据科学会遇到两种基本类型的问题。

内部数据科学问题,如损坏的数据、粗心的分析或使用不恰当的技术。内部问题不是针对业务而言,而是针对数据科学社区。因此,解决办法包括训练数据科学家更好地工作,要他们遵循最佳做法。

业务应用问题是现实世界中的问题,因此要寻求解决方案,如欺诈检测,或识别一个因素是原因还是结果。这些可能涉及内部或外部(第三方)数据。情景1:国家对烈性酒销售的垄断结束后,DUI(酒后驾驶)逮捕量减少

MyNorthWest报纸上的一篇文章,说到一年前在华盛顿州实施的一条新法律,允许杂货店销售烈性酒类。这里的问题是如何评估和解释在法律生效后,酒后驾车者的逮捕量下降。

作为一个数据科学家,你首先需要制定一个可能解释逮捕量下降的原因列表(通过与客户或老板的讨论)。然后设计一个方案,排除其中的一些原因,或为每个原因附上正确的权重,或简化结论,判定这个问题除非有更多的数据或信息可以使用,否则没法回答。

以下是15个可能原因,以及跟酒后驾车逮捕率报告存在悖论的问题。你当然可以想出更多的理由。● 在数据收集过程中有差错(数据是错误的)。● 这篇文章的作者,可能与别人有利益冲突、想推销特定的观点,

或是出于政治动机。也许只是一个大胆的谎言。● 之所以酒后驾驶被逮捕的人数变少,也许是因为警察的人手少

了。● 在这一时期内,其他犯罪率也有所下降,这是犯罪率总体下降趋

势的一部分。若没有这条新法律,酒后驾驶的逮捕量会不会下降

更多?● 缺乏统计显著性。● 存在其他更为严厉的刑罚,阻止了酒后驾车行为。● 年纪大的酒客多,因为他们已经肇事死亡,所以逮捕量下降。● 总人口增加,但喝酒的人数减少,因为移民率高的是中国人和印

度人,但他们中喝酒的人数比例远远低于其他人口群体。● 酒后驾车逮捕量统计口径是针对华盛顿居民,还是非居民的?● 这一法律没有效果,在此之前,人们也可以从华盛顿的杂货店买

酒(除了烈性酒)。●( 可能是因为增加了税收),酒价升高,导致酒精消费减少(尽

管酒精和烟草消费对价格弹性变化有抵抗力)。● 人们现在开车到更近的地方就能买到烈性酒,因此,喝烈性酒驾

驶而被逮捕的人变少了。● 所有酒后驾驶逮捕量都下降,还是仅仅喝烈性酒的酒后驾驶逮捕

量下降才如此?● 一般来说,如果人们开车次数减少了,无论对饮酒者还是非饮酒

者来说,那么可能的原因就是汽油价格上涨了。● 要评估这个新法律的影响,有一个更好的指标是华盛顿居民的酒

类(特别是烈性酒)的总消费量。

数据科学家必须选择正确的方法来评估新法律的影响,并想出如何获得评估所需数据的方法。实际上,逮捕量减少的真正原因是,喝烈性酒者可以开车在很短的距离内就能买到烈性酒。对华盛顿州来说,问题在于判断该法律能否减少因酒精消费而产生的社会问题代价(是否会增加酒精销售的税收、裁减州内商店的员工,使酒精相关的犯罪率维持适度水平或完全消失等)。情景2:数据科学与直觉

在管理层圈子里,许多决定仍然依靠直觉。然而,正如这个例子所示,数据科学和统计分析结果优于直觉,让你不至于凭直觉而形成错误的结论。

双数据点是指几乎相同的观测值。在许多不同类型的数据集中,这种情况经常出现,而非特例。在任何有300多行数据的二维或三维的数据集中,如果数据是定量的,并均匀地分布在一个有界空间中,你应该会看到大比例(大于15%)的数据点都有一个近邻。

这适用于所有数据集,但这一发现首先是从星系照片里发现的。星系照片里有很多双星,你可能会直觉地认为,有一些内在原因使得星星成对地聚集在一起。但是,如果你知道纯概率,你会发现,即使没有任何外部机制推动,15%的星星也会属于双星系统。

例如,我们可以考虑一个包含500颗星星的星系。计算这些星星构成双星系统的纯概率,结果如下。● 至少有60颗(12%)星星属于双星系统的概率为85%。● 至少有80颗(16%)星星属于双星系统的概率为18%。● 至少有100颗(20%)星星属于双星系统的概率(几乎)为0%。

然而,在现实中,超过80%的星星都属于双星系统。概率统计不支持这个数字;因此,很明显有一些机制使得星星成对聚集。

该问题提供了一个很好的、可以测试你分析直觉的机会。看看图表里的双生观测值,然后目测评估下双生观测值是自然的(随机)还是非自然的(数量太多或太少)。可以写一段代码当作练习(Python、Perl、R代码),进行模拟(包括更复杂的三维情况),检查下理论结果,并比较一下R、Perl、Python的速度差异。

交叉参考 第6章“数据科学应用案例研究”,包含了额外的测试,可以用来评估你的分析直觉。技术讲义

本节讲义解释如何计算概率。如果你不是一个数学家,可以跳过本节。

假设,有一张10cm×10cm的夜空图,其有大约n=500个可见的星星(数据点),而双星定义是一颗星星和邻近的星星距离是1mm(或更短)。如果恒星是完美随机分布的,则500颗恒星中,位于双星系统中的星星数量将是73颗(平均而言)。这个数字远远高于大多数人所认为的数字。这一比例可以表示为p,因此p=14.5%,在500颗恒星中,预计位于双星系统中的星星数量为n*p=73。

在这种情况下,可以用Poisson过程的理论来计算该概率。如果500个点分布在一个100mm×100mm的区域(一个放大的夜空图),则Poisson过程的强度L是每平方毫米面积内点的数量,即L=500/(100mm×100mm)=0.05/mm2。

在1 mm距离之内一颗星星至少有一个邻近点的概率p为1−Proba(0个邻近点)=1−exp(−L*Pi*r2),其中r=1mm,Pi=3.14。这里Pi*r2是一个半径为1mm的圆的面积。指数项是一个Poisson过程,在一个给定的集合里(圆、矩形等),点的数目有一个均值为L*Area的Poisson分布。因此p=0.145。

所以是否属于双星,是一个参数p=0.145的伯努利(1/0)变量。V可以表示位于双星系统中的星星数目:V是参数p的n个伯努利变量的总和,因而是参数为n、p的二项式分布,而normal(0,1)分布跟标准化变量Z=(V-np)/SQRT{np(1-p)}的值非常近似。这个事实可以用来计算前面所说的概率。

替代计算:使用蒙特卡洛模拟,而不是使用理论模型,来计算这些概率,也可以得到相同的结果。这将涉及生成100万个模拟图像(二维数据表),并在每个模拟图像里,计算属于双星系统的星星数目。使用现代计算机、良好的随机数生成器和智能算法,这项任务可以在几分钟内自动化进行。

如果你使用朴素的做法,则该模拟过程可能是缓慢的。但计算n个距离,找最近的星星时,计算复杂度可以做得比O(n2)好得多。具体做法是将数据存储在一个间隔为1mm的网格中(即,一个有100×100=10 000个单元格的二维数组)。因此,对于每一颗星星,你只需查看周围的8个像素,来计算不到1mm距离的邻近点的数目。通过使用1万个1比特(代表存在/不存在)存储单元,可以把O(n2)的复杂度降低到O(n)。

请注意,选100万或1万是随意的,实际只需足够大的数字,保证所估计的结果足够稳定即可,数字若再大则不会带来更准确的结果。选择合适的样本和样本大小是一个实验设计问题,并且使用无模型的置信区间有利于这项任务的开展,也保证结果稳健。这种蒙特卡洛模拟方法较受运筹学专业人士的青睐,一些数据科学家、计算机科学家、喜欢无模型统计建模的软件工程师们也较钟爱。然而,在这个案例里,理论模型众所周知,也很简单(即使不是很基础),也能快速而简捷地得到答案。所以,除非你必须花很多时间才能理解它的原理,否则还是建议寻找理论解决方案。

附加说明:在这个例子中,星星显示在二维屏幕上。在现实中,它们存在于三维空间中。从X坐标和Y坐标来看两颗星星可能是邻近的,但在Z轴上它们可能是永久分开的。所以要计算出双星的真实比例期望值,你就得模拟三维空间里的星星(点),投影到矩形内计算出双星的比例。在这种情况下,我不确定该理论模型是否是简单的解决方案,但蒙特卡洛模拟仍然是简单的。在实践中,实际上遥远的恒星不够明亮而不能显示在图片上,所以二维模型确实是对真实的三维问题很好的近似。

此外,在理论模型中,关于星星的位置有一些隐含的独立性的假设(当提到二项式模型时),但这不是实际情况,因为星星周围1mm直径范围内有时会重叠。但这种近似依然不错,并且是保守估计的。而理论上的数字,如果排除重叠,肯定要高于73。情景3:数据故障将数据变成乱码

在数据导入或导出的过程中,有许多出差错的例子。这通常是架构较差的结果,或者使用了错误的工具,或者盲目依赖工具而不进行数据质量检查的原因。数据科学家如何检测和解决这个问题?

Microsoft Access有时不能正确导入或导出数据类型,使数据库表自动甚至是强迫类型转换,输出文本或CSV文件(或其他格式),结果较差,容易导致许多错误。这种情况发生,是因为环境不够灵活,从而不能进行智能的类型检测并进行类型转换。例如,你是否处理过以下情况,一行日期数据被记录为整数,另一行却被记录为mmddyy格式(月、日、年格式,比如2016年10月5日记为100516)?或者是你不得不处理数据字段值内的逗号,因为这会搞砸你的CSV文件?

我收到过许多数据文件,损坏率达到5%以上。有时两种不同类型的值(广告主关键词与用户查询,或来源域名与广告网络域名)存储在同一字段中。有时字段没有正确对齐。有时看起来制作数据的人不是使用正则表达式的专家,或是总是错误地使用分隔符。有时则是因为软件把事情搞糟了。

垃圾收集器,导致分析数据时有缺陷。但在其他时候不是个大问题。

以下几个例子是讲混乱的数据、混乱的格式和不完整的数据整合如何导致严重的错误,以及如何解决这些问题。● Wells Fargo(美国富国银行):IBM Tealeaf用户的会话被分解成

多个会话,因为每个服务器都有自己的网络日志,而这些日志并

没有被正确混合。这种情况下主要是架构设计造成的问题。幸运

的是,发现和解决这个问题能帮助我们形成对该类问题的洞察

力。● eBay(易贝):数据传输过程中把法语和德语关键词的特殊字符

删除了,造成了数据不一致性。通过建立临时的外键查找表,让

正确的和错误的拼写对应,从而可以解决数据不一致的问题。● 点击欺诈检测:关键词字段有时代表用户查询(如谷歌查询),

有时是一个预先指定的关键词类别,这取决于广告网络联盟公司

的种类。如果相关公司的关键词是属于关键词类别的,我们会施

加一个较大的错误惩罚值,这是因为(出于设计而非欺诈的原

因)这种关键词的分布很差。添加一个指定关键词类型的新字段,

能够解决该类问题。

作为练习,我希望你多想想这些类型的问题,并回答以下问题。以下问题都是常见的、有趣的工作面试问题。● 你如何处理这些问题?● 如何自动检测这些差错?该问题是质量保证(QA)问题吗?● 在大数据情景下这类问题是变得更糟了吗?检测问题和解决问

题,哪个比较困难?● 能够容许多少坏数据?能否容许1%的错误?欺诈检测的话能容

许的错误甚至更少吗?● 解决这些问题,你花费了多长时间?

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载