关闭

伪数据科学家 VS 真数据科学家

标签: 数据数据科学
1762人阅读 评论(3) 收藏 举报
分类:

如今数据科学书籍、认证和文凭,如雨后春笋般层出不穷。但许多仅仅是镜花水月:许多人钻了这一新名词的空子,将旧酒(比如统计学和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。

数据科学真的就是这些技能的混合吗?

  **MapReduce**只是一个将数据分解为子集,在不同机器上分开处理,并把所有结果集合起来,从而处理大数据的泛化框架。因此它涉及的是处理大数据的分布式框架,用到的这些服务器和设备则组成云(Cloud)。

  **Hadoop**是MapReduce的一种实现,就像C++是面向对象编程的实现一样。

  **NoSQL**意味着“Not Only SQL(意为不单只是SQL)”,是指能更新颖、更高效地访问(比如MapReduce)数据的数据库或数据库管理系统,有时它是作为SQL(标准数据库查询语言)之下的隐藏层而存在的。

  除了MapReduce以外,还有其他框架——例如,图形数据库和环境,它们依赖于节点和边这类概念,来管理和访问数据(通常是空间数据)。这些概念并不一定是新的。在谷歌存在之前,分布式体系结构已被应用到搜索技术环境中了。15年前,我写Perl脚本进行哈希连接(一种NoSQL连接,用来连接或合并数据库中的两个表)。然而,现在一些数据库厂商提供的哈希连接,是SQL连接的一个快速替代品。哈希连接在本书后面还会讨论到。它们使用哈希表,并依赖于名称-值对的形式。我想说的结论是,有时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)。

例子:某一本数据科学电子书

  查看一所著名大学2012年的数据科学训练手册,书的大部分内容是关于旧的统计理论。这本书用R来说明各种概念。当用逻辑回归处理仅仅1万行数据时,并不是大数据科学,它是伪数据科学。这本电子书全部关于小数据,最后几章例外,在那里你会学到一点SQL(嵌入在R代码中)的知识和如何使用R包从Twitter提取微博内容,且创造出作者所说的词云(它和云计算没关系)。

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

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

  本文选自《数据天才:数据科学家修炼之道》,点此链接可在博文视点官网查看此书。
                      图片描述
    想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                         图片描述

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

关于真随机数和伪随机数

来自知乎上 @纳米黑客 的回答: 首先,「真随机」也有不同的含义, 真正的真随机目测只有量子力学了……一般的所谓真随机不是指这个,而是指 统计意义 上的随机,也就是具备不确定性,可以被安全的用于金融等领域,下面的真随机也均指这个。 答案是, 计算机理论上可以产生统计意义上的真随机数 。 大部分...
  • eyeder
  • eyeder
  • 2015-09-25 13:32
  • 3915

Java真数组与伪数组

在看书时,看到一句话:Java实现了真数组,避免了覆盖数据的可能。竟然数组都有假的,遂找点资料学习一下。 提供一篇博客解释js中的伪数组 js的伪数组 我的理解: ADT(abstract data type)数据抽象类型:一个数据模型及定义在该模型上的一组运算。 数组是一种抽象的数据类型,Ja...
  • riskys
  • riskys
  • 2017-02-22 18:56
  • 1207

并发和并行的区别

并行 并行(parallel)指在同一时刻,有多条指令在多个处理器上同时执行。就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。所以无论从微观还是从宏观来看,二者都是一起执行的。并发并发(concurrency)指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有...
  • u012920372
  • u012920372
  • 2016-06-16 16:57
  • 211

为什么说Java中的随机数都是伪随机数?

原文地址:http://www.cnblogs.com/greatfish/p/5845924.html 什么是伪随机数?    1.伪随机数是看似随机实质是固定的周期性序列,也就是有规则的随机。   2.只要这个随机数是由确定算法生成的,那就是伪随机,只能通过不断算法优化,使你...
  • a872822645
  • a872822645
  • 2017-04-18 14:15
  • 239

《UNIX环境高级编程》笔记--伪终端

1.什么是伪终端 伪终端对于一个程序来说,看上去像一个终端,但事实上并不是一个真正的终端。下图显示了使用伪终端时相关进程 的典型结构。 1.通常一个进程打开伪终端主设备,然后调用fork。子进程建立了一个新的会话,打开一个相应的伪终端从设备,将其文件 描述符复制到标准输入、标准输出和...
  • TODD911
  • TODD911
  • 2014-03-10 16:57
  • 5436

VS下真机调试android native app(以cocos2dx手游为例)

0.虽然使用手游为例,但适用于任何原生C++ NDK编译方式。 1. 先说说项目背景, cocos2dx的手游,开发一般在windows vs下开发调试,IOS下使用xcode也能很方便的调试,但android就没那么幸运了,一般调试就靠log来分析问题,总觉得效率低下。调试原...
  • soft2967
  • soft2967
  • 2014-08-18 16:19
  • 11126

Unity3D Hololens 真机调试 在VS2015上调试应用程序

版本:unity 5.6.1  语言:C#   最近和河北的网友人品君组成了一个小团队在开发一个2D的游戏,实际做起来工作量确实非常大,而且团队内缺少美工,开发的阻力比较大,我的精力也大部分投入到了其中,所以博文的更新暂时会缓一缓。   最近公司里购入了一台ho...
  • u012632851
  • u012632851
  • 2017-06-02 10:59
  • 1964

左右逆和伪逆

通常我们所说的逆都是放在矩阵左右两边都能成立的逆,即 ,左逆等于右逆,如果A是m*n大小的矩阵,其秩为r,则存在上述的逆需满足条件m=n=r,也就是A为方阵并且满秩(full rank)。right-inverse pseudo-inverse,如果A不是满秩,而只是列满秩(fullcolumn r...
  • xdfyoga1
  • xdfyoga1
  • 2014-08-06 22:19
  • 3235

浅谈随机数发生器

我们平时所使用的无论什么编程语言都会提供一个随机数函数,而且它是伪随机数(Pseudo Random Number),它是由算法计算得出的,是可以预测的,也就是说当随机种子相同时,对于同一个随机函数,得出的随机数列是固定不变的,亚裔唯一图灵奖得主姚期智就是研究的就是伪随机数生成论;与之对应的就是真随...
  • nash_
  • nash_
  • 2013-12-19 01:51
  • 14643

产生伪随机数两种常用算法

我们讲的随机数其实暗指伪随机数。不少朋友可能想到C语言的rand(),可惜这个函数产生的随机数随机性非常差,而且速度很慢,相信几乎不能胜任一般的应用。 古老的LCG(linear congruential generator)代表了最好的伪随机数产生器算法。主要原因是容易理解,...
  • mergerly
  • mergerly
  • 2015-06-24 11:29
  • 9421
    个人资料
    • 访问:3862809次
    • 积分:55917
    • 等级:
    • 排名:第58名
    • 原创:1461篇
    • 转载:83篇
    • 译文:1篇
    • 评论:3782条
    博客专栏
    文章存档
    最新评论