转自:O’Reilly(www.oreilly.com.cn)
未来属于那些知道如何把数据变成产品的企业和个人。
——麦克·罗克德斯(Mike Loukides)
据哈尔•瓦里安(Hal Varian)说,统计学家是下一个性感的工作。五年前,在《什么是Web 2.0》里蒂姆•奥莱利(Tim O’Reilly)说“数据是下一个Intel Inside”。但是这句话到底是什么意思?为什么我们突然间开始关注统计学和数据?
在这篇文章里,我会检视数据科学的各个方面,技术、企业和独特技能集合。
互联网上充斥着“数据驱动的应用”。
几乎任何的电子商务应用都是数据驱动的应用。这里面前端的页面靠背后的数据库来支持,它们两者之间靠中间件来连接其他的数据库和数据服务(信用卡公司、银行等等)。但是仅仅使用数据并不是我们所说的真正的“数据科学”。一个数据应用从数据里获取价值,同时创造更多的数据作为产出。它不只是带有数据的一个应用,它就是一个数据产品。而数据科学则是能创建这样的数据产品。
互联网上早期的数据产品之一就是CDDB数据库。CDDB数据库的开发者意识到基于CD(音频光盘)里面的每首歌曲的确切长度,任何CD都有一个唯一的数字签名。Gracenote公司创建了一个数据库,记录着歌曲的长度,并和专辑的元数据(歌曲名称、歌手和专辑名称)数据库关联。如果你曾经使用iTunes来找CD,你就是在使用这个数据库服务。iTunes会先获取每首歌的长度,然后发给CDDB,从而得到歌曲的名称。如果你有一些CD(比如你自制的CD)在数据库里没有记录,你也可以在CDDB里创造一个无名专辑的题目。尽管看起来很简单,但这是革命性的。CDDB把音乐看成是数据,而不仅仅是声音,并从中创造了新的价值。他们的商业模式和传统的销售音乐、共享音乐或者分析音乐口味等业务的模式截然不同,尽管这些业务也可以是“数据产品”。CDDB完全是视音乐的问题为数据的问题。
谷歌是创造数据产品的专家,这里列几个例子。
- 谷歌的创新是在于其意识到搜索引擎可以使用入链接而不是网页上的文字。谷歌的PageRank算法是最早一批使用网页以外的数据的算法之一,特别是网页的入链接数,即其他网页指向某网页的数量。记录链接让谷歌的搜索引擎比其他的引擎更好,而PageRank则是谷歌的成功因素中非常关键的一条。
- 拼写检查不是一个非常难的任务,但是通过在用户输入搜索关键词时,向错误拼写推荐正确的用法并查看用户是如何回应推荐,谷歌让拼写检查的准确率大幅提高。他们还建立起了常见错误拼写的字典,其中还包括对应的正确拼写以及错误拼写常见的上下文。
- 语音识别也是一个非常艰难的任务,而且也还没有完全被解决。但谷歌通过使用自己收集的语音数据,已经开始了针对这个难题的一个宏大的尝试。并已把语音搜索集成到了核心搜索引擎里。
- 在2009年猪流感的传播期,谷歌能够通过跟踪与流感相关的搜索来跟踪这次猪流感的爆发和传播过程。
通过分析搜索跟流感相关的用户在不同地区的情况,谷歌能够比美国国家疾病控制中心提前两周发现猪流感的爆发和传播趋势。
谷歌并不是唯一一家知道如何使用数据的公司。脸书和领英都是用朋友关系来建议用户他们可能认识或应该认识的其他人。亚马逊会保存你的搜素关键词,并使用别人的搜索词来关联你的搜索,从而能令人惊讶地做出恰当的商品推荐。这些推荐就是数据产品,能帮助推进亚马逊的传统的零售业务。所有这些都是因为亚马逊明白书不仅仅是书,而相机也不仅仅是相机,用户也不仅仅就是一个用户。用户会产生一连串“数据排气”,挖据它并使用它,那么相机就变成了一堆数据可以用来和用户的行为进行关联。每次用户访问他们的网站就会留下数据。
把所有这些应用联系到一起的纽带就是从用户那里采集的数据来提供附加价值。无论这个数据是搜索关键词、语音样本或者产品评价,现在用户已经成为他们所使用的产品的反馈环中重要的一环。这就是数据科学的开端。
在过去的几年里,可用的数据量呈爆炸性的增长。不管是网页日志数据、推特流、在线交易数据、“公民科学”、传感器数据、政府数据或其他什么数据,现在找到数据已经不再是问题,如何使用这些数据才是关键。不仅仅是企业在使用它自己的数据或者用户贡献的数据。越来越常见的是把来自多个数据源的数据进行“聚合”。《在R里进行数据聚合》分析了费城郡的房屋抵押赎回权的情况。它从郡长办公室获得了房屋抵押赎回权的公开记录,抽取了其中的地址信息,再使用雅虎把地址信息转换成了经纬度。然后使用这些地理位置信息把房屋抵押赎回权的情况绘制在地图上(另外一个数据源)。再把它们按社区、房屋估值、社区人均收入和其他社会—-经济因素进行分组。
现在每个企业、创业公司、非营利组织或项目网站,当他们想吸引某个社群的时候所面临的问题是,如何有效的使用数据。不仅仅是他们自己的数据,还包括所有可用的和相关的数据。有效的使用数据需要与传统的统计不同的技能。传统的穿职业西装的精算师们进行着神秘但其实是早已明确定义的分析。而数据科学与统计的不同是数据科学是一种全盘考虑的方法。我们越来越多的在非正规的渠道里找到数据,数据科学正随着数据的不断收集、把数据转换为可处理的形式、让数据自己讲故事以及把故事展现给别人不断演进。
为了能感受到什么样的技术是数据科学需要的,让我们首先看看数据的生命周期:数据从哪里来,如何使用,以及数据到哪里去。
数据从何而来
数据无处不在,政府、网站、商业伙伴、甚至你自己的身体。虽然我们不是完全淹没在数据的海洋里,但可以看到几乎所有的东西都可以(甚至已经)被测量了。在O’Reilly传媒公司,我们经常会把来自Nielsen BookScan的行业数据和我们自己的销售数据、公开的亚马逊数据、甚至就业数据组合起来研究出版行业发生了什么。一些网站,比如Infochimps和Factual,可以提供很多大型数据集的连接,包括天气数据、MySpace的活动流数据、体育活动比赛记录等。Factual网站还招募用户来更新和改进它的数据集。这些数据集覆盖了从内分泌学家到徒步小道等的广泛内容。
很多我们现在所用的数据都是Web 2.0的产物,也遵守摩尔定律。Web让人们花更多的时间在线,同时也留下了他们的浏览轨迹。移动端应用则留下了更丰富的数据轨迹,因为很多应用都被标注了地理位置信息或附带着音频和视频。这些数据都可以被挖据。结帐点设备和经常购物者购物卡使得获取消费者的所有交易信息(不光是在线信息)成为可能。如果我们不能存储这些数据,那么所有这些数据就将没有用处。这里就是摩尔定律起作用的地方。自80年代早期开始,处理器的速度就从10Mhz增加到了3.6GHz,增加了360倍(这还没考虑处理位数和核数的增加)。但是我们看到存储能力的增加则更为巨大。内存价格从1000美元每兆字节降到25美元每吉字节,几乎是40000倍的降低。这还没考虑内存尺寸的减少和速途的增加。日立公司在1982年制造了第一个吉字节的硬盘,重大概250磅。现在千吉字节级别的硬盘已经是普通消费品,而32吉字节的微存储卡只有半克重。无论是每克重的比特数、每美元比特数或者总存储量,存储能力的提升已经超过了CPU速度的增幅。
摩尔定律应用于数据的重要性不仅是极客的技巧。数据的增长总是能填充满你的存储。硬盘容量越大,也就能找到更多的数据把它填满。浏览网页后留下的“数据排气”、在脸书上添加某人为朋友或是在本地超市买东西,这些数据都被仔细的收集下来并进行分析。数据存储的增加就要求有更精致的分析来使用这些数据。这就是数据科学的基石。
那么,我们怎么能让数据有用?任何数据分析项目的第一步都是“数据调节”,即把数据变换成有用的状态。我们已经看到了很多数据的格式都是易用的:Atom数据发布、网络服务业务、微格式和其他的新技术使得数据可以直接被机器消费。但是老式的“屏幕抓取”方法并没有消亡,而且也不会消亡。很多“非正规”数据源来的数据都是很混乱的。他们都不是很好构建的XML文件(并带有所有的元数据)。在《在R里做数据聚合》里使用的房屋抵押赎回权数据都是发布在费城郡长办公司的网站上。这些数据都是HTML文件,很可能是从某个数据表格文件里自动生成的。如果曾经见过这些由Excel生产的HTML文件,你就知道处理这个会是很有趣的。
数据调节也包括用类似Beautiful Soup这样的工具来清理混乱的HTML文件,用自然语言处理技术来分析英语和其他语言的纯文本,或用人工来干苦活和脏活。你有可能会处理一系列数据源,而他们各自的格式都不同。如果能有一个标准的工具集来处理这些就太好了,可实际上这是不现实的。为了做数据调节,你需要准备好处理任何的数据格式,并愿意使用任何的工具,从原始的Unix工具(如awk)到XML语义分析器和机器学习库。脚本语言,比如Perl和Python,就很重要了。
一旦你分析了数据,就可以开始思考数据的质量问题了。数据经常会有缺失和不一致。如果数据缺失了,你是要简单地忽略他们吗?这也不总是可以的。如果出现数据不一致,你是否要决定某些表现不好的数据(是设备出错了)是错的,或者这些不一致的数据恰恰是在讲述它自己的故事,而这就更有趣。有报道说,臭氧层消耗的发现被延误了,因为自动数据收集工具丢弃了那些数值过低的读数1。在数据科学里,你能有的经常是你将会拿到的。通常你不可能得到更好的数据,你可能没有其他的选择除了使用你手头有的数据。
如果研究的问题涉及到人类的语言,那理解数据就又给问题增加了一个维度。O’Reilly的数据分析组的主管罗杰.马古拉斯(Roger Magoulas)最近在为苹果公司招聘公告列表搜寻数据库,这需要有地理位置技能。这听起来像是个简单任务,这里的坑就是从很多招聘公告列表里去发现真正的“苹果”的工作,而不是那些大量增加的苹果附属的工业企业。为了能更好的完成这个任务,就需要能理解一个招聘公告的语法结构,即你需要能解析英语语义。这样的问题已经变的越来越常见。比如你试着去用谷歌趋势(Google Trend)去查看Cassandra数据库或者Python语言正在发生什么,你就能感受到这个问题了。因为谷歌已经为很多关于大型蛇类的网站建立了索引。歧义消除从来都不是一个简单的任务,但是类似于Natural Language Toolkit这样的库可以让这个工作简单一点。
当自然语言处理失效时,你可以用人的智能来代替人工智能。这就是类似亚马逊的Mechanical Turk这样的业务所服务的目标。如果你能把你的任务分解成非常多的容易表述子任务,你就可以使用Mechanical Turk的市场来招募很便宜的工人。例如,你想查看招聘公告列表并发现哪些是真正来自苹果公司,你可以招募工人来做分类,价格大概是一美分一个公告。如果你已经把这个列表的数目降到一万条有苹果字样的公告,那么只要付100美元就可以让人工来分类了。
未完待续。