不知从什么时候开始,“大数据”这个词开始频繁地出现在互联网大佬们的讲话中,在秋招的时候也发现很多互联网公司都有数据分析的岗位,学校某大神老师带领他的学生们在数据挖掘领域拿了一个又一个的专利,发表了一篇又一篇的论文。而我对「大数据」这个词还是仅仅停留在望文生义的理解当中,在这个O2O、B2C、IPO、LOL、AP、ADC(好像有什么乱入了……)各种新鲜名词概念缩写满天飞的互联网时代,要持续保持对新鲜事物的好奇心确实是一件麻烦的事,很容易就会忽略掉某些关键词,导致和别人侃大山时云里雾里,「大数据」就是一直被我忽略的其中一个。直至某个月黑风高的夜晚,经过路边的盗版书摊时瞥到了《大数据时代》这本书,觉得是时候跟上时代的步伐了,于是怒砸十元,将其收入囊中。
这本书在书架上供奉了两周之后终于花了两天将它翻完,书中要讲的内容其实很少,集中在全书的第一部分,后面几乎都是案例的堆积,对第一部分的补充说明,显得有些啰嗦。想要迅速了解大数据可以只看第一部分,喜欢听故事的话后面几部分看看无妨。
先抛出一个自己总结的概念:所谓的大数据技术,就是从很多很多的数据中,挖掘出有效的相关关系,用这些关系对未来进行预测,指导人们做出正确的决策,从而实现价值的转换。
具体是怎样实现的呢?作者在引言部分举了一个栗子:2009年,甲型H1N1流感在美国爆发的前几周,谷歌公司的工程师们在《自然》杂志上发表了一篇引人注目的论文。文中解释了谷歌为什么能够预测冬季流感的传播,不仅是全美范围的传播,而且可以具体到特定的地区和州。然而当时的美国疾控中心需要在流感爆发的一两周之后才可以做到。
谷歌通过观察人们在网上的搜索记录来完成这个预测,而这种方法以前一直是被忽略的。谷歌保存了多年来所有的搜索记录,而且每天都会收到来自全球超过30亿条的搜索指令,如此庞大的数据资源足以支撑和帮助它完成这项工作。
虽然谷歌公司的员工猜测,特定的检索词条是为了在网络上得到关于流感的信息,如“哪些是治疗咳嗽和发热的药物”,但是找出这些词条并不是重点,他们也不知道哪些词条更重要。更关键的是,他们建立的系统并不依赖这样的语意理解。他们设立的这个系统唯一关注的就是特定词条的使用频率与流感在时间和空间上传播之间的联系。
上面这段话的粗体部分隐约能感受到「大数据」与传统数据分析不同的两个特点:
1. 要全体不要抽样
2. 要相关不要因果
在信息处理能力受限的时代,世界需要数据分析,却缺少用来分析所收集数据的工具,于是人们使用随机采样的方法来减少样本的数量,以最少的数据来得到最多的信息。当我们可以获得海量数据的时候,采样便没什么意义了。随着硬件存储成本的降低和软件算法的改进,使得“样本=总体”变成了可能。
接下来重点关注一下第二个特点:要相关不要因果。
样本的量变产生了质变,使得人们对数据的分析方法也产生了质的变化。追求因果关系是人类认识事物的普遍规律,然而让计算机按人类的逻辑去思考问题是非常难实现的,这一点会在后面讲到。先来看看现在计算机是如何思考的,当事件A和事件B经常一起发生,只要这个“经常”的频率够高,当事件A发生时,计算机便会预测出B也发生了。不需要知道“为什么”,只要知道“是什么”,这就是所谓要相关不要因果。
在谷歌预测流感的例子中,他们所建立的系统不需要理解特定词条的语意,只需要找出特定词条的搜索频率与流感爆发的时间和空间之间存在相关关系,下次再达到该搜索频率时,流感就很可能会再次爆发。
《大数据时代》中还有一个非常有趣的例子。一天,一个男人冲进了一家塔吉特商店,他气愤地说:“我女儿还是高中生,你们却给她邮寄婴儿服和婴儿床的优惠券,你们是在鼓励她怀孕吗?”而当几天后,经理打电话向这个男人致歉时,这个男人的预期变得平和起来。他说:“我跟我的女儿谈过了,她的预产期是8月份,是我完全没有意识到这个事情的发生,应该说抱歉的人是我。”
对于零售商来说,知道顾客是否怀孕是非常重要的。公司通过分析大量数据注意到妇女会在怀孕大概第三个月的时候买很多无香乳液。几个月之后,她们会买一些营养品,比如镁、钙、锌。公司最终找出了大概20多重关联物,这些关联物可以给顾客进行“怀孕趋势”评分,这些相关关系甚至使得零售商能够比较准确地预测预产期,这样就能够在孕期的每个阶段给客户寄送相应的优惠券。
尽管这些关联物乍看起来与怀孕并无太大的因果关系,但却存在着很强的相关关系,使得事实很有可能便是如此,即便女儿只是个高中生。所以数据往往能弥补我们对直觉的过分自信。
记得在上一次是看到这种类似“相关打败了因果”的观点,是在吴军大神的《数学之美》中,这本书的前几章主要在介绍计算机自然语言处理的。自然语言的机器处理历史可以追述到60多年前,在这个发展过长中,基本可以分成两个阶段。
早期的20多年,全世界的科学家对计算机处理自然语言的认识都被局限在了人类学习语言的方式上,即用电脑模拟人脑,按照一定的语法规则去分析句子。然而这个过程比想象中要困难得多,首先想通过语法规则覆盖哪怕20%的真实语句,语法规则的数量至少是几万条。语言学家几乎已经是来不及写了,而且这些文法规则写到后来甚至会出现矛盾,为了解决这些矛盾,还要说明各个规则的使用环境。基于这些规则所编写的程序相当复杂,处理起来十分缓慢,即使今天,分析二三十个词的句子也需要几分钟的时间。这20多年的研究成果几乎为零。
在20世纪70年代,基于规则的句法分析很快走到了尽头,用统计学来处理自然语言的方法开始展露头角。计算机在判断一个句子是否合法时,只需要通过合理的统计模型处理然后与足够大的语料数据进行对比即可作出判断,而不需要通过语法规则去分析句子。如今广泛应用的语音识别,自动应答机器人都是基于统计的产物,而不是真正像人类一样去思考你给它输入的句子是什么。像微软小冰、小黄鸡这些自动应答机器人,人们与它的每一句对话都会为它们丰富语料库做贡献,而语料库越丰富,会让他们对回答什么的预测越来越准确,看起来也越来越像人类。人工智能的巨大进步归功于统计学,而非仿生学,前者强调相关,后者强调因果。
比起查其因果、探其究竟,利用数据旁敲侧击,挖掘相关关系,建立统计模型,然后通过模型进行结果预测,将会是以后人们作出决策、解决问题的主流方向吧。没有参加过数学建模,隐隐约约觉得这些应该就是数学建模所做的事情?
以上是我对大数据的一些浅显的思考,如有不妥的地方,还请各位指正。