第四节 大规模数据集的分析逻辑
一 定义及特征
社交网站数据、( 移动) 互联网数据、无线传感器 (RFID、NFC)、在线金融交易数据、视频监控数据、气象监测数据、电子发票、行政登记数据……数据收集越来越容易、规模越来越大,我们注意到,不仅样本容量 (n) 快速增加,而且维数 (p) 也多到超出传统多元统计分析的范畴(高维数据分析),还有所谓的高频数据 (t)、文本数据 (非结构) 等,特别是非结构数据和数据社会化 (Socialization of Data),这构成了大数据 (big data) 的真正含义。
很多较早提及大数据的文章仅仅是用来形容数据量大这一个维度,确有所指的大数据概念始于20世纪90年代后期的科学领域 (如气象地图、大型的物理仿真模型、基因图谱等已经超越了传统的计算能力)。在美国计算机协会的文献记录中 (the ACM digital library),最早提及大数据(big data) 一词的文章是Cox和Ellsworth (1997),该文对“大数据”的定义是:可视化涉及的数据集一般都非常大,对内存、本地磁盘和远程磁盘负担过重,我们把这样的问题称为大数据问题。Laney (2001) 在“3D Data Management: Controlling Data Volume, Velocity and Variety”一文中定义了大数据的三个基本特征,沿用至今。大约在2008年,大数据的概念被电子商务和电信行业广泛采用,以表达那些传统统计分析方法无法回答的商业问题。
大数据的革新不仅仅是数量级上的,数据的结构、形式、语义、组织和粒度等各方面都更加复杂和具有异质性。目前的共识是,大数据具有以下4V特征,即海量 (volume) 、时效与速度 (velocity)、价值 (value)、多源异构 (variety),然而很多所谓的大数据其实并不完全同时满足以上四个特征。此外,大数据这个概念是随着时间、空间和技术而变化的,是相对于当前的技术和资源而言的。其中,“超越了当前处理能力的极限”有两层含义:其一是当前的技术无法处理 (可行性),其二是当前的技术可以处理,但是无法在可容忍的时间范围内完成 (有效性)。
大数据分析的可行性问题 (feasibility) 指的是,数据量可能大到已经超过了目前的存储能力,或者尽管没有大到无法存储,但是如果算法对内存和处理器要求很高,那么数据相对也就“大”了。换句话说,可行性问题主要是,数据量太大了,或者算法的复杂度太高。大数据分析的有效性问题 (efficiency) 指的是,尽管目前的硬件条件允许,但是耗时太久,无法在可容忍的或者说可以接受的时间范围内完成。目前对有效性的解决办法是采用并行处理 (parallel processing)。
二 分析逻辑
以上特征决定了大数据显然是超出传统数据管理工具处理能力的。“大数据的影响不仅存在于企业IT基础设施架构、数据管理策略、数据可视化与分析能力等方面,从根本上也对数据中心的机房设计原则等提出了更高的要求。”比如,存储 (storage)、分析 (analytics) 和可视化 (visualizing) 等都是问题。
(一) 近似与数据压缩
“给对的问题一个近似的答案,远胜于给错误的问题一个精确的答案”(J. Keynes; J. Turkey)。统计学家的逻辑是近似或抽样 (研究样本而非总体),或者数据压缩。事实上,“所有精确的科学都受到逼近思想的支配……描述自然的问题最后一般都归结为逼近问题”( Bertrand Russell)。可荀子在《劝学》里说:“百发失一,不足谓善射;千里跬步不至,不足谓善御;伦类不通,仁义不一,不足谓善学。”但这里讲的是技术,不是科学。技术关注的是具体的实例,是事实本身,它不具有一般性,不能推而广之。技术追求的是完美、技艺精湛,科学不追求这个,科学追求的是暂时无法证伪的“道”, “道”是节约的,大道至简。关于这一点,我们在后文 (SVM混合核函数那里) 还会详谈。
大规模数据不同于大样本,大样本指的是数据量可以趋于无限,这样大数定律和中心极限定理可以很完美地实现……但有观点认为,这都是一厢情愿的大样本乌托邦 (asymptopia),而现实中根本不可能有完美的理论 (perfect knowledge will be forever beyond our reach),我们必须接受这个现实。Leamer (2010) 将其比作希腊神话中的Tantalus,当他想低头喝水时,水退去 (drained away);当他想抬头吃果时,果被风吹得远远的够不着。可大样本理论并不要求到达无穷那一点,就像效用最大化、理性预期、止于至善一样,我们只是走在这个路上,而且走不了多久就可以见到一个非常近似的结果。例如,计算 并不容易,但是我们可以用n=∞时的情形来近似n=30,见表3-1,在n=500时,已经几乎可以达到极限水平。
表3-1 极限近似
(二) 并行处理与云计算
处理大规模数据还有一个基本的逻辑,就是云计算 (Cloud Computing),即并行处理 (快速计算) 、大量存储 (超大规模)、专业化 (业务外包,出租计算能力,降低数据中心〈服务器〉闲置率)、虚拟化、高可靠性。“云计算 (Cloud Computing) 将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。通过服务器集群,包括计算服务器、存储服务器、宽带资源等虚拟计算资源的自我维护和管理,降低整个系统的单位处理能力成本。”“云计算通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源……不过,企业还远远谈不上完全抛弃部署在企业内部的计算模式和应用程序,改用云计算。”
事实上,在大规模数据时代,“云计算是不得不发展出来的技术”。比如,待分析的数据量非常大,个人电脑的配置无论如何是捉襟见肘的(运行缓慢甚或跑不动),在这种情况下,第一反应可能是,要不要换一台配置高一些的电脑?但是仅为分析一个特殊的案例去买一台新的电脑,是不是有些浪费 (因为其余时间是闲置不用的)?当然,如果不计成本,完全可以买一台高配置的电脑。但问题又来了,搬来搬去,还是不那么方便。事实上,如果与周围朋友的计算机的计算能力能够联合起来,蚂蚁群兵,问题也能得到有效的解决,而且从经济上来讲也是划算的。这里所说的经济不仅仅是购置与维护成本得到了控制,而且时间成本也大大缩减。特别是当类似的需求变得越来越普遍时,时间成本还可以进一步下降,因为这时候更专业化的服务被分离出来交由市场来提供。这样,一方面,用户的配置可以降到最低,同时也不需要场地、不需要配置相应的电力和人员,可能只需要安装一款浏览器,甚至可能只需要一部手机就够了。另一方面,服务商提供的庞大而专业的计算能力使计算的速度也得到了很大的提升——至少计算太慢会浪费电力资源。这就是分工的效率。
数据庞杂,亟须一个有效的工具去抽丝剥茧。然而工具发明出来之后,又直接纵容了人类更加肆无忌惮地收集数据制造新的麻烦。所以,工具“不得不”升级,技术“不得不”进步。回顾技术发展的历史,技术进步大都是被迫的。内燃机替代蒸汽机,当时若不是因为爆发口蹄疫需要将饮水槽拆除,我们很难想象还要等多久蒸汽机才能让位于内燃机。新石器时代转变成以农耕为主,可能就是因为当时狩猎过度已经发展到无法可持续的境地而不得不做出改变。所以一个优于旧事物的新事物,并不必然发生替代现象,它至少需要等待时机。为什么是被迫?因为,(1) 根据牛顿定律,如果没有打扰,任何物体都有保持它先前姿势的惰性或惯性;(2) 旧事物在本能上会排斥新事物,比如发现不是数的人被抛入了大海,再比如罗马时代有人发明了滑轮和杠杆,但维斯帕辛皇帝知道后立刻废除了这个发明,他说“自有我的奴隶帮我做事情,我用不着这个”;(3) 当旧事物成为一个标准之后,即便它是落后的,也能成功地限制新事物进入,至少这里面有一个转换成本或锁定效益。
事实上,若强调云的共享性,可能“月亮”这个词更合适。因为怀念“故乡的云”就是因为看不着,而“月”却可以“天涯共此时”。所以“云”的开放性其实并没有那么广,它只是提供便利 (随处可见),但并不是免费的 (非随处可用)。从云的商业属性来讲,它可能是回避免费使用的一个很好的变通,因为它很容易对使用的多寡进行量化,就像水电这样的公用设施一样,根据使用量收费。这种即用即付的 (pay -per -use) 的盈利模式显然不同于传统软件的一次购买终身享用 (one -time payment for unlimited use)。事实上,不仅费用要上缴,数据也要“上缴”,因为使用记录也不再是本地化的私藏品而上传到云端了!这样就没有隐私了。即便不考虑人权,从保护国家机密和商业机密的角度来讲,也需要有“私有云” (Private Cloud) 或“低空云”。相对的是公有云 (Public Cloud),如Google App Engine、Amazon。
第二个问题是,数据共享在云端,虽然不必在空中反复传递,但这安全吗?以笔者在云端提心吊胆写作为例,每晚关机之后笔者总是惴惴不安,因为不知明天开机是否还能见到昨日的耕耘。这样的担心不无道理,但也没什么道理。因为这就好像在家里看电视害怕突然断电要自己买台发电机一样。过去农耕时代养牛喝奶纺纱织布自给自足,现在牛奶新衣都在商场里等着选购。衣服可以凑合,但牛奶怎么可以放心?因为牛奶盒子上有我们认识的商标 (许诺),因为先前也有人买过喝了安然无恙 (试验)。事实上,有些事情还不得不外包给他人代劳,放不放心总得看病吃药吧。
第三个问题是,像水电通过管道电缆传输一样,计算能力通过网络传输,网络能承受得了吗?所有任务都丢到网上去处理会不会网络塞车?但是对于云计算而言,客户端的网络带宽其实并没有那么重要,只要满足响应速度的要求即可,比如指令是否可以迅速收到回应。因为云计算的过程并不在网络上,而是在提供云计算服务的终端设备上。所以,只需要发出一个请求后等待结果就是了。甚至,不仅是计算过程外包,而且数据从哪里获取都不是客户要过问的事情,比如一些离线下载服务。退一步,带宽(流量) 也是付费的,如果真需要,客户也可以像购买云计算能力一样去购买流量。再退一步,若将来云计算日益普及,需要相应的带宽来匹配,首先技术上已然不是问题——带宽相对于计算能力并不是问题,而且市场也会及时解决这个问题。
第四个问题是,云计算是通过互联网提供服务的 (Internet -based computing),那么,我们每天使用的E-mail、Google等服务是云吗?为什么叫云呢?因为在计算机流程图中,互联网是用一个云状图来表示的。所以有观点认为,云计算就是网络计算,云只是互联网的一个商业化的比喻,就好像把网络购物叫成电子商务,并不是新技术 (甚至谈不上技术),只是新概念;或者更宽容一些,在实现概念的过程中,也产生相应的技术。
第五个问题是,云计算与互联网的区别在哪里?云计算仅仅是并行协作吗?云计算的本质到底是什么?云计算是一种范式,它强调数据和计算能力可以通过可伸缩 (scalable) 的节点 (比如客户端、数据中心、网络服务器等) 构成的网络来分享,所以数据以及分析数据的程序在哪里运行,这都不重要了。云通过互联网提供虚拟化 (virtualization) 资源,且动态易扩展——服务商的计算能力能够快速而弹性地实现供应,即服务商可以根据访问用户的多少,增减相应的IT资源 (包括CPU、存储、带宽和软件应用等),使得IT资源的规模可以动态伸缩,满足应用和用户规模变化的需要。
由此来看,云计算不是简单的拆分协作,而是专业化的服务,它应该由一个专业的服务商来提供。通过网络协同翻译电影字幕,通过网络将自己闲余出来的计算能力共享他人,这种横向的伸缩性并不是云计算的本质。就好像“一方有难八方支援”,这是保险的逻辑,没错,但要有一个专门的机构——保险公司——来提供这样的服务。所以云计算更强调专业服务商纵向的伸缩性,比如根据访问用户的需求增减相应的IT资源。对于横向的伸缩性,它指的更多的是服务商与服务商这个层面的联合,将每一朵云所代表的规模庞大的运算能力相互连接,就好像银行之间的拆借而非个人之间的借贷。在这种情况下,既然云与云之间在必要的时候不得不协同作战,那么云标准自然是无法回避的问题,特别是企业的私有云。其实,私有云也并不是真正意义上的云,因为它的通用性比较差,而且也没有体现规模效应 (分享固定成本)。
按照服务的灵活程度由低到高可以将云计算分为以下三个层次:(1) 软件即服务 (software as a service, SaaS),或称将软件视为服务,这个最简单,比如网盘、云笔记、Google doc,都是现成的服务,拿来即用,当然灵活度也是最低的,有什么就只能用什么。(2) 平台即服务 (plat-form as a service, PaaS),或称将平台视为服务,这方面有名的例子是GAE Dotcloud、Google App Engine、Microsoft Azure,这个层面的灵活度就高一些。举例子来讲,如果说SaaS是菜单式操作的软件 (功能已经封装好了),那么PaaS就是可以按照自己的算法编辑程序。更直白一些,SaaS提供的是馒头,洗干净手就可以吃;PaaS提供的是面粉,蒸馒头还是花卷自己可以决定。(3) 基础架构即服务 (infrastructure as a service, IaaS),或称将基础架构视为服务,即将基础架构当作服务提供给用户,这方面做得比较好的是Amazon EC2 (Amazon Elastic Compute Cloud,2006)。对用户来讲,IaaS的灵活度是最高的,当然也是最复杂的,同时也需要负担较多的系统管理资源。如果还拿馒头举例,IaaS提供的是一块儿地,种什么植物磨什么粉,都由自己决定。
最后,我们简单谈一些云计算的历史与趋势。云计算的发展大致经历了超级电脑 (Super Computer)、丛集计算 (Cluster Computing)、分布式计算 (Distributed Computing) 和网格计算 (Grid Computing) 等几个阶段,本质上可以看做是分布式计算 (Distributed Computing) 的新运用——云计算大抵承袭了分布式计算与网格计算。超级电脑和丛集计算面向的主要是非服务性质的应用 (non-service applications);而Web2.0面向的主要是服务性质的应用 (service-oriented applications),其中云计算的伸缩性或可扩展性 (scalability) 相对来讲更大一些。
IDC (International Data Corporation) 2012年5月发布了大数据技术及相关服务的全球趋势:将从2010年的32亿美元增长到2015年的169亿美元,年增长率40% (按复利计算) (相当于全部IT市场的7倍左右)。Gartner于2012年10月公布的2012—2013年技术成熟曲线 (Hype Cycles,炒作周期,hype的意思是大肆宣传) 显示,大数据开始进入期望膨胀期(Peak of Inflated Expectations),2—5年内会迎来高峰期;云计算在技术已经进入泡沫化的谷底期 (Trough of Disillusionment),2—5年内会迎来高峰期。虚拟化和云计算基础架构厂商VMware于2012年11月公布了年度云成熟度指数调查结果,调查显示,31%的受访者 (来自中国本土公司、区域性公司、跨国公司以及公共部门等的IT人士) 表示他们的机构 (大都是大型企业) 目前正在采用云解决方案,2011年和2010年分别是20%和16%。