和云计算、大数据的概念相比,数据挖掘和商业智能的概念早已被学术界和工业界所接受,但由于大数据的出现,又为它们注入了新的活力,“大数据时代的商业智能”的概念不断被业界所提及,那么它们究竟是什么呢?
数据挖掘的定义先来看一个例子,Google的Flu Trends(流感趋势)使用特殊的搜索项作为流感活动的指示器。它发现了搜索流感相关信息的人数与实际具有流感症状的人数之间的紧密联系。当与流感相关的所有搜索聚集在一起时,一个模式就出现了。使用聚集的搜索数据,Google的Flu Trends可以比传统的系统早两周对流感活动做出评估。这个例子说明了数据挖掘如何把大型数据集转化为知识。现在,我们可以对数据挖掘做一个简短的定义,数据挖掘就是“数据→知识”。
带着这个概念,我们来一步一步分析数据挖掘的本质。数据挖掘可以看作是信息技术自然而然进化的结果。数据库和数据管理产业的一些关键功能不断发展,大量数据库系统提供的查询和事务处理已经司空见惯,高级数据分析自然成为下一步。
20世纪60年代,数据库和信息技术已经系统地从原始文件处理演变成复杂的功能强大的数据库系统。
20世纪70年代,数据库从层次型数据库、网状数据库发展到关系型数据库,用户可以通过查询语言灵活方便地访问数据。
20世纪80年代中后期,数据库技术转向高级数据库系统、支持高级数据分析的数据仓库和数据挖掘,基于Web的数据库。
硬件的飞速发展,导致了功能强大和价格可以接受的计算机、数据收集设备和存储介质大量涌现。这些软件和硬件的进步大大推动了数据库和信息产业的发展,也导致了数据库管理系统分成了两个发展方向:OLTP(联机事务处理)和OLAP(联机分析处理)。图1-10展示了数据库管理系统的发展过程。
图1-10 数据管理系统的发展而OLAP的出现也导致数据仓库这种数据存储结构的出现。数据仓库是一种多个异构数据源在单个站点以统一的模式组织的存储,以支持管理决策。大量的数据累积在数据库和数据仓库中,数据丰富但数据分析工具缺乏,这种情况被描述为“数据丰富但信息贫乏”。快速增长的“大数据”,没有强有力的工具,理解它们已经远远超出了人的能力。结果,收集了大量数据的数据库和数据仓库变成了“数据坟墓”——几乎不再访问的数据档案(如历史订单)。这样,重要的决策常常不是基于数据库和数据仓库中含有丰富信息的数据,而是基于决策者的直觉。尽管在开发专家系统和知识库系统方面已经做出很大的努力,但是这种系统通常依赖用户或领域专家人工地将知识输入知识库。不幸的是,这一过程常常有偏差和错误,并且费用高、耗费时间。数据和信息之间的鸿沟越来越宽,这就要求必须系统地开发数据挖掘工具,将数据坟墓转换为“数据金块”。
作为一个多学科交叉的领域,数据挖掘可以用多种方式定义,例如“从数据中挖掘知识”、“知识挖掘”等。许多人把数据挖掘视为另一个流行术语——数据中的知识发现(Knowledge Discovery in Database,KDD)的同义词,而另一些人只是把数据挖掘视为知识发现过程的一个基本步骤。知识发现的过程如图1-11所示,由以下步骤的迭代序列组成[2]。
(1)数据清理:消除噪声和删除不一致数据。
(2)数据集成:多种数据源可以组合在一起。
(3)数据选择:从数据库中提取与分析任务相关的数据。
(4)数据变换:通过汇总或聚集操作,把数据变换和统一成适合挖掘的形式。
(5)数据挖掘:基本步骤,使用智能方法提取数据模式。
(6)模式评估:根据某种兴趣度量,识别代表知识的真正有趣模式。
{图1-11 知识发现的过程}(7)知识表示:使用可视化和知识表示技术,向用户提供挖掘的知识。
目前信息产业界的一个流行趋势是将数据清理和数据集成作为数据预处理步骤执行,结果数据存放在数据仓库中。步骤1~步骤4都是在为数据挖掘准备数据。数据挖掘步骤可与用户或知识库交互,将有趣的模式提供给用户,或作为新的知识存放在知识库中。
数据仓库因为数据仓库对于数据挖掘和本书都是一个比较关键的概念,在这里我们详细地来分析一下数据仓库的概念。
按照数据仓库系统构造方面的领衔设计师William H.Inmon的说法,数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合,支持管理者的决策过程。这个简短而又全面的定义指出了数据仓库的主要特征,4个关键字:面向主题的、集成的、时变的、非易失的。
面向主题的(subject-oriented):数据仓库围绕一些重要的主题,如顾客、供应商、产品和销售组织。数据仓库关注决策者的数据建模和分析,而不是单位的日常操作和事务处理。因此数据仓库通常排除对于决策无用的数据,提供特定主题的简明视图。
集成的(integrated):通常,构造数据仓库是将多个异构数据源,如关系型数据库、一般文件和联机事务处理记录集成在一起。使用数据清理和数据集成技术,确保命名约定、编码结构、属性度量等的一致性。
时变的(time-variant):数据仓库从历史的角度(例如,过去5~10年)提供信息。数据仓库中的关键结构都隐式地或显式地包含时间元素。
非易失的(nonvolatile):数据仓库总是物理地分离存放数据,这些数据源于操作环境下的应用数据。由于这种分离,数据仓库不需要事务处理、恢复和并发控制机制。数据的易失性在于操作型系统是一次访问和处理一个记录,可以对操作环境中的数据进行更新。但是数据仓库中的数据呈现出非常不同的特性,数据仓库中的数据通常是一次载入和访问的,但在数据仓库环境中并不进行一般意义上的数据更新。通常,它只需要两种数据访问操作:数据的初始化装入和数据访问。
操作数据库系统和数据仓库系统的区别操作数据库系统的主要任务是执行联机事务和查询处理。这种系统称作联机事务处理(OLTP)系统。它们涵盖了单位的大部分日常操作,如购物、库存、工资等,也被称作业务系统。另一方面,数据仓库系统在数据分析和决策方面为用户提供服务,这种系统称作联机分析处理(OLAP)系统。
OLTP和OLAP的主要区别有以下几个方面。
用户和系统的面向性:OLTP是面向客户的,用于办事员、客户和信息技术专业人员的事务和查询处理。OLAP是面向市场的,用于知识工人(包括经理、主管和分析人员)的数据分析。
数据内容:OLTP系统管理当前数据。通常,这种数据太琐碎,很难用于决策。OLAP系统管理大量历史数据,提供汇总和聚集机制,并在不同的粒度层上存储和管理信息。这些特点使得数据更容易用于有根据的决策。
视图:OLTP系统主要关注一个企业或部门内部的当前数据,而不涉及历史数据或不同单位的数据。相比之下,由于单位的演变,OLAP系统常常跨越数据库模式的多个版本。OLAP系统还要处理来自不同单位的信息,以及由多个数据库集成的信息。由于数据量巨大,OLAP系统的数据通常也存放在多个存储介质上。
访问模式:OLTP系统主要由短的原子事务组成。这种系统需要并发控制和恢复机制。然而,对OLAP系统的访问大部分是只读操作(由于大部门数据仓库存放历史数据,而不是最新数据),尽管这其中的许多操作可能是复杂的查询。
OLTP和OLAP的其他区别包括数据库大小、操作的频繁程度以及性能度量等。
为什么需要分离的数据仓库既然操作数据库存放了大量数据,读者可能奇怪,为什么不直接在这种数据库上进行联机分析处理(OLAP),而是另外花费时间和资源去构造分离的数据仓库?。分离的主要原因是有助于提高两个系统的性能。操作数据库是为已知的任务和负载设计的,例如使用的主键索引、检索特定的记录、优化定制的查询。另一方面,数据仓库的查询通常是复杂的,涉及大量数据在汇总级的计算,可能需要特殊的基于多维视图的数据组织、存取方法和实现方法。在操作数据库上处理OLAP查询,可能会大大降低操作任务的性能。
此外,操作数据库支持多事务的并发处理,需要并发控制和恢复机制(例如,加锁和记日志),以确保一致性和事务的鲁棒性。通常,OLAP查询只需要对汇总和聚集数据记录进行只读访问。如果将并发控制和恢复机制用于这种OLAP操作,就会危害并行事务的运行,从而大大降低OLTP系统的吞吐量。
最后,数据仓库与操作数据库分离是由于这两种系统中数据的结构、内容和用法都不同。决策支持需要历史数据,而操作数据库一般不维护历史数据。在这种情况下,操作数据库中的数据尽管很丰富,但对于决策是远非完整的。决策支持需要整合来自异构源的数据(例如,聚集和汇总),产生高质量的、纯净的和集成的数据。相比之下,操作数据库只维护详细的原始数据(如事务),这些数据在进行分析之前需要整理。由于两种系统提供大不相同的功能,需要不同类型的数据,因此需要维护分离的数据库。
商业智能哪里有数据,哪里就有数据挖掘应用,这句话用来形容商业智能再合适不过了。数据仓库解决了存储问题,而OLAP技术提供了挖掘手段,企业自然而然会想到将数据利用起来,而商业智能就是最好的途径。
商业智能(Business Intelligence,BI)是一个统称,指的是用于支持制定业务决策的技能、流程、技术、应用和实践。商业智能对当前数据或历史数据进行分析,在理想情况下辅助决策者制定未来的业务决策。商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。商业智能是对商业信息的搜集、管理和分析过程,目的是使企业的各级决策者获得知识或洞察力(insight),促使他们做出对企业更有利的决策。从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、OLAP等技术的综合运用[3]。
大多数的数据仓库是为了挖掘某种商业价值而创建的,但是商业智能和数据仓库之间的区别在于商业智能是定位于生成可向业务用户交付的产品,而数据仓库的目标只是着眼于对数据进行结构化的存储和组织,所以对于数据仓库,还需要OLAP技术,才能完成数据仓库到商业智能的转换过程。对于数据仓库来说,可以只关注数据本身,不需要专门考虑业务,而商业智能则更主要的是基于数据仓库的数据从业务的角度进行分析。如图1-12所示,商业智能主要使用到数据仓库技术和OLAP技术。商业智能系统通过对数据仓库的数据进行数据选择、抽取、加载后,使用数据挖掘方法提取知识,再用BI报表将知识呈现给决策者供其参考。
一款优秀的商业智能系统应该满足以下4个特性:准确、及时、价值高和可操作。准确性的意义是数据是可信的,及时性意味着数据可定期获取、价值高表示对商业用户有用,可操作性是指信息可以用于业务决策过程。
图1-12 商业智能系统大数据时代的商业智能据预测,到2020年,全球需要存储的数据量将达到35万亿GB,是2009年数据存储量的44倍。根据IDC的研究,2010年底全球的数据量已经达到120万PB(或1.2 ZB)。这些数据如果使用光盘存储,摞起来可以从地球到月球一个来回。对于商业智能而言,这里孕育着巨大的市场机会,庞大的数据就是一个信息金矿,但是海量数据也带给传统商业智能前所未有的压力。
数据是企业的重要资产。由于数据挖掘等商业智能技术的应用,让不少企业从大量的历史数据中剥茧抽丝,发现很多有价值的信息,大大改善了管理人员决策的科学性。不过,长期以来,商业智能的应用一直局限于结构化数据,其核心组件数据仓库最为擅长的也是结构化数据的存储与管理。
在大数据时代,一批新的数据挖掘技术正在涌现,有望改变我们分析处理海量数据的方式,使得我们更快、更经济地获得所需的结果。大数据技术就是要打破传统商业智能领域的局限,它在处理数据量上有了质的提高,传统商业智能限于技术瓶颈很大程度上是对抽样数据进行分析,而大数据技术的引入使得商业智能可以基于全量数据,这样让结果更加准确可信。大数据技术不但能处理结构化数据,而且还能分析和处理各种半结构化和非结构化数据,甚至从某种程度上,更擅长处理非结构化数据,比如Hadoop。而在现实生活中,这样的数据更为普遍,增长得也更为迅速。比如,社交媒体中的各种交互活动、购物网站用户点击行为、图片、电子邮件等。可以说,正是此类数据的爆炸性增长催生了大数据相关技术的出现和完善。
而对于Hadoop来说,首先HDFS解决了海量数据存储的问题,Hive负责结构化数据的分析,而半结构化、非结构化数据的分析和数据清洗可根据需要编写MapReduce作业完成,整个过程都是对基于分布式存储的数据进行分布式计算,扩展性将比传统商业智能系统大大提升。另外Hadoop生态圈的Sqoop、Flume等实现了传统商业智能的一些功能模块,如日志收集、数据抽取等。可以说Hadoop及Hadoop生态圈为大数据的商业智能系统提供了一套完整、高效的解决方案。在本书的后半部分,将基于Hadoop设计和实现一个商业智能系统,在实现这个商业系统的过程中,读者可以发现我们无论采取大数据技术还是传统数据挖掘技术,遵循的方法论其实是一致的,希望读者可以从这个项目中举一反三,融会贯通。