什么叫数据挖掘(Data Mining)?关于定义,各人的说法不一。基本上我们可以用一个例子讲清楚:先给你一个大的数据集──假设你可以从中读取数据,下面的问题是:从这里你可以得到什么?从某种角度来看,这是百分之百的统计分析工作,只是数据集太多的缘故罢了。但我们并不想忘记这些数据集是做 IT 的人这么多年来逐渐制造出来的,更何况他们对于如何有效而快速地存储、选取和管理数据,确是有一套真功夫。在 IT 的骨架上把统计的精髓放进去,这的确是对现在这个信息时代的大挑战。
时代变了,现在的数据来得既多又快还便宜,多到没有人有时间去看的程度。这就如同我们的医疗体系。早先的医生还要望闻问切,在少量的数据中,设法提取、组合出最好的治疗方案。现在则是一个名医,一上午要在门诊医治一百五十个病人以上。他只能凭某种算法、也就是经验来看病:问一两个问题,听一两个问题,然后开药。这种对数据的不同的处理方式是数据挖掘和传统的数据分析的主要区别。
说实在的,我们已经在某些方面具有相当的信息化程度了。你去任何一家医院看病,哪一个窗口没放着一台PC?医生暗示你可以离开的时候,值班的护士已经在她的 PC 上键入了许多你的资料。于是你直接可以去划价、取药,连下一次的预约也有人安排好了。前天,我去医院借了一张X光片,一位五十多岁的老职员用“一阳指”在键盘上一步一个“脚印”地敲了不知多久,才输入了该有的个人信息,然后大家就都松一口似地让计算机去跑,最后当然是拿到X光片。这时回顾身后,已排了一条长龙。
这种情况,也暗示着目前信息社会的一类尴尬问题:很多事情都还配不上如此快的计算机—老职员的手指速度固然配不上,我们做统计的人和现有的某些统计方法也配不上,甚至于很多统计观念恐怕也都配不上。于是 IT 的人就跳进来做了个项目:既然有了花大钱做出来的数据库,而且这么多年下来数据堆得满坑满谷,好歹要告诉出钱的老板“这有什么用”。于是,DM便应运而生了。
如何看待数据挖掘
数据挖掘是先有了数据才兴起的行业。我不想说“学问”,因为到现在为止,我好像都看不到大学问。数据挖掘能帮我做什么?不同的人有不同的看法,比较乐观的是Berry and Linoff (1997) 的说法:分析报告给你后见之明 (hindsight);统计分析给你先机 (forESight);数据挖掘给你洞察力 (insight)。
这话说得太强,我不是那么地相信。因为这三者都是在既有的数据上做分析,在概念上应该并无本质区别,差别只是手上的数据集的大小和性质,因此,由方法的不同才有定义的不同。
较负面的理解来自Friedman (1997),他说:“Data mining is a commercial enterprise that seeks to mine the miners。(数据挖掘就是商业企业竭力去寻找挖掘者的过程。)”这句话有多少真实的成分,我并不清楚,但是酸味还是有一点的。在雅虎上键入“Data Mining”,立刻便找到一百五十多个网址。如果用GOOgle 搜寻,它在0.34秒内就找到1,260,000项查询结果。这是在方法论都还没有成熟之前便已有大量商品充斥的情形。看起来真是商机无限。在另一方面,我却在文献上读到:“…… while I apprECiate the importance of data mining, in practice the profit it brings hAS turned out to be surprisingly limited in many key businesses.(虽然我认可数据挖掘重要性,事实上,在很多关键的业务中,它所带来的利润已证明出奇有限。” (Kann 2000)
多半的数据库在建造时都另有目的,并不是设计来给大家挖掘的。上帝给我们大海,也许只是想给我们盐。现在盐的利润有限,大家就拼命去提炼铀,结果自然就不会十分理想。
我认为,比较中肯的是 Hand et al. (2000) 的说法:“Data mining is the process of seeking intereSTing or valuable infORMation in large data bases.(数据挖掘是一种在大型数据库中寻找你感兴趣或是有价值信息的过程。)”
挖掘需要“用心看”
DEMming (1943) 曾说过:“搜集数据的目的是为了行动。”这是在数据的搜集并不便宜的时候所说的话。现在要反过来看:已经有了一大堆数据,当初只是为了搜集而搜集──因为反正不贵,而且说不定某一天会有用─现在我们应该问,这些数据可以提供怎样的信息,能让数据的所有者采取何种有效的行动?我的意思是我们需要用心地去看这些数据。“用心看”有两个角度:整体和局部。
从整体看: 模型
从整体的角度来看一个数据集,是靠统计学里面的抽样方法就可以发挥得不错的。抽样的要点是细化──用一组较小的、容易处理的精选的数据来反映整体。在这里我们可以做一大堆传统的建模工作,但这里面最主要的观念是抽样。
例如 SAS 的Enterprise Miner软件中所构建出来的“表格”,就是全部数据的抽样所得。从抽样的观点来看,数据量再多也不是问题──它反而可使抽样理论更加简单。在数据库上抽样,成本低,且没有我们最头痛的non-response(无反应)问题。这一部分,可以说是所有我们想做的理论和方法都十分成熟, 只要找一群还不错的人,将这些已知的事物组合包装就好。在表格上做传统分析,最后的结果当然是一个可以用来描绘所有数据之间的关系的模型。
从局部看: 模式发现
从局部的角度来看数据挖掘,到目前为止,主要的目的是模式发现。这和我们常听到的模式识别颇有不同。用雷达找飞机的工作,算是后者──我们知道飞机是我们要找的对象。但是在数据挖掘中,我们在通常情况下并不知道我们要找的东西是什么。在技术上,这也不能通过抽样的方法来做。模式是数据的局部结构,在这一部分,数据挖掘强调的方法是算法。数据一多,光凭人力是不能完全解决问题的,我们只有靠明确的指令让计算机一个一个帮我们找。那么在这里,我们就完全用不上统计方法吗?也不尽然。在提取训练样本(trAIning sAMple)的时候,我们是可以把实验设计的想法放进去的。
编者按: 数据挖掘应建立在联机分析处理(On Line Analytical Processing,OLAP)的数据环境基础之上,而数据仓库技术能够满足数据挖掘技术对数据环境的要求。它从OLTP系统、异构分散的外部数据源、脱机的历史业务数据中获取数据并进行处理。
当今数据容量规模已经达到万亿字节(TB)的水平。过量的数据被人们称为信息爆炸,带来的挑战是:一方面规模庞大、纷繁复杂的数据体系让使用者漫无头绪、无从下手;另一方面在这些大量数据的背后却隐藏着很多具有决策意义的有价值的信息。那么,如何发现这些有用的知识,使之为管理决策和经营战略发展服务?计算机科学给出的最新回答是:数据挖掘(Data Mining)。
一般说来,数据挖掘是一个利用各种分析方法和分析工具在大规模海量数据中建立模型和发现数据间关系的过程,这些模型和关系可以用来做出决策和预测。支持大规模数据分析的方法和过程,选择或者建立一种适合数据挖掘应用的数据环境是数据挖掘研究的重要课题之一。
建立适合的数据环境
数据挖掘应建立在联机分析处理(On Line Analytical Processing,OLAP)的数据环境基础之上。数据挖掘对大量数据的探索式分析的起点是OLAP。数据挖掘需要对大量数据进行反复查询操作,关心数据存取方式的方便性与可操作性。
联机分析处理和传统的联机事务处理(On Line Transaction Processing, OLTP)是两种性质不同的数据处理方式。OLTP主要用来完成基础业务数据的增、删、改等操作,如民航订票系统、银行储蓄系统等等,对响应时间要求比较高,强调的是密集数据更新处理的性能和系统的可靠性及效率。而OLAP应用是对用户当前及历史数据进行分析、辅助领导决策,主要通过多维数据的查询、旋转、钻取和切片等关键技术对数据进行分析和报表。
目前,多数企业内部的数据状况是分散的,业务数据往往被存放在缺乏统一设计和管理的异构环境中,不易综合查询访问,而且还有大量的历史数据处于脱机状态,不能在线集中存储查询。数据挖掘在对这些数据进行分析前,必须对这些数据进行不同程度的整合和清理,这是数据挖掘的首要环节,但一般的OLTP系统的数据环境是不具备这种能力的。
因此,合理而科学的数据环境是确保数据挖掘有效和正确实施的基础和关键。它需要支持OLAP数据系统与OLTP数据系统的分离,需要服务于数据挖掘总体目标的数据再组织,需要有单独的数据分析和数据处理环境。数据仓库正是为了构建这种新的分析处理环境而出现的一种数据存储和组织技术产品。
数据仓库技术的引入
数据仓库技术能够满足数据挖掘技术对数据环境的要求。实际上,数据仓库技术所要研究和解决的问题就是从OLTP系统、异构分散的外部数据源、脱机的历史业务数据中获取数据,处理后为数据分析和管理决策提供应用服务。
公认的数据仓库概念是W.H.Inmon在《建立数据仓库》一书中提出的:数据仓库就是面向主题的、集成的、不可更新的(稳定性)随时间不断变化(不同时间)的数据集合,用以支持经营管理中的决策制定过程。
数据仓库中的数据是面向主题的,它与传统数据库中的面向应用相对应。数据仓库的主题是一个在较高层次上将数据归类的标准,每一个主题对应一个宏观的分析领域;数据仓库的集成特性是指在数据进入数据仓库之前,必须经过数据加工和集成,这是建立数据仓库的关键步骤。它能够统一原始数据中的矛盾之处,还能够将原始数据结构从面向应用向面向主题转变;数据仓库的稳定性是指数据仓库反映的是历史数据的内容,而不是日常事务处理产生的数据,数据经加工和集成进入数据仓库后是极少或根本不修改的;数据仓库是不同时间的数据集合,它要求数据仓库中的数据保存时限能满足进行决策分析的需要,而且数据仓库中的数据都要标明该数据的时间属性。
需要指出的是,数据仓库中的数据并不是最新的、专有的,而是来源于其它数据库的。数据仓库的建立并不是要取代数据库,它要建立在一个较全面和完善的信息应用的基础上,用于支持高层决策分析,而原有的事务处理数据库在总体数据环境中承担的是日常基础业务的处理任务。数据仓库是数据库技术的一种新的应用,而且到目前为止,数据仓库大部分还是用关系数据库管理系统来管理其中的数据。
与关系数据库不同的是,数据仓库至今并没有严格的数学理论基础,它更偏向于工程。由于数据仓库的这种工程特性,因而在技术上可以根据它的工作过程分为:数据的抽取、数据的存储和管理、数据的展现等关键技术。
◆ 数据的抽取
数据的抽取是数据进入仓库的入口。由于数据仓库是一个独立的数据环境,它需要通过抽取过程将数据从联机事务处理系统、外部数据源、脱机的数据存储介质中导入数据仓库。数据抽取在技术上主要涉及互连、复制、增量、转换、调度和监控等几个方面的处理。在数据抽取方面,未来的技术发展将集中在系统功能集成化方面,以适应数据仓库本身或数据源的变化,使系统更便于管理和维护。
◆ 数据的存储和管理
数据仓库的组织管理方式决定了它有别于传统数据库的特性,也决定了其对外部数据的表现形式。数据仓库管理所涉及的数据量比传统事务处理大得多,且随时间的推移而快速累积。在数据仓库的数据存储和管理中需要解决的是如何管理大量的数据、如何并行处理大量的数据、如何优化查询等。目前,许多数据库厂家提供的技术解决方案是扩展关系型数据库的功能,将普通关系数据库改造成适合担当数据仓库的服务器。
◆数据的展现
在数据展现方面主要的方式有:
查询:实现预定义查询、动态查询、OLAP查询与决策支持智能查询;报表:产生关系数据表格、复杂表格、OLAP表格、报告以及各种综合报表;可视化:用易于理解的点线图、直方图、饼图、网状图、交互式可视化、动态模拟、计算机动画技术表现复杂数据及其相互关系;统计:进行平均值、最大值、最小值、期望、方差、汇总、排序等各种统计分析;挖掘:利用数据挖掘等方法,从数据中得到关于数据关系和模式的知识。
数据挖掘与数据仓库融合发展
数据挖掘和数据仓库的协同工作,一方面,可以迎合和简化数据挖掘过程中的重要步骤,提高数据挖掘的效率和能力,确保数据挖掘中数据来源的广泛性和完整性。另一方面,数据挖掘技术已经成为数据仓库应用中极为重要和相对独立的方面和工具。
数据挖掘和数据仓库是融合与互动发展的,其学术研究价值和应用研究前景将是令人振奋的。它是数据挖掘专家、数据仓库技术人员和行业专家共同努力的成果,更是广大渴望从数据库“奴隶”到数据库“主人”转变的企业最终用户的通途。