数据挖掘导论
相关的参考文献
[1] M. Berry and G. Linoff, Data Mining Techniques, John Wiley, 1997
[2] William S. Cleveland, The Elements of Graphing Data, revised, Hobart Press, 1994
[3] Howard Wainer, Visual Revelations, Copernicus, 1997
[4] , Lee, Reed, and Van Roy, Solving Pattern Recognition Problem , Prentice-Hall, 1998
[5] U. Fayyad, Piatetsky-Shapiro, Smyth, and Uthurusamy, Advances in Knowledge
Discovery and Data Mining, MIT Press, 1996
[6] Dorian Pyle, Data Preparation for Data Mining, Morgan Kaufmann, 1999
[7] C. Westphal and T. Blaxton, Data Mining Solutions, John Wiley, 1998
[8] Vasant Dhar and Roger Stein, Seven Methods for Transforming Corporate Data into
Business Intelligence, Prentice Hall 1997
[9] Brieman, Freidman, Olshen, and Stone, Classification and Regression Trees,
Wadsworth, 1984
[10] J. R. Quinlan, : Programs for Machine Learning, Morgan Kaufmann, 1992
目录
介绍
什么是数据挖掘
数据挖掘:不能干什么
数据挖掘和数据仓库
数据挖掘和在线分析处理(OLAP)
数据挖掘,机器学习和统计
软硬件发展对数据挖掘的影响
数据挖掘应用
成功的数据挖掘
描述型数据挖掘
统计和可视化
聚集(分群)
关联分析
预言型数据挖掘
你需要选择的
一些术语
分类(Classification)
回归(Regression)
时间序列(Time series)
数据挖掘模型和算法
神经网络(Neural networks)
决策树(Decision trees)
数据挖掘过程
介绍
什么是数据挖掘
当今数据库的容量已经达到上万亿的水平(T)--- 1,000,000,000,000个字节。在这些大量数据的背后隐藏了很多具有决策意义的信息,那么怎么得到这些“知识”呢?也就是怎样通过一颗颗的树木了解到整个森林的情况?
计算机科学对这个问题给出的最新回答就是:数据挖掘,在“数据矿山”中找到蕴藏的“知识金块”,帮助企业减少不必要投资的同时提高资金回报。数据挖掘给企业带来的潜在的投资回报几乎是无止境的。世界范围内具有创新性的公司都开始采用数据挖掘技术来判断哪些是他们的最有价值客户、重新制定他们的产品推广策略(把产品推广给最需要他们的人),以用最小的花费得到最好的销售。
数据挖掘是一个利用各种分析工具在海量数据中发现模型和数据间关系的过程,这些模型和关系可以用来做出预测。
数据挖掘的第一步是描述数据 --- 计算统计变量(比如平均值、均方差等),再用图表或图片直观的表示出来,进而可以看出一些变量之间的相关性(比如有一些值经常同时出现)。选择正确的数据源对整个数据挖掘项目的成败至关重要,在后面数据挖掘的步骤中我们会着重强调这一点。
单单是数据描述并不能为人们制订行动计划提供足够的依据,你必须用你的这些历史数据建立一个预言模型,然后再用另外一些数据对这个模型进行测试。一个好的模型没必要与数据库中的数据100%的相符(城市交通图也不是完全的实际交通线路的等比缩小),但他在你做决策时是一个很好的指南和依据。
最后一步是验证你的模型。比如你用所有对你的产品推广计划做出回应的人的数据库做了一个模型,来预测什么样的人会对你的产品感兴趣。你能在得到这个模型后就直接利用这个模型做出决策或采取行动吗?还是更稳妥一点先对一小部分客户做一个实际的测试,然后再决定?
数据挖掘:不能干什么
数据挖掘是一个工具,而不是有魔力的权杖。它不会坐在你的数据库上一直监视着数据库,然后当他发现有意义的模型时给你发一封电子邮件。他仍然需要了解你的业务,理解你的数据,弄清分析方法。数据挖掘只是帮助商业人士更深入、更容易的分析数据 --- 他无法告诉你某个模型对你的企业的实际价值。而且数据挖掘中得到的模型必须要在现实生活中进行验证。
注意数据挖掘中得到的预言模型并不会告诉你一个人为什么会做一件事、采取某个行动,他只会告诉你他会这样做,为什么要人去考虑。比如,数据挖掘可能会告诉你,如果这个人是男的、年收入在5万到6万之间,那么他可能会买你的商品/服务。你可能会利用这条规则,集中向这类人推销你的商品而从中获益,但是数据挖掘工具不会告诉你他们为什么会买你的东西,也不能保证所有符合这条规则的人都会买。
为了保证数据挖掘结果的价值,你自己必须了解你的数据,这一点至关重要。输入数据库中的异常数据、不相关的字段或互相冲突的字段(比如年龄和生日不一致)、数据的编码方式等都会对数据挖掘输出结果的质量产生影响。虽然一些算法自身会对上面提到的这些问题做一些考虑,但让算法自己做所有这些决定是不明智的。
数据挖掘不会在缺乏指导的情况下自动的发现模型。你不能这样对数据挖掘工具说,“帮我提高直接邮件推销的响应率”,你应该让数据挖掘工具找(1)对你的推销回应的人,或(2)即回应又做了大量订单的人的特征。在数据挖掘中寻找这两种模型是很不相同的。
虽然数据挖掘工具使你不必再掌握艰深的统计分析技术,但你仍然需要知道你所选用的数据挖掘工具是如何工作的,他所采用的算法的原理是什么。你所选用的技术和优化方法会对你的模型的准确度和生成速度产生很大影响。
数据挖掘永远不会替代有经验的商业分析师或管理人员所起的作用,他只是提供一个强大的工具。每个成熟的、了解市场的公司都已经具有一些重要的、能产生高回报的模型,这些模型可能是管理人员花了很长时间,作了很多调查,甚至是经过很多失误之后得来的。数据挖掘工具要做的就是使这些模型得到的更容易,更方便,而且有根据。
数据挖掘和数据仓库
大部分情况下,数据挖掘都要先把数据从数据仓库中拿到数据挖掘库或数据集市中(见图1)。从数据仓库中直接得到进行数据挖掘的数据有许多好处。就如我们后面会讲到的,数据仓库的数据清理和数据挖掘的数据清理差不多,如果数据在导入数据仓库时已经清理过,那很可能在做数据挖掘时就没必要在清理一次了,而且所有的数据不一致的问题都已经被你解决了。
数据挖掘库可能是你的数据仓库的一个逻辑上的子集,而不一定非得是物理上单独的数据库。但如果你的数据仓库的计算资源已经很紧张,那你最好还是建立一个单独的数据挖掘库。
当然为了数据挖掘你也不必非得建立一个数据仓库,数据仓库不是必需的。建立一个巨大的数据仓库,把各个不同源的数据统一在一起,解决所有的数据冲突问题,然后把所有的数据导到一个数据仓库内,是一项巨大的工程,可能要用几年的时间花上百万的钱才能完成。只是为了数据挖掘,你可以把一个或几个事务数据库导到一个只读的数据库中,就把它当作数据集市,然后在他上面进行数据挖掘。
数据挖掘和在线分析处理(OLAP)
一个经常问的问题是,数据挖掘和OLAP到底有何不同。下面将会解释,他们是完全不同的工具,基于的技术也大相径庭。
OLAP是决策支持领域的一部分。传统的查询和报表工具是告诉你数据库中都有什么(what happened),OLAP则更进一步告诉你下一步会怎么样(What next)、和如果我采取这样的措施又会怎么样(What if)。用户首先建立一个假设,然后用OLAP检索数据库来验证这个假设是否正确。比如,一个分析师想找到什么原因导致了贷款拖欠,他可能先做一个初始的假定,认为低收入的人信用度也低,然后用OLAP来验证他这个假设。如果这个假设没有被证实,他可能去察看那些高负债的账户,如果还不行,他也许要把收入和负债一起考虑,一直进行下去,直到找到他想要的结果或放弃。
也就是说,OLAP分析师是建立一系列的假设,然后通过OLAP来证实或推翻这些假设来最终得到自己的结论。OLAP分析过程在本质上是一个演绎推理的过程。但是如果分析的变量达到几十或上百个,那么再用OLAP手动分析验证这些假设将是一件非常困难和痛苦的事情。
数据挖掘与OLAP不同的地方是,数据挖掘不是用于验证某个假定的模式(模型)的正确性,而是在数据库中自己寻找模型。他在本质上是一个归纳的过程。比如,一个用数据挖掘工具的分析师想找到引起贷款拖欠的风险因素。数据挖掘工具可能帮他找到高负债和低收入是引起这个问题的因素,甚至还可能发现一些分析师从来没有想过或试过的其他因素,比如年龄。
数据挖掘和OLAP具有一定的互补性。在利用数据挖掘出来的结论采取行动之前,你也许要验证一下如果采取这样的行动会给公司带来什么样的影响,那么OLAP工具能回答你的这些问题。
而且在知识发现的早期阶段,OLAP工具还有其他一些用途。可以帮你探索数据,找到哪些是对一个问题比较重要的变量,发现异常数据和互相影响的变量。这都能帮你更好的理解你的数据,加快知识发现的过程。
数据挖掘,机器学习和统计
数据挖掘利用了人工智能(AI)和统计分析的进步所带来的好处。这两门学科都致力于模式发现和预测。
数据挖掘不是为了替代传统的统计分析技术。相反,他是统计分析方法学的延伸和扩展。大多数的统计分析技术都基于完善的数学理论和高超的技巧,预测的准确度还是令人满意的,但对使用者的要求很高。而随着计算机计算能力的不断增强,我们有可能利用计算机强大的计算能力只通过相对简单和固定的方法完成同样的功能。
一些新兴的技术同样在知识发现领域取得了很好的效果,如神经元网络和决策树,在足够多的数据和计算能力下,他们几乎不用人的关照自动就能完成许多有价值的功能。
数据挖掘就是利用了统计和人工智能技术的应用程序,他把这些高深复杂的技术封装起来,使人们不用自己掌握这些技术也能完成同样的功能,并且更专注于自己所要解决的问题。
软硬件发展对数据挖掘的影响
使数据挖掘这件事情成为可能的关键一点是计算机性能价格比的巨大进步。在过去的几年里磁盘存储器的价格几乎降低了99%,这在很大程度上改变了企业界对数据收集和存储的态度。如果每兆的价格是¥10,那存放1TB的价格是¥10,000,000,但当每兆的价格降为1毛钱时,存储同样的数据只有¥100,000!
计算机计算能力价格的降低同样非常显著。每一代芯片的诞生都会把CPU的计算能力提高一大步。内存RAM也同样降价迅速,几年之内每兆内存的价格由几百块钱降到现在只要几块钱。通常PC都有64M内存,工作站达到了256M,拥有上G内存的服务器已经不是什么新鲜事了。
在单个CPU计算能力大幅提升的同时,基于多个CPU的并行系统也取得了很大的进步。目前几乎所有的服务器都支持多个CPU,这些SMP服务器簇甚至能让成百上千个CPU同时工作。
基于并行系统的数据库管理系统也给数据挖掘技术的应用带来了便利。如果你有一个庞大而复杂的数据挖掘问题要求通过访问数据库取得数据,那么效率最高的办法就是利用一个本地的并行数据库。
所有这些都为数据挖掘的实施扫清了道路,随着时间的延续,我们相信这条道路会越来越平坦。
数据挖掘应用
由于数据挖掘带来的显著的经济效益,使数据挖掘越来越普及。他不仅能用于控制成本,也能给企业带来效益。
很多企业都在利用数据挖掘技术帮助管理客户生命周期的各个阶段,包括争取新的客户、在已有客户的身上赚更多的钱、和保持住好的客户。如果能够确定好的客户的特点,那么就能提供为客户提供针对性的服务。比如,已经发现了购买某一商品的客户的特征,那么就可以向那些具有这些特征但还没有购买此商品的客户推销这个商品;找到流失的客户的特征就可以,在那些具有相似特征的客户还未流失之前进行针对性的弥补,因为保留一个客户要比争取一个客户便宜的多。
数据挖掘可以应用在各个不同的领域。电讯公司和信用卡公司是用数据挖掘检测欺诈行为的先行者。保险公司和证券公司也开始采用数据挖掘来减少欺诈。医疗应用是另一个前景广阔的产业:数据挖掘可以用来预测外科手术、医疗试验和药物治疗的效果。零销商更多的使用数据挖掘来决定每种商品在不同地点的库存,通过数据挖掘更灵活的使用促销和优惠卷手段。制药公司通过挖掘巨大的化学物质和基因对疾病的影响的数据库来判断哪些物质可能对治疗某种疾病产生效果。
成功的数据挖掘
有保证数据挖掘成功的两个关键要素。一是准确的定义你所要解决的问题,定位准确的问题通常会带来最好的回报。二是使用正确的数据,选定了你所能得到的数据,也许还要从外部购买数据,你需要对这些数据做有效的数据整合和转换。
数据挖掘入门 二 数据挖掘入门 三
数据挖掘过程
在实施数据挖掘之前,先制定采取什么样的步骤,每一步都做什么,达到什么样的目标是必要的,有了好的计划才能保证数据挖掘有条不紊的实施并取得成功。很多软件供应商和数据挖掘顾问公司投提供了一些数据挖掘过程模型,来指导他们的用户一步步的进行数据挖掘工作。比如SPSS的5A--评估(Assess),访问(Access),分析(Analyze),行动(Act),自动化(Automate),和SAS的SEMMA--采样(Sample),探索(Explore),修正(Modify),建模(Model),评估(Assess)。
最近,一些软件供应商和用户组织成立了行业协会,包括NCR Systems Engineering Copenhagen(丹麦)Daimler-Benz AG(德国)SPSS/Internal Solutions Ltd.(英国),和OHRA Verzekeringen en Bank Grep (荷兰)。这个组织的目的就是建立跨行业数据挖掘过程标准(CRISP-DM),在1999年9月的时候CRISP-DM仍在建立之中。
我们下面详细讨论Two Crows公司的数据挖掘过程模型,他与正在建立的CRISP-DM有许多相似之处。
数据挖掘过程模型
虽然我们把各个步骤按顺序排列,但要注意数据挖掘过程并不是线性的—要取得好的结果就要不断反复重复这些步骤。比如在“分析数据”时你可能觉得在“建立数据挖掘数据库”时作的不够好,要往里面添加一些新的数据。
这些基本数据挖掘步骤包括:
1. 定义商业问题
2. 建立数据挖掘模型
3. 分析数据
4. 准备数据
5. 建立模型
6. 评价模型
7. 实施
1. 定义商业问题。在开始知识发现之前最先的同时也是最重要的要求就是了解的你的数据和业务问题。如果事先没有这种了解,没有任何算法,不管他有多么复杂玄妙,能够为你提供有价值的结果,即使有也难以使人信赖他。缺少了这些背景知识,你就没办法明确定义要解决的问题,不能为挖掘准备数据,也很难正确的解释得到的结果。要想充分发挥数据挖掘的价值,必须要对你的目标有一个清晰明确的定义,即决定到底想干什么。比如你说你想提高直接邮件推销的用户回应时,你想做的可能是“提高用户响应率”,也可能是“提高一次用户回应的价值”,要解决这两个问题而建立的模型几乎是完全不同的,你必须做出决定。有效的问题定义还应该包含一个对你的知识发现项目得到结果进行衡量的标准。当然还应该有整个项目预算和理性的解释。
2. 建立数据挖掘库。连同下面的两个步骤,这三步构成了数据预处理的核心。这三步和在一起比其他所有的步骤加在一起所花得时间和精力还多。一旦你从数据挖掘的结果中学到一些什么之后,你很可能要修改数据以得到更好得结果,因此就需要把数据准备和数据挖掘不断的反复进行。数据准备工作大概要花去整个数据挖掘项目的50%-90%的时间和精力。
应该把要挖掘的数据都收集到一个数据库中。注意这并不是说一定要使用一个数据库管理系统。根据要挖掘的数据量的大小、数据的复杂程度、使用方式的不同,有时一个简单的平面文件或电子表格就足够了。
一般来说,直接在公司的数据仓库上进行数据挖掘是不合适的。你最好建立一个独立的数据集。数据挖掘会使你成为数据仓库非常活跃的用户,这可能会带来一些资源申请上的问题。你需要经常把许多表连接在一起,访问数据仓库的细节数据。一个简单的试验在数据仓库内都要很多步才能完成。
大部分情况下你肯定需要修改要挖掘的数据。而且还会遇到把企业外部的数据拿到数据仓库内和在原有的表中增加新的字段的情况。其他的数据挖掘用户可能也要对数据仓库进行与您相似或完全不同的修改。而对数据仓库管理员来说,这恐怕是他最不愿意遇到的事情。
需要建立独立的数据挖掘库的另一个理由是,数据仓库可能不支持你要对数据进行各种复杂分析所需的数据结构。这包括对数据进行统计查询,多维分析,和各种复杂的图表和可视化。
最后,你可能希望把这些要挖掘的数据存贮在与公司的数据仓库在物理设计上不同的DBMS上。人们越来越倾向于使用DBMS本身很好的支持数据挖掘的数据库程序,这样能使数据挖掘工作进行的更容易一些。当然如果你的数据仓库允许你建立一个在逻辑上独立的数据库并且在计算资源上也足够的话,那么在他上面进行数据挖掘也是可以的。
可以把建立数据挖掘库分成下面几个部分:
a. 数据收集
b. 数据描述
c. 选择
d. 数据质量评估和数据清理
e. 合并与整合
f. 构建元数据
g. 加载数据挖掘库
h. 维护数据挖掘库
注意这些步骤并不需要一定要按步骤执行,而应该按需要进行。比如你可能在收集数据时就开始构建元数据,并随着工作的进行不断的对其进行修改。在数据整合和数据质量评估过程中了解到得东西也有可能是你修改最初的数据选择。
a. 数据收集。确定要挖掘的数据源。可能一些外部的数据也是必须的,需要在公共数据库中获取(人口统计或天气数据)或向数据拥有者购买(比如信用卡使用数据)。
用以一个数据搜集报告把所需的各种不同的数据源的属性列出来。此报告至少应包含如下的内容:
数据源(内部数据库或外部提供者)
拥有者
负责维护此数据的人/组织
DBA
费用(如果需要购买)
存储方式(如:Oracle数据库、MSAM文件等)
表、字段、记录的数目
字节数
物理存储方式(CD-ROM、磁带、服务器等)
安全需求
使用上的限制
隐私上的需求
注意一旦应用了在安全和隐私上有特殊限制的数据,那么你的数据挖掘库在安全和隐私上也就继承了同样的限制。比如许多欧洲的数据在隐私上的限制要比美国严格的多。
b. 数据描述。描述每个文件和数据库表的内容。数据描述报告中应包含如下内容:
字段/列的数目
字段是空(缺值)的数目/百分比
字段的名字
对每个字段
数据类型
定义
描述
源
计量单位
所有不同值的个数
值的列表
值的范围
空值的百分比
收集信息(比如:怎么得到的,在哪,什么条件下)
时间频度(Timeframe)(每天,每周,还是每月)
特别时间数据(比如:每个周一或每个周三)
主键/外键关系
c. 选择。接下来就要选择用于数据挖掘的数据(源数据的子集)。这与对数据进行采样和选择预测变量是不同的,这里只是粗略的把一些冗余或无关的数据除去,或由于资源的限制、费用的限制、数据使用的限制、和质量问题而必须做出的选择。
d. 数据质量评估和数据清理。“龙生龙,凤生凤”对数据挖掘也是非常适用的,要想得到好的模型必须用好的数据。数据质量评估就是要确定数据的哪些性质会最终影响模型的质量。你不仅要保证数据值的正确性和一致性,还要保证这些值是按同样的方法记录的同一件事情。
由各种各样的数据质量问题。数据域中可能包含了不正确的值。比如,身份证号码被粗心的数据录入人员录入了年龄。即使每个单个域中包含的数据都是正确的,但这些域组合起来时可能就出现了错误的记录,如男性怀孕。有时域中的值为空。当从多个不同的源整合数据时一定要注意不同源之间数据的一致性。
缺值是一个非常有害的问题。如果只要有一个数据域缺值就把这个记录删除掉,那么最后可能得到一个很小的数据库,同时你得到的这个数据库很可能已经丢失了实际数据中蕴含的一些信息,因为你已经改变了原数据的组成。缺值这件事本身可能就是非常有意义的,比如也许只有富有的顾客才经常忽略“收入”这一项。你可以增加一个新的变量来标识这些缺值的记录,然后用它建立一个模型,然后与按其他方法建立的模型进行比较,看哪个准确度更高一些。
另一种方法是为缺失的值计算一个替代值。计算替代值的常用方法包括使用形式值(为名词变量),中间值(为可排序变量),平均值(为连续变量)。还有一个不是很常用的方法是按照数据库中值的分布规律为缺值的字段添值。比如如果数据库中包含40%男性和60%女性,那么在为那些性别子段缺失的记录添值时也按这个比例随机赋值。还有一种方法是为这个缺值的字段用数据挖掘技术建立一个预测模型,然后按照这个模型的预测结果添值,这种方法效果应该最好,当然也最花时间。
承认生活并不是十全十美是必要的,数据挖掘也是一样,你也不可能解决所有遇到的问题,只能做得尽量好一点。检查和修正数据质量问题是一项非常耗费时间和金钱的工作,对解决不了的问题,通常你只能采取折衷的办法,先用现有的数据建立一个模型,把问题放到将来去解决。
e. 合并与整合。如果幸运的话,你需要的所有数据都在同一个数据库中(比如数据仓库),但大部分情况下这些数据是分布在不同的数据库中。数据可能分布在公司不同的部门、不同的应用中,甚至在公司外(人口数据)。
数据合并与整合把来自不同数据源的数据合并到同一个数据挖掘库中,并且要使那些本来存在冲突和不一致的数据一致化。不恰当的一致化是数据质量问题的一个主要来源。不同的数据库间在数据定义和使用上通常都存在巨大的差异。有些不一致问题是容易解决的,如同一客户的不同住址问题。然而有些则非常棘手。例如同一个客户有不同的名字—甚至更遭的情况—多个不同的客户标识号码。同一个名字被用在不同的数据项上(同名异意),或同一个数据项用了不同的名字(同意不同名)。还有单位上的不统一。比如人民币和港元之间不能不做换算就直接加减。
f. 构建元数据。数据收集报告和数据描述报告是建立元数据的基础。本质上,这是一个描述数据库的数据库。他用于建立实际的数据库和为分析数据和建立模型提供辅助信息。
g. 加载数据挖掘库。大多数情况下,用于挖掘的数据应该放到他自己独立的数据库中。如果数据量大并且复杂,那么他通常是一个RDMS,反之只是一个简单的平面文件即可。经过前面所有的搜集、整理之后,现在开始把这些数据实际的加载过来了。依赖于所涉及的DBMS和操作系统,和数据库设计的复杂程度,有时这一步也可能变得很复杂,需要靠专家的帮助来完成。
h. 维护数据挖掘库。挖掘库一旦建好,就需要对他进行维护。需要定期备份;监视他的性能;不时的增加存储空间或提高性能。对存放在DBMS内的复杂的挖掘库来说,维护他需要计算机专业人员来完成。
3. 分析数据。请察看“描述型数据挖掘”以获得更详细的关于可视化、连结分析,及其他数据分析方法。分析的目的是找到对预测输出影响最大的数据字段,和决定是否需要定义导出字段。
如果数据集包含成百上千的字段,那么浏览分析这些数据将是一件非常耗时和累人的事情,这时你需要选择一个具有好的界面和功能强大的工具软件来协助你完成这些事情。
4. 准备数据。这是建立模型之前的最后一步数据准备工作。可以把此步骤划分成4个部分:
a. 选择变量
b. 选择记录
c. 创建新变量
d. 转换变量
a. 选择变量。理想情况下,你可以选择你所有的全部变量,把他们输入到数据挖掘工具中,让他来帮你选择哪些是最好的预测变量。实际上这样做并不是很好,一方面是由于随着变量个数的增加,模型的建立时间也随之上升;另一方面盲目的把所有的变量都加进去会导致建立错误的模型。比如,建立预测模型的一个常见错误就是把一个依赖于目标变量的变量(由目标变量导出)作为预测变量,像用生日来“预测”年龄。
在原理上说,一些数据挖掘算法自动忽略不相关的变量、自动计算相关的(协)变量,在实际应用中完全依赖这些工具是不明智的,毕竟最了解你的数据的还是你自己。利用你的领域知识,你会做出大部分正确的选择。例如,用身份证号或人名做预测变量要么不会有任何用处,要么甚至降低了其他重要变量的影响力。
b. 选择记录。与选择变量类似,你可能也想用你所有的数据行来建立模型,然而如果你的数据量确实非常巨大的话,要么要花费很长的时间来建立这个模型,要么买一台计算能力非常强大的机器。
因此,如果数据量特别大,进行抽样就是一个很好的主意。如果做的足够仔细,保证抽样是按真正的随机来进行的,采样对大部分商业问题来说都不会丢失信息。你可以用所有的数据建立一个模型;你还可以用采样的方法根据不同得采样方法建立几个模型,然后评价这几个模型选择一个最好的。我们认为后面这种方法得到的方法更准确、更健壮。
你可能选择数据中明显的异常数据删除掉。然而在某些情况下,这些看来异常的数据可能包含了你要建立模型的重要信息。基于你对问题的理解方式的不同,通常可以把这些异常忽略掉。比如可以把异常认为是人为的录入错误。
有时也需要向数据中添加一些新的数据(如,那些没有做出购买得客户)。
c. 创建新变量。很多情况下需要从原始数据中衍生一些新的变量作为预测变量。比如,用负债占收入百分比来预测信用风险比直接用负债和收入做预测变量更准确一些,也更容易理解一些。很多变量如果组合起来(加、减、比率等)会比这些变量自身影响力更大。一些变量如果扩大它的范围也会成为一个非常好的预测变量,比如用一段时间内收入变化情况代替一个单一的收入数据。
d. 转换变量。你所选择的算法和工具决定了都要对数据做哪些转换工作。如神经网络要求所有的变量都在0-1之间,因此在这些数据被提交到算法之前就必须先对不在[0,1]内的变量进行映射。同样一些决策树算法不接受数值型变量作为输入,在使用他们之前也要把这些数值映射到“高、中、低”等。当然你的转换方式也在一定程度上影响了模型的准确度。
5. 建立模型。对建立模型来说要记住的最重要的事是它是一个反复的过程。你需要仔细考察不同的模型以判断哪个模型对你的商业问题最有用。你在寻找好的模型的过程中学到的的东西会启发你修改你的数据,甚至改变最初对问题的定义。
一旦决定了预测的类型之后(分类还是回归),就需要为这个预测选择模型的类型。可能是一棵决策树、神经网络、甚至传统的数学统计。选择什么样的模型决定了你需对数据做哪些预处理工作。如神经网络需要做数据转换,有些数据挖掘工具可能对输入数据的格式有特定的限制,等。一旦所有的数据准备好之后,就可以开始训练你的模型了。
为了保证得到的模型具有较好的精确度和健壮性,需要一个定义完善的训练—验证协议。有时也称此协议为带指导的学习。他的主要思想就是先用一部分数据建立模型,然后再用剩下的数据来测试和验证这个得到的模型。有时还有第三个数据集,称为验证集,因为测试集可能受模型的特性的影响,这时需要一个独立的数据集来验证模型的准确性。
训练和测试数据挖掘模型需要把数据至少分成两个部分:一个用于模型训练,另一个用于模型测试。如果不使用不同的训练和测试集,那么模型的准确度就很难使人信服。用训练集把模型建立出来之后,就可以先在测试集数据上先试验一把,此模型在测试集上的预测准确度就是一个很好的指导数字,它说明如果将来与训练集和测试集类似的数据用此模型预测时,正确的百分比会有多大。这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。
简单验证。最基本的测试方法是被称为简单验证的方法。做法是从原始数据中拿出一定百分比的数据作为测试数据,这个百分比大概在5%到33%之间。注意在把数据库分成几部分时,一定要保证选择的随机性,这样才能使分开的各部分数据的性质是一致的。
先用数据库的主体把模型建立起来,然后用此模型来预测测试集中的数据。出现错误的预测与预测总数之间的比,称为错误率。正确的预测与总数的比,是准确率(准确率=1 - 错误率)。对回归模型来说,可以用方差来描述准确的程度。
在一次模型的建立过程中,即使这种最简单的验证就要执行几十次。例如在训练神经网络时,有时每一个训练周期就要求在测试集上运行一次,不断的训练测试,直到在测试集上的准确率不再提高为止。
交叉验证。如果数据不是很多(比如只有几千条),那么你可能承受不了再把一部分数据拿到一边不用,单用来做简单验证。交叉验证提供了一种让你使用全部数据的方法。首先把原始数据随机平分成两份,然后用一部分做训练集另一部分做测试集计算错误率,做完之后把两部分数据交换再计算一次,得到另一个错误率,最后再用所有的数据建立一个模型,把上面得到的两个错误率进行平均作为最后用所有数据建立的模型的错误率。
更通用的算法是n-维交叉验证。先把数据随机分成不相交的n份。比如,如果把数据分成10份,先把第一份拿出来放在一边用作模型测试,把其他9份合在一起来建立模型,然后把这个用90%的数据建立起来的模型用上面放在一边的第一份数据做测试。这个过程对每一份数据都重复进行一次,得到10个不同的错误率。最后把所有数据放在一起建立一个模型,模型的错误率为上面10个错误率的平均。
自举法是另一种评估模型错误率的技术。在数据量很小时尤其适用。与交叉验证一样模型是用所有的数据建立。
依据所得到的模型和你对模型的预期结果,你可能修改参数用同样的算法再建立新的模型,甚至采用其他的算法建立模型。别的方法说不定能提高预测的准确度。当然,没有一种算法或工具适应所有的数据,通常也很难在开始决定那种算法对你所面临的问题来说是最好的,因此很多情况下,需要建立用不同的方法(参数或算法)几个模型,从中选择最好的。
6. 评价和解释。
a. 模型验证。模型建立好之后,必须评价他的结果、解释他的价值。记住从测试集中得到的准确率只对用于建立模型的数据有意义。在实际应用中,随着应用数据的不同,模型的准确率肯定会变化。更重要的是,准确度自身并不一定是选择最好模型的正确评价方法。你需要进一步了解错误的类型和由此带来的相关费用的多少。
无序矩阵。对分类问题来说,无序矩阵是理解结果的非常好的工具。如图9所示,无序矩阵把预测的结果与实际的情况进行对比。它不仅说明了模型预测的准确情况,也把模型究竟在哪里出了问题也展示了出来。下表是一个简单的无序矩阵,其中的列代表数据的实际分类情况,行是预测的结果。在这张表值中,可以看到此模型在总共46个B类数据中成功预测了38个,8个出了问题:2个预测成了A,6个成了C。显然这比简单的说模型总体准确度是82%要更详细的多(123个成功预测除以总共150)。
预测
实际
类别A
类别B
类别C
类别A
45
2
3
类别B
10
38
2
类别C
4
6
40
图9:无序矩阵
在实际应用中,如果每种不同的预测错误所需付出的代价(金钱)也不同的话,那么代价最小的模型(而不一定是错误率最小的模型)就是我们所要选择的。例如,上面的无序矩阵中,如果每个准确的预测会带来¥10的收益,错误的预测A要付出¥5的代价,B是¥10,C是¥20,那么整个模型的纯价值是:
(123*¥10)-(5*¥5)-(12*¥10)-(10*¥20)=¥885
然而考察下面的无序矩阵(图10),虽然准确度降低到79%(118/150),但纯价值却升高了:
(118*¥10)-(22*¥5)-(7*¥10)-(3*¥20)=¥940
预测
实际
类别A
类别B
类别C
类别A
40
12
10
类别B
6
38
1
类别C
2
1
40
图10:另一个无序矩阵
收益表(图11)也是一种描述模型价值的方法。它显示了通过应用模型响应(如直接邮件推销)的变化情况。变化的比率称为lift。例如,如果用随机抽取的方法选择10%的客户响应率是10%,而通过模型选取10%的用户响应率是30%,则lift值为3。
模型解释的另一个重要组成部分是确定模型的价值。一个模型可能看起来很有意义,但要实施它的话很有可能花的钱比赚的钱多。图12是一个描述模型投资回报率(ROI)的图表(这里定义 ROI为利润与开销的比值)。注意图中当选取比例超过80%时,ROI变成了负数,ROI最高是在横坐标为2时。
当然,也可以直接看利润的变化情况(利润为收入与花费的差值),如图13所示:
注意到我们上面的例子中,最大lift在第一个1/10处(10%),最大ROI在第2个1/10(20%),而最大利润在第3、4个1/10处。
理想情况下,应该按照利润表行事,但很多情况下利润表并不能很容易的计算出来。
b. 外部验证。如前面指出的,无论我们用模拟的方法计算出来的模型的准确率有多高,都不能保证此模型在面对现实世界中真实的数据时能取得好的效果。经验证有效的模型并不一定是正确的模型。造成这一点的直接原因就是模型建立中隐含的各种假定。例如,在建立用户购买模式的模型时,可能没有考虑通货膨胀的影响,但实施模型时通货膨胀率突然由3%增加为17%,这显然会对人们的购买意向产生重大影响,因此再用原来的模型来预测客户购买情况必然会出现重大失误。
因此直接在现实世界中测试模型很重要。先在小范围内应用,取得测试数据,觉得满意之后再向大范围推广。
7. 实施。模型建立并经验证之后,可以有两种主要的使用方法。第一种是提供给分析人员做参考,由他通过察看和分析这个模型之后提出行动方案建议。比如可以把模型检测到的聚集、模型中蕴含的规则、或表明模型效果的ROI图表拿给分析人员看。
另一种是把此模型应用到不同的数据集上。模型可以用来标示一个事例的类别,给一项申请打分等。还可以用模型在数据库中选择符合特定要求的记录,以用OLAP工具做进一步的分析。
通常情况下,模型是某个商业过程的组成部分,如风险分析,信用授权,或欺诈检测。在这些情况下,模型一般都合并到应用程序的内部。例如,在抵押贷款应用程序内部可能集成了一个预测模型,来向贷款官员提供一项贷款申请风险大小的建议。或在定购系统中,当预测到库存有可能降低到一个最低限度时自动发出购买订单。
数据挖掘模型通常一次只能处理一个事件或一个事务。每个事务的处理时间和事务到达的速度,决定了模型运行所需的计算能力,和是否要用并行技术来加快速度。比如,贷款申请程序可能PC机上就运行的很好,而用于信用卡欺诈的模型则需要在服务器上用并行算法才能应付每天的大量事务。
当提交一个复杂的应用时,数据挖掘可能只是整个产品的一小部分,虽然可能是最关键的一部分。例如,常常把数据挖掘得到的知识与领域专家的知识结合起来,然后应用到数据库中的数据。在欺诈检测系统中可能既包含了数据挖掘发现的规律,也有人们在实践中早已总结出的规律。
模型监控。在应用了模型之后,当然还要不断监控他的效果。即使你在开始使用这个模型之后觉得他非常成功,也不能放弃监控,因为事物在不断发展变化,很可能过一段时间之后,模型就不再起作用。销售人员都知道,人们的购买方式随着社会的发展而变化。因此随着使用时间的增加,要不断的对模型做重新测试,有时甚者需要重新建立模型。
数据挖掘入门 一 数据挖掘入门 二
数据挖掘过程
在实施数据挖掘之前,先制定采取什么样的步骤,每一步都做什么,达到什么样的目标是必要的,有了好的计划才能保证数据挖掘有条不紊的实施并取得成功。很多软件供应商和数据挖掘顾问公司投提供了一些数据挖掘过程模型,来指导他们的用户一步步的进行数据挖掘工作。比如SPSS的5A--评估(Assess),访问(Access),分析(Analyze),行动(Act),自动化(Automate),和SAS的SEMMA--采样(Sample),探索(Explore),修正(Modify),建模(Model),评估(Assess)。
最近,一些软件供应商和用户组织成立了行业协会,包括NCR Systems Engineering Copenhagen(丹麦)Daimler-Benz AG(德国)SPSS/Internal Solutions Ltd.(英国),和OHRA Verzekeringen en Bank Grep (荷兰)。这个组织的目的就是建立跨行业数据挖掘过程标准(CRISP-DM),在1999年9月的时候CRISP-DM仍在建立之中。
我们下面详细讨论Two Crows公司的数据挖掘过程模型,他与正在建立的CRISP-DM有许多相似之处。
数据挖掘过程模型
虽然我们把各个步骤按顺序排列,但要注意数据挖掘过程并不是线性的—要取得好的结果就要不断反复重复这些步骤。比如在“分析数据”时你可能觉得在“建立数据挖掘数据库”时作的不够好,要往里面添加一些新的数据。
这些基本数据挖掘步骤包括:
1. 定义商业问题
2. 建立数据挖掘模型
3. 分析数据
4. 准备数据
5. 建立模型
6. 评价模型
7. 实施
1. 定义商业问题。在开始知识发现之前最先的同时也是最重要的要求就是了解的你的数据和业务问题。如果事先没有这种了解,没有任何算法,不管他有多么复杂玄妙,能够为你提供有价值的结果,即使有也难以使人信赖他。缺少了这些背景知识,你就没办法明确定义要解决的问题,不能为挖掘准备数据,也很难正确的解释得到的结果。要想充分发挥数据挖掘的价值,必须要对你的目标有一个清晰明确的定义,即决定到底想干什么。比如你说你想提高直接邮件推销的用户回应时,你想做的可能是“提高用户响应率”,也可能是“提高一次用户回应的价值”,要解决这两个问题而建立的模型几乎是完全不同的,你必须做出决定。有效的问题定义还应该包含一个对你的知识发现项目得到结果进行衡量的标准。当然还应该有整个项目预算和理性的解释。
2. 建立数据挖掘库。连同下面的两个步骤,这三步构成了数据预处理的核心。这三步和在一起比其他所有的步骤加在一起所花得时间和精力还多。一旦你从数据挖掘的结果中学到一些什么之后,你很可能要修改数据以得到更好得结果,因此就需要把数据准备和数据挖掘不断的反复进行。数据准备工作大概要花去整个数据挖掘项目的50%-90%的时间和精力。
应该把要挖掘的数据都收集到一个数据库中。注意这并不是说一定要使用一个数据库管理系统。根据要挖掘的数据量的大小、数据的复杂程度、使用方式的不同,有时一个简单的平面文件或电子表格就足够了。
一般来说,直接在公司的数据仓库上进行数据挖掘是不合适的。你最好建立一个独立的数据集。数据挖掘会使你成为数据仓库非常活跃的用户,这可能会带来一些资源申请上的问题。你需要经常把许多表连接在一起,访问数据仓库的细节数据。一个简单的试验在数据仓库内都要很多步才能完成。
大部分情况下你肯定需要修改要挖掘的数据。而且还会遇到把企业外部的数据拿到数据仓库内和在原有的表中增加新的字段的情况。其他的数据挖掘用户可能也要对数据仓库进行与您相似或完全不同的修改。而对数据仓库管理员来说,这恐怕是他最不愿意遇到的事情。
需要建立独立的数据挖掘库的另一个理由是,数据仓库可能不支持你要对数据进行各种复杂分析所需的数据结构。这包括对数据进行统计查询,多维分析,和各种复杂的图表和可视化。
最后,你可能希望把这些要挖掘的数据存贮在与公司的数据仓库在物理设计上不同的DBMS上。人们越来越倾向于使用DBMS本身很好的支持数据挖掘的数据库程序,这样能使数据挖掘工作进行的更容易一些。当然如果你的数据仓库允许你建立一个在逻辑上独立的数据库并且在计算资源上也足够的话,那么在他上面进行数据挖掘也是可以的。
可以把建立数据挖掘库分成下面几个部分:
a. 数据收集
b. 数据描述
c. 选择
d. 数据质量评估和数据清理
e. 合并与整合
f. 构建元数据
g. 加载数据挖掘库
h. 维护数据挖掘库
注意这些步骤并不需要一定要按步骤执行,而应该按需要进行。比如你可能在收集数据时就开始构建元数据,并随着工作的进行不断的对其进行修改。在数据整合和数据质量评估过程中了解到得东西也有可能是你修改最初的数据选择。
a. 数据收集。确定要挖掘的数据源。可能一些外部的数据也是必须的,需要在公共数据库中获取(人口统计或天气数据)或向数据拥有者购买(比如信用卡使用数据)。
用以一个数据搜集报告把所需的各种不同的数据源的属性列出来。此报告至少应包含如下的内容:
数据源(内部数据库或外部提供者)
拥有者
负责维护此数据的人/组织
DBA
费用(如果需要购买)
存储方式(如:Oracle数据库、MSAM文件等)
表、字段、记录的数目
字节数
物理存储方式(CD-ROM、磁带、服务器等)
安全需求
使用上的限制
隐私上的需求
注意一旦应用了在安全和隐私上有特殊限制的数据,那么你的数据挖掘库在安全和隐私上也就继承了同样的限制。比如许多欧洲的数据在隐私上的限制要比美国严格的多。
b. 数据描述。描述每个文件和数据库表的内容。数据描述报告中应包含如下内容:
字段/列的数目
字段是空(缺值)的数目/百分比
字段的名字
对每个字段
数据类型
定义
描述
源
计量单位
所有不同值的个数
值的列表
值的范围
空值的百分比
收集信息(比如:怎么得到的,在哪,什么条件下)
时间频度(Timeframe)(每天,每周,还是每月)
特别时间数据(比如:每个周一或每个周三)
主键/外键关系
c. 选择。接下来就要选择用于数据挖掘的数据(源数据的子集)。这与对数据进行采样和选择预测变量是不同的,这里只是粗略的把一些冗余或无关的数据除去,或由于资源的限制、费用的限制、数据使用的限制、和质量问题而必须做出的选择。
d. 数据质量评估和数据清理。“龙生龙,凤生凤”对数据挖掘也是非常适用的,要想得到好的模型必须用好的数据。数据质量评估就是要确定数据的哪些性质会最终影响模型的质量。你不仅要保证数据值的正确性和一致性,还要保证这些值是按同样的方法记录的同一件事情。
由各种各样的数据质量问题。数据域中可能包含了不正确的值。比如,身份证号码被粗心的数据录入人员录入了年龄。即使每个单个域中包含的数据都是正确的,但这些域组合起来时可能就出现了错误的记录,如男性怀孕。有时域中的值为空。当从多个不同的源整合数据时一定要注意不同源之间数据的一致性。
缺值是一个非常有害的问题。如果只要有一个数据域缺值就把这个记录删除掉,那么最后可能得到一个很小的数据库,同时你得到的这个数据库很可能已经丢失了实际数据中蕴含的一些信息,因为你已经改变了原数据的组成。缺值这件事本身可能就是非常有意义的,比如也许只有富有的顾客才经常忽略“收入”这一项。你可以增加一个新的变量来标识这些缺值的记录,然后用它建立一个模型,然后与按其他方法建立的模型进行比较,看哪个准确度更高一些。
另一种方法是为缺失的值计算一个替代值。计算替代值的常用方法包括使用形式值(为名词变量),中间值(为可排序变量),平均值(为连续变量)。还有一个不是很常用的方法是按照数据库中值的分布规律为缺值的字段添值。比如如果数据库中包含40%男性和60%女性,那么在为那些性别子段缺失的记录添值时也按这个比例随机赋值。还有一种方法是为这个缺值的字段用数据挖掘技术建立一个预测模型,然后按照这个模型的预测结果添值,这种方法效果应该最好,当然也最花时间。
承认生活并不是十全十美是必要的,数据挖掘也是一样,你也不可能解决所有遇到的问题,只能做得尽量好一点。检查和修正数据质量问题是一项非常耗费时间和金钱的工作,对解决不了的问题,通常你只能采取折衷的办法,先用现有的数据建立一个模型,把问题放到将来去解决。
e. 合并与整合。如果幸运的话,你需要的所有数据都在同一个数据库中(比如数据仓库),但大部分情况下这些数据是分布在不同的数据库中。数据可能分布在公司不同的部门、不同的应用中,甚至在公司外(人口数据)。
数据合并与整合把来自不同数据源的数据合并到同一个数据挖掘库中,并且要使那些本来存在冲突和不一致的数据一致化。不恰当的一致化是数据质量问题的一个主要来源。不同的数据库间在数据定义和使用上通常都存在巨大的差异。有些不一致问题是容易解决的,如同一客户的不同住址问题。然而有些则非常棘手。例如同一个客户有不同的名字—甚至更遭的情况—多个不同的客户标识号码。同一个名字被用在不同的数据项上(同名异意),或同一个数据项用了不同的名字(同意不同名)。还有单位上的不统一。比如人民币和港元之间不能不做换算就直接加减。
f. 构建元数据。数据收集报告和数据描述报告是建立元数据的基础。本质上,这是一个描述数据库的数据库。他用于建立实际的数据库和为分析数据和建立模型提供辅助信息。
g. 加载数据挖掘库。大多数情况下,用于挖掘的数据应该放到他自己独立的数据库中。如果数据量大并且复杂,那么他通常是一个RDMS,反之只是一个简单的平面文件即可。经过前面所有的搜集、整理之后,现在开始把这些数据实际的加载过来了。依赖于所涉及的DBMS和操作系统,和数据库设计的复杂程度,有时这一步也可能变得很复杂,需要靠专家的帮助来完成。
h. 维护数据挖掘库。挖掘库一旦建好,就需要对他进行维护。需要定期备份;监视他的性能;不时的增加存储空间或提高性能。对存放在DBMS内的复杂的挖掘库来说,维护他需要计算机专业人员来完成。
3. 分析数据。请察看“描述型数据挖掘”以获得更详细的关于可视化、连结分析,及其他数据分析方法。分析的目的是找到对预测输出影响最大的数据字段,和决定是否需要定义导出字段。
如果数据集包含成百上千的字段,那么浏览分析这些数据将是一件非常耗时和累人的事情,这时你需要选择一个具有好的界面和功能强大的工具软件来协助你完成这些事情。
4. 准备数据。这是建立模型之前的最后一步数据准备工作。可以把此步骤划分成4个部分:
a. 选择变量
b. 选择记录
c. 创建新变量
d. 转换变量
a. 选择变量。理想情况下,你可以选择你所有的全部变量,把他们输入到数据挖掘工具中,让他来帮你选择哪些是最好的预测变量。实际上这样做并不是很好,一方面是由于随着变量个数的增加,模型的建立时间也随之上升;另一方面盲目的把所有的变量都加进去会导致建立错误的模型。比如,建立预测模型的一个常见错误就是把一个依赖于目标变量的变量(由目标变量导出)作为预测变量,像用生日来“预测”年龄。
在原理上说,一些数据挖掘算法自动忽略不相关的变量、自动计算相关的(协)变量,在实际应用中完全依赖这些工具是不明智的,毕竟最了解你的数据的还是你自己。利用你的领域知识,你会做出大部分正确的选择。例如,用身份证号或人名做预测变量要么不会有任何用处,要么甚至降低了其他重要变量的影响力。
b. 选择记录。与选择变量类似,你可能也想用你所有的数据行来建立模型,然而如果你的数据量确实非常巨大的话,要么要花费很长的时间来建立这个模型,要么买一台计算能力非常强大的机器。
因此,如果数据量特别大,进行抽样就是一个很好的主意。如果做的足够仔细,保证抽样是按真正的随机来进行的,采样对大部分商业问题来说都不会丢失信息。你可以用所有的数据建立一个模型;你还可以用采样的方法根据不同得采样方法建立几个模型,然后评价这几个模型选择一个最好的。我们认为后面这种方法得到的方法更准确、更健壮。
你可能选择数据中明显的异常数据删除掉。然而在某些情况下,这些看来异常的数据可能包含了你要建立模型的重要信息。基于你对问题的理解方式的不同,通常可以把这些异常忽略掉。比如可以把异常认为是人为的录入错误。
有时也需要向数据中添加一些新的数据(如,那些没有做出购买得客户)。
c. 创建新变量。很多情况下需要从原始数据中衍生一些新的变量作为预测变量。比如,用负债占收入百分比来预测信用风险比直接用负债和收入做预测变量更准确一些,也更容易理解一些。很多变量如果组合起来(加、减、比率等)会比这些变量自身影响力更大。一些变量如果扩大它的范围也会成为一个非常好的预测变量,比如用一段时间内收入变化情况代替一个单一的收入数据。
d. 转换变量。你所选择的算法和工具决定了都要对数据做哪些转换工作。如神经网络要求所有的变量都在0-1之间,因此在这些数据被提交到算法之前就必须先对不在[0,1]内的变量进行映射。同样一些决策树算法不接受数值型变量作为输入,在使用他们之前也要把这些数值映射到“高、中、低”等。当然你的转换方式也在一定程度上影响了模型的准确度。
5. 建立模型。对建立模型来说要记住的最重要的事是它是一个反复的过程。你需要仔细考察不同的模型以判断哪个模型对你的商业问题最有用。你在寻找好的模型的过程中学到的的东西会启发你修改你的数据,甚至改变最初对问题的定义。
一旦决定了预测的类型之后(分类还是回归),就需要为这个预测选择模型的类型。可能是一棵决策树、神经网络、甚至传统的数学统计。选择什么样的模型决定了你需对数据做哪些预处理工作。如神经网络需要做数据转换,有些数据挖掘工具可能对输入数据的格式有特定的限制,等。一旦所有的数据准备好之后,就可以开始训练你的模型了。
为了保证得到的模型具有较好的精确度和健壮性,需要一个定义完善的训练—验证协议。有时也称此协议为带指导的学习。他的主要思想就是先用一部分数据建立模型,然后再用剩下的数据来测试和验证这个得到的模型。有时还有第三个数据集,称为验证集,因为测试集可能受模型的特性的影响,这时需要一个独立的数据集来验证模型的准确性。
训练和测试数据挖掘模型需要把数据至少分成两个部分:一个用于模型训练,另一个用于模型测试。如果不使用不同的训练和测试集,那么模型的准确度就很难使人信服。用训练集把模型建立出来之后,就可以先在测试集数据上先试验一把,此模型在测试集上的预测准确度就是一个很好的指导数字,它说明如果将来与训练集和测试集类似的数据用此模型预测时,正确的百分比会有多大。这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。
简单验证。最基本的测试方法是被称为简单验证的方法。做法是从原始数据中拿出一定百分比的数据作为测试数据,这个百分比大概在5%到33%之间。注意在把数据库分成几部分时,一定要保证选择的随机性,这样才能使分开的各部分数据的性质是一致的。
先用数据库的主体把模型建立起来,然后用此模型来预测测试集中的数据。出现错误的预测与预测总数之间的比,称为错误率。正确的预测与总数的比,是准确率(准确率=1 - 错误率)。对回归模型来说,可以用方差来描述准确的程度。
在一次模型的建立过程中,即使这种最简单的验证就要执行几十次。例如在训练神经网络时,有时每一个训练周期就要求在测试集上运行一次,不断的训练测试,直到在测试集上的准确率不再提高为止。
交叉验证。如果数据不是很多(比如只有几千条),那么你可能承受不了再把一部分数据拿到一边不用,单用来做简单验证。交叉验证提供了一种让你使用全部数据的方法。首先把原始数据随机平分成两份,然后用一部分做训练集另一部分做测试集计算错误率,做完之后把两部分数据交换再计算一次,得到另一个错误率,最后再用所有的数据建立一个模型,把上面得到的两个错误率进行平均作为最后用所有数据建立的模型的错误率。
更通用的算法是n-维交叉验证。先把数据随机分成不相交的n份。比如,如果把数据分成10份,先把第一份拿出来放在一边用作模型测试,把其他9份合在一起来建立模型,然后把这个用90%的数据建立起来的模型用上面放在一边的第一份数据做测试。这个过程对每一份数据都重复进行一次,得到10个不同的错误率。最后把所有数据放在一起建立一个模型,模型的错误率为上面10个错误率的平均。
自举法是另一种评估模型错误率的技术。在数据量很小时尤其适用。与交叉验证一样模型是用所有的数据建立。
依据所得到的模型和你对模型的预期结果,你可能修改参数用同样的算法再建立新的模型,甚至采用其他的算法建立模型。别的方法说不定能提高预测的准确度。当然,没有一种算法或工具适应所有的数据,通常也很难在开始决定那种算法对你所面临的问题来说是最好的,因此很多情况下,需要建立用不同的方法(参数或算法)几个模型,从中选择最好的。
6. 评价和解释。
a. 模型验证。模型建立好之后,必须评价他的结果、解释他的价值。记住从测试集中得到的准确率只对用于建立模型的数据有意义。在实际应用中,随着应用数据的不同,模型的准确率肯定会变化。更重要的是,准确度自身并不一定是选择最好模型的正确评价方法。你需要进一步了解错误的类型和由此带来的相关费用的多少。
无序矩阵。对分类问题来说,无序矩阵是理解结果的非常好的工具。如图9所示,无序矩阵把预测的结果与实际的情况进行对比。它不仅说明了模型预测的准确情况,也把模型究竟在哪里出了问题也展示了出来。下表是一个简单的无序矩阵,其中的列代表数据的实际分类情况,行是预测的结果。在这张表值中,可以看到此模型在总共46个B类数据中成功预测了38个,8个出了问题:2个预测成了A,6个成了C。显然这比简单的说模型总体准确度是82%要更详细的多(123个成功预测除以总共150)。
预测
实际
类别A
类别B
类别C
类别A
45
2
3
类别B
10
38
2
类别C
4
6
40
图9:无序矩阵
在实际应用中,如果每种不同的预测错误所需付出的代价(金钱)也不同的话,那么代价最小的模型(而不一定是错误率最小的模型)就是我们所要选择的。例如,上面的无序矩阵中,如果每个准确的预测会带来¥10的收益,错误的预测A要付出¥5的代价,B是¥10,C是¥20,那么整个模型的纯价值是:
(123*¥10)-(5*¥5)-(12*¥10)-(10*¥20)=¥885
然而考察下面的无序矩阵(图10),虽然准确度降低到79%(118/150),但纯价值却升高了:
(118*¥10)-(22*¥5)-(7*¥10)-(3*¥20)=¥940
预测
实际
类别A
类别B
类别C
类别A
40
12
10
类别B
6
38
1
类别C
2
1
40
图10:另一个无序矩阵
收益表(图11)也是一种描述模型价值的方法。它显示了通过应用模型响应(如直接邮件推销)的变化情况。变化的比率称为lift。例如,如果用随机抽取的方法选择10%的客户响应率是10%,而通过模型选取10%的用户响应率是30%,则lift值为3。
模型解释的另一个重要组成部分是确定模型的价值。一个模型可能看起来很有意义,但要实施它的话很有可能花的钱比赚的钱多。图12是一个描述模型投资回报率(ROI)的图表(这里定义 ROI为利润与开销的比值)。注意图中当选取比例超过80%时,ROI变成了负数,ROI最高是在横坐标为2时。
当然,也可以直接看利润的变化情况(利润为收入与花费的差值),如图13所示:
注意到我们上面的例子中,最大lift在第一个1/10处(10%),最大ROI在第2个1/10(20%),而最大利润在第3、4个1/10处。
理想情况下,应该按照利润表行事,但很多情况下利润表并不能很容易的计算出来。
b. 外部验证。如前面指出的,无论我们用模拟的方法计算出来的模型的准确率有多高,都不能保证此模型在面对现实世界中真实的数据时能取得好的效果。经验证有效的模型并不一定是正确的模型。造成这一点的直接原因就是模型建立中隐含的各种假定。例如,在建立用户购买模式的模型时,可能没有考虑通货膨胀的影响,但实施模型时通货膨胀率突然由3%增加为17%,这显然会对人们的购买意向产生重大影响,因此再用原来的模型来预测客户购买情况必然会出现重大失误。
因此直接在现实世界中测试模型很重要。先在小范围内应用,取得测试数据,觉得满意之后再向大范围推广。
7. 实施。模型建立并经验证之后,可以有两种主要的使用方法。第一种是提供给分析人员做参考,由他通过察看和分析这个模型之后提出行动方案建议。比如可以把模型检测到的聚集、模型中蕴含的规则、或表明模型效果的ROI图表拿给分析人员看。
另一种是把此模型应用到不同的数据集上。模型可以用来标示一个事例的类别,给一项申请打分等。还可以用模型在数据库中选择符合特定要求的记录,以用OLAP工具做进一步的分析。
通常情况下,模型是某个商业过程的组成部分,如风险分析,信用授权,或欺诈检测。在这些情况下,模型一般都合并到应用程序的内部。例如,在抵押贷款应用程序内部可能集成了一个预测模型,来向贷款官员提供一项贷款申请风险大小的建议。或在定购系统中,当预测到库存有可能降低到一个最低限度时自动发出购买订单。
数据挖掘模型通常一次只能处理一个事件或一个事务。每个事务的处理时间和事务到达的速度,决定了模型运行所需的计算能力,和是否要用并行技术来加快速度。比如,贷款申请程序可能PC机上就运行的很好,而用于信用卡欺诈的模型则需要在服务器上用并行算法才能应付每天的大量事务。
当提交一个复杂的应用时,数据挖掘可能只是整个产品的一小部分,虽然可能是最关键的一部分。例如,常常把数据挖掘得到的知识与领域专家的知识结合起来,然后应用到数据库中的数据。在欺诈检测系统中可能既包含了数据挖掘发现的规律,也有人们在实践中早已总结出的规律。
模型监控。在应用了模型之后,当然还要不断监控他的效果。即使你在开始使用这个模型之后觉得他非常成功,也不能放弃监控,因为事物在不断发展变化,很可能过一段时间之后,模型就不再起作用。销售人员都知道,人们的购买方式随着社会的发展而变化。因此随着使用时间的增加,要不断的对模型做重新测试,有时甚者需要重新建立模型。
数据挖掘入门 一 数据挖掘入门 二
关联规则挖掘综述1
(蔡伟杰 caiweijie528@)
蔡伟杰 张晓辉 朱建秋 朱扬勇2
(复旦大学计算机科学系 上海 200433)
摘要 本文介绍了关联规则挖掘的研究情况,提出了关联规则的分类方法,对一些典型算法进行了分析和评 价,指出传统关联规则衡量标准的不足,归纳出关联规则的价值衡量方法,展望了关联规则挖掘的未来研究方向。
关键词 数据挖掘,关联规则,频集,OLAP
1引言
数据挖掘(Data Mining),又称数据库中的知识发现(Knowledge Discovery in Database),在最近几年里已被数据库界所广泛研究,其中关联规则(Association Rules)的挖掘是一个重要的问题。
关联规则是发现交易数据库中不同商品(项)之间的联系,这些规则找出顾客购买行为模式,如购买了某一商品对购买其他商品的影响。发现这样的规则可以应用于商品货架设计、货存安排以及根据购买模式对用户进行分类。
Agrawal等于1993年[1]首先提出了挖掘顾客交易数据库中项集间的关联规则问题,以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究。他们的工作包括对原有的算法进行优化,如引入随机采样、并行的思想等,以提高算法挖掘规则的效率;对关联规则的应用进行推广。
最近也有独立于Agrawal的频集方法的工作[18,19],以避免频集方法的一些缺陷,探索挖掘关联规则的新方法。同时随着OLAP技术的成熟和应用,将OLAP和关联规则结合[20,21]也成了一个重要的方向。也有一些工作[6]注重于对挖掘到的模式的价值进行评估,他们提出的模型建议了一些值得考虑的研究方向。
本文第二部分是对关联规则基本概念的介绍,提出了关联规则的分类方法;第三部分是对挖掘算法的介绍,从经典的apriori开始,然后描述了对该算法的优化拓展,接着讲述脱离apriori算法的方法,最后是多层、多维的关联规则挖掘;第四部分归纳出关联规则价值衡量方法,主要从两个方面进行考虑:系统客观层面和用户主观层面;最后展望了关联规则挖掘的未来研究方向。
2关联规则的基本概念
基本概念和问题描述
设I={i1, i2,…, im}是二进制文字的集合,其中的元素称为项(item)。记D为交易(transaction)T的集合,这里交易T是项的集合,并且T(I 。对应每一个交易有唯一的标识,如交易号,记作TID。设X是一个I中项的集合,如果X(T,那么称交易T包含X。
一个关联规则是形如X(Y的蕴涵式,这里X(I, Y(I,并且X(Y=(。规则X(Y在交易数据库D中的支持度(support)是交易集中包含X和Y的交易数与所有交易数之比,记为support(X(Y),即
support(X(Y)=|{T:X(Y(T,T(D}|/|D|
规则X(Y在交易集中的可信度(confidence)是指包含X和Y的交易数与包含X的交易数之比,记为confidence(X(Y),即
confidence(X(Y)=|{T: X(Y(T,T(D}|/|{T:X(T,T(D}|
给定一个交易集D,挖掘关联规则问题就是产生支持度和可信度分别大于用户给定的最小支持度(minsupp)和最小可信度(minconf)的关联规则。
关联规则的种类
我们将关联规则按不同的情况进行分类:
1. 基于规则中处理的变量的类别,关联规则可以分为布尔型和数值型。
布尔型关联规则处理的值都是离散的、种类化的,它显示了这些变量之间的关系;而数值型关联规则可以和多维关联或多层关联规则结合起来,对数值型字段进行处理,将其进行动态的分割,或者直接对原始的数据进行处理,当然数值型关联规则中也可以包含种类变量。
例如:性别=“女”=>职业=“秘书” ,是布尔型关联规则;性别=“女”=>avg(收入)=2300,涉及的收入是数值类型,所以是一个数值型关联规则。
2. 基于规则中数据的抽象层次,可以分为单层关联规则和多层关联规则。
在单层的关联规则中,所有的变量都没有考虑到现实的数据是具有多个不同的层次的;而在多层的关联规则中,对数据的多层性已经进行了充分的考虑。
例如:IBM台式机=>Sony打印机,是一个细节数据上的单层关联规则;台式机=>Sony打印机,是一个较高层次和细节层次之间的多层关联规则。
3. 基于规则中涉及到的数据的维数,关联规则可以分为单维的和多维的。
在单维的关联规则中,我们只涉及到数据的一个维,如用户购买的物品;而在多维的关联规则中,要处理的数据将会涉及多个维。换成另一句话,单维关联规则是处理单个属性中的一些关系;多维关联规则是处理各个属性之间的某些关系。
例如:啤酒=>尿布,这条规则只涉及到用户的购买的物品;性别=“女”=>职业=“秘书”,这条规则就涉及到两个字段的信息,是两个维上的一条关联规则。
给出了关联规则的分类之后,在下面的分析过程中,我们就可以考虑某个具体的方法适用于哪一类规则的挖掘,某类规则又可以用哪些不同的方法进行处理。
3.关联规则挖掘的算法
经典频集方法
Agrawal等于1993年[1]首先提出了挖掘顾客交易数据库中项集间的关联规则问题,其核心方法是基于频集理论的递推方法。以后诸多的研究人员对关联规则的挖掘问题进行了大量的研究。他们的工作包括对原有的算法进行优化,如引入随机采样、并行的思想等,以提高算法挖掘规则的效率;提出各种变体,如泛化的关联规则、周期关联规则等,对关联规则的应用进行推广。
核心算法
Agrawal等[1]在1993年设计了一个基本算法,提出了挖掘关联规则的一个重要方法 — 这是一个基于两阶段频集思想的方法,将关联规则挖掘算法的设计可以分解为两个子问题:
1) 找到所有支持度大于最小支持度的项集(Itemset),这些项集称为频集(Frequent Itemset)。
2) 使用第1步找到的频集产生期望的规则。
这里的第2步相对简单一点。如给定了一个频集Y=I1I2...Ik,k(2,Ij∈I,产生只包含集合{I1,I2,...,Ik}中的项的所有规则(最多k条),其中每一条规则的右部只有一项,(即形如[Y(Ii](Ii,(1(i(k),这里采用的是[4]中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。对于规则右部含两个以上项的规则,在其以后的工作中进行了研究,本文后面考虑的是这种情况。
为了生成所有频集,使用了递推的方法。其核心思想如下:
(1) L1 = {large 1-itemsets};
(2) for (k=2; Lk-1((; k++) do begin
(3) Ck=apriori-gen(Lk-1); //新的候选集
(4) for all transactions t(D do begin
(5) Ct=subset(Ck,t); //事务t中包含的候选集
(6) for all candidates c( Ct do
(7) ++;
(8) end
(9) Lk={c( Ck |(minsup}
(10) end
(11) Answer=(kLk;
首先产生频繁1-项集L1,然后是频繁2-项集L2,直到有某个r值使得Lr为空,这时算法停止。这里在第k次循环中,过程先产生候选k-项集的集合Ck,Ck中的每一个项集是对两个只有一个项不同的属于Lk-1的频集做一个(k-2)-连接来产生的。Ck中的项集是用来产生频集的候选集,最后的频集Lk必须是Ck的一个子集。Ck中的每个元素需在交易数据库中进行验证来决定其是否加入Lk,这里的验证过程是算法性能的一个瓶颈。这个方法要求多次扫描可能很大的交易数据库,即如果频集最多包含10个项,那么就需要扫描交易数据库10遍,这需要很大的I/O负载。
在论文[6]中,Agrawal等引入了修剪技术(Pruning)来减小候选集Ck的大小,由此可以显著地改进生成所有频集算法的性能。算法中引入的修剪策略基于这样一个性质:一个项集是频集当且仅当它的所有子集都是频集。那么,如果Ck中某个候选项集有一个(k-1)-子集不属于Lk-1,则这个项集可以被修剪掉不再被考虑,这个修剪过程可以降低计算所有的候选集的支持度的代价。文[6]中,还引入杂凑树(Hash Tree)方法来有效地计算每个项集的支持度。
频集算法的几种优化方法
虽然Apriori算法自身已经进行了一定的优化,但是在实际的应用中,还是存在不令人满意的地方,于是人们相继提出了一些优化的方法。
1. 基于划分的方法。Savasere等[14]设计了一个基于划分(partition)的算法,这个算法先把数据库从逻辑上分成几个互不相交的块,每次单独考虑一个分块并对它生成所有的频集,然后把产生的频集合并,用来生成所有可能的频集,最后计算这些项集的支持度。这里分块的大小选择要使得每个分块可以被放入主存,每个阶段只需被扫描一次。而算法的正确性是由每一个可能的频集至少在某一个分块中是频集保证的。上面所讨论的算法是可以高度并行的,可以把每一分块分别分配给某一个处理器生成频集。产生频集的每一个循环结束后,处理器之间进行通信来产生全局的候选k-项集。通常这里的通信过程是算法执行时间的主要瓶颈;而另一方面,每个独立的处理器生成频集的时间也是一个瓶颈。其他的方法还有在多处理器之间共享一个杂凑树来产生频集。更多的关于生成频集的并行化方法可以在[2,11,17]中找到。
2. 基于hash的方法。一个高效地产生频集的基于杂凑(hash)的算法由Park等[10]提出来。通过实验我们可以发现寻找频集主要的计算是在生成频繁2-项集Lk上,Park等就是利用了这个性质引入杂凑技术来改进产生频繁2-项集的方法。
3. 基于采样的方法。基于前一遍扫描得到的信息,对此仔细地作组合分析,可以得到一个改进的算法,Mannila等[8]先考虑了这一点,他们认为采样是发现规则的一个有效途径。随后又由Toivonen[16]进一步发展了这个思想,先使用从数据库中抽取出来的采样得到一些在整个数据库中可能成立的规则,然后对数据库的剩余部分验证这个结果。Toivonen的算法相当简单并显著地减少了I/O代价,但是一个很大的缺点就是产生的结果不精确,即存在所谓的数据扭曲(data skew)。分布在同一页面上的数据时常是高度相关的,可能不能表示整个数据库中模式的分布,由此而导致的是采样5%的交易数据所花费的代价可能同扫描一遍数据库相近。Lin和Dunham在[7]中讨论了反扭曲(Anti-skew)算法来挖掘关联规则,在那里他们引入的技术使得扫描数据库的次数少于2次,算法使用了一个采样处理来收集有关数据的次数来减少扫描遍数。
Brin等[4]提出的算法使用比传统算法少的扫描遍数来发现频集,同时比基于采样的方法使用更少的候选集,这些改进了算法在低层的效率。具体的考虑是,在计算k-项集时,一旦我们认为某个(k+1)-项集可能是频集时,就并行地计算这个(k+1)-项集的支持度,算法需要的总的扫描次数通常少于最大的频集的项数。这里他们也使用了杂凑技术,并提出产生“相关规则”(Correlation Rules)的一个新方法,这是基于他们的[3]工作基础上的。
4. 减少交易的个数。减少用于未来扫描的事务集的大小。一个基本的原理就是当一个事务不包含长度为k的大项集,则必然不包含长度为k+1的大项集。从而我们就可以将这些事务移去,这样在下一遍的扫描中就可以要进行扫描的事务集的个数。这个就是AprioriTid的基本思想
其他的频集挖掘方法
上面我们介绍的都是基于Apriori的频集方法。即使进行了优化,但是Apriori方法一些固有的缺陷还是无法克服:
1) 可能产生大量的候选集。当长度为1的频集有10000个的时候,长度为2的候选集个数将会超过10M。还有就是如果要生成一个很长的规则的时候,要产生的中间元素也是巨大量的。
2) 无法对稀有信息进行分析。由于频集使用了参数minsup,所以就无法对小于minsup的事件进行分析;而如果将minsup设成一个很低的值,那么算法的效率就成了一个很难处理的问题。
下面将介绍两种方法,分别用于解决以上两个问题。
在[18]中提到了解决问题1的一种方法。采用了一种FP-growth的方法。他们采用了分而治之的策略:在经过了第一次的扫描之后,把数据库中的频集压缩进一棵频繁模式树(FP-tree),同时依然保留其中的关联信息。随后我们再将FP-tree分化成一些条件库,每个库和一个长度为1的频集相关。然后再对这些条件库分别进行挖掘。当原始数据量很大的时候,也可以结合划分的方法,使得一个FP-tree可以放入主存中。实验表明,FP-growth对不同长度的规则都有很好的适应性,同时在效率上较之apriori算法有巨大的提高。
第二个问题是基于这个的一个想法:apriori算法得出的关系都是频繁出现的,但是在实际的应用中,我们可能需要寻找一些高度相关的元素,即使这些元素不是频繁出现的。在apriori算法中,起决定作用的是支持度,而我们现在将把可信度放在第一位,挖掘一些具有非常高可信度的规则。在[19]中介绍了对于这个问题的一个解决方法。整个算法基本上分成三个步骤:计算特征、生成候选集、过滤候选集。在三个步骤中,关键的地方就是在计算特征时Hash方法的使用。在考虑方法的时候,有几个衡量好坏的指数:时空效率、错误率和遗漏率。基本的方法有两类:Min_Hashing(MH)和Locality_Sensitive_Hashing(LSH)。Min_Hashing的基本想法是:将一条记录中的头k个为1的字段的位置作为一个Hash函数。Locality_Sentitive_Hashing的基本想法是:将整个数据库用一种基于概率的方法进行分类,使得相似的列在一起的可能性更大,不相似的列在一起的可能性较小。我们再对这两个方法比较一下。MH的遗漏率为零,错误率可以由k严格控制,但是时空效率相对的较差。LSH的遗漏率和错误率是无法同时降低的,但是它的时空效率却相对的好很多。所以应该视具体的情况而定。最后的实验数据也说明这种方法的确能产生一些有用的规则。
多层和多维关联规则的挖掘
随着数据仓库和OLAP技术研究的深入,可以预见大量的数据将经过整合、预处理,从而存入数据仓库之中。在当前,大多数的数据仓库的应用都是进行统计、建立多维以及OLAP的分析工作。随着数据挖掘研究的深入,已经有了OLAP和数据挖掘相结合的方法[20,21]。
首先一个有效的数据挖掘方法应该可以进行探索性的数据分析。用户往往希望能在数据库中穿行,选择各种相关的数据,在不同的细节层次上进行分析,以各种不同的形式呈现知识。基于OLAP的挖掘就可以提供在不同数据集、不同的细节上的挖掘,可以进行切片、切块、展开、过滤等各种对规则的操作。然后再加上一些可视化的工具,就能大大的提高数据挖掘的灵活性和能力。接着,我们来看一下多层和多维关联规则的定义。
多层关联规则:
对于很多的应用来说,由于数据分布的分散性,所以很难在数据最细节的层次上发现一些强关联规则。当我们引入概念层次后,就可以在较高的层次上进行挖掘。虽然较高层次上得出的规则可能是更普通的信息,但是对于一个用户来说是普通的信息,对于另一个用户却未必如此。所以数据挖掘应该提供这样一种在多个层次上进行挖掘的功能。
多层关联规则的分类:根据规则中涉及到的层次,多层关联规则可以分为同层关联规则和层间关联规则。
多层关联规则的挖掘基本上可以沿用“支持度-可信度”的框架。不过,在支持度设置的问题上有一些要考虑的东西。
同层关联规则可以采用两种支持度策略:
1) 统一的最小支持度。对于不同的层次,都使用同一个最小支持度。这样对于用户和算法实现来说都比较的容易,但是弊端也是显然的。
2) 递减的最小支持度。每个层次都有不同的最小支持度,较低层次的最小支持度相对较小。同时还可以利用上层挖掘得到的信息进行一些过滤的工作。
层间关联规则考虑最小支持度的时候,应该根据较低层次的最小支持度来定。
多维关联规则:
以上我们研究的基本上都是同一个字段的值之间的关系,比如用户购买的物品。用多维数据库的语言就是单维或者叫维内的关联规则,这些规则一般都是在交易数据库中挖掘的。但是对于多维数据库而言,还有一类多维的关联规则。例如:
年龄(X,“20...30”)(职业(X,“学生”)==> 购买(X,“笔记本电脑”)
在这里我们就涉及到三个维上的数据:年龄、职业、购买。
根据是否允许同一个维重复出现,可以又细分为维间的关联规则(不允许维重复出现)和混合维关联规则(允许维在规则的左右同时出现)。
年龄(X,“20...30”)(购买(X,“笔记本电脑”) ==> 购买(X,“打印机”)
这个规则就是混合维关联规则。
在挖掘维间关联规则和混合维关联规则的时候,还要考虑不同的字段种类:种类型和数值型。
对于种类型的字段,原先的算法都可以处理。而对于数值型的字段,需要进行一定的处理之后才可以进行。处理数值型字段的方法基本上有以下几种:
1) 数值字段被分成一些预定义的层次结构。这些区间都是由用户预先定义的。得出的规则也叫做静态数量关联规则。
2) 数值字段根据数据的分布分成了一些布尔字段。每个布尔字段都表示一个数值字段的区间,落在其中则为1,反之为0。这种分法是动态的。得出的规则叫布尔数量关联规则。
3) 数值字段被分成一些能体现它含义的区间。它考虑了数据之间的距离的因素。得出的规则叫基于距离的关联规则。
4) 直接用数值字段中的原始数据进行分析。使用一些统计的方法对数值字段的值进行分析,并且结合多层关联规则的概念,在多个层次之间进行比较从而得出一些有用的规则。得出的规则叫多层数量关联规则。
在OLAP中挖掘多层、多维的关联规则是一个很自然的过程。因为OLAP本身的基础就是一个多层多维分析的工具,只是在没有使用数据挖掘技术之前,OLAP只能做一些简单的统计,而不能发现其中一些深层次的有关系的规则。当我们将OLAP和DataMining技术结合在一起就形成了一个新的体系OLAM(On-Line Analytical Mining)[20]。
4关联规则价值衡量的方法
当我们用数据挖掘的算法得出了一些结果之后,数据挖掘系统如何知道哪些规则对于用户来说是有用的、有价值的?这里有两个层面:用户主观的层面和系统客观的层面。
系统客观层面:
很多的算法都使用“支持度-可信度”的框架。这样的结构有时会产生一些错误的结果。看如下的一个例子:
假设一个提供早餐的零售商调查了4000名学生在早晨进行什么运动,得到的结果是2200名学生打篮球,2750名学生晨跑,1800名学生打篮球、晨跑。那么如果设minsup为40%,minconf为60%,我们可以得到如下的关联规则:
打篮球(晨跑 (1)
这条规则其实是错误的,因为晨跑的学生的比例是68%,甚至大于60%。然而打篮球和晨跑可能是否定关联的,即当我们考虑如下的关联时:
打篮球((不)晨跑 (2)
虽然这条规则的支持度和可信度都比那条蕴涵正向关联的规则(1)低,但是它更精确。 然而,如果我们把支持度和可信度设得足够低,那么我们将得到两条矛盾的规则。但另一方面,如果我们把那些参数设得足够高,我们只能得到不精确的规则。总之,没有一对支持度和可信度的组合可以产生完全正确的关联。
于是人们引入了兴趣度,用来修剪无趣的规则,即避免生成“错觉”的关联规则。一般一条规则的兴趣度是在基于统计独立性假设下真正的强度与期望的强度之比,然而在许多应用中已发现,只要人们仍把支持度作为最初的项集产生的主要决定因素,那么要么把支持度设得足够低以使得不丢失任何有意义的规则,或者冒丢失一些重要规则的风险;对前一种情形计算效率是个问题,而后一种情形则有可能丢失从用户观点来看是有意义的规则的问题。
在[12]中作者给出了感兴趣的规则的定义(R-interesting),在[13]中他们又对此作了改进。在[10]中把事件依赖性的统计定义扩展到兴趣度的定义上来;[15]定义了否定关联规则的兴趣度。
除了把兴趣度作为修剪无价值规则的工具,现在已有许多其他的工作来重新认识项集,如Brin等[3]考虑的相关规则。在[4]中讨论了蕴涵规则(implication rule),规则的蕴涵强度在[0,(]之间变化,其中蕴涵强度为1表示完全无关的规则,(表示完备的规则,如果蕴涵强度大于1则表示更大的期望存在性。
另一个度量值——“收集强度”(collective strength)在[22]中被定义,他们设想使用“大于期望值”来发现有意义的关联规则。项集的“收集强度”是[0,(]之间的一个数值,其中0表示完备的否定相关性,而值(表示完备的正相关性。详细的讨论可以在[10]中找到。
用户主观层面:
上面的讨论只是基于系统方面的考虑,但是一个规则的有用与否最终取决于用户的感觉。只有用户可以决定规则的有效性、可行性。所以我们应该将用户的需求和系统更加紧密的结合起来。
可以采用一种基于约束(consraint-based)[21]的挖掘。具体约束的内容可以有:
1) 数据约束。用户可以指定对哪些数据进行挖掘,而不一定是全部的数据。
2) 指定挖掘的维和层次。用户可以指定对数据哪些维以及这些维上的哪些层次进行挖掘。
3) 规则约束。可以指定哪些类型的规则是我们所需要的。引入一个模板(template)的概念,用户使用它来确定哪些规则是令人感兴趣的而哪些则不然:如果一条规则匹配一个包含的模板(inclusive template),则是令人感兴趣的,然而如果一条规则匹配一个限制的模板(rextrictive template),则被认为是缺乏兴趣的。
其中有些条件可以和算法紧密的结合,从而即提高了效率,又使挖掘的目的更加的明确化了。其他的方法还有:
Kleinberg等人的工作是希望建立一套理论来判断所得模式的价值,他们认为这个问题仅能在微观经济学框架里被解决,他们的模型提出了一个可以发展的方向。他们引入并研究了一个新的优化问题——分段(Segmentation)问题,这个框架包含了一些标准的组合分类问题。这个模型根据基本的目标函数,对“被挖掘的数据”的价值提供一个特殊的算法的视角,显示了从这方面导出的具体的优化问题的广泛的应用领域。
在[5]中Korn等就利用猜测误差(这里他们使用“均方根”来定义)来作为一些从给定的数据集所发现的规则的“好处”(goodness)的度量,他们所定义的比例规则就是如下的规则:
顾客大多数分别花费 1 : 2 : 5的钱在“面包”:“牛奶”:“奶油”上
通过确定未知的(等价的,被隐藏的,丢失的)值,比例规则可以用来作决策支持。如果数据点线性地相关的话,那么比例规则能达到更紧凑的描述,即关联规则更好地描述了相关性。
5.结论与展望
本文讨论了数据挖掘中产生关联规则的方法以及它的应用,这方面一些研究成果已取得很大的成绩,并已被集成在一些系统中,如IBM的Quest项目,Simon Farse大学的DBMiner等。具体的内容有经典频集算法,对频集算法的优化,扩展。然后讨论了在OLAP下进行数据挖掘的一些内容。接着是对规则价值的一些评价方法。
对于关联规则的发展,我们觉得可以在下面一些方向上进行近一步的深入研究。在处理极大量的数据时,如何提高算法效率的问题;对于挖掘迅速更新的数据的挖掘算法的进一步研究;在挖掘的过程中,提供一种与用户进行交互的方法,将用户的领域知识结合在其中;对于数值型字段在关联规则中的处理问题;生成结果的可视化方面等等。
参考文献
1 R. Agrawal, T. Imielinski, and A. Swami. Mining association rules between sets of items in large databases. Proceedings of the ACM SIGMOD Conference on Management of data, pp. 207-216, 1993.
2 R. Agrawal, and J. Shafer. Parallel mining of association rules:Design,Implementation, and Experience. Technical Report FJ10004, IBM Almaden Research Center, San Jose, CA 95120, Jan. 1996.
3 S. Brin, R. Motwani, and C. Silverstein. Beyond market baskets:generlizing association rules to correlations. Proceedings of the ACM SIGMOD, 1996. pages 255-276.
4 S. Brin, R. Motwani, J. D. Ullman, and S. Tsur. Dynamic Itemset counting and implication rules for market basket data. In ACM SIGMOD International Conference On the Management of Data. 1997.
5 F. Korn, A. Labrinidis, Y. Kotidis, and C. Faloutsos. Ratio rules: A new paradigm for fast, quantifiable data mining.
6 J. Kleinberg, C. Papadimitriou, and P. Raghavan. Segmentation problems. Proceedings of the 30th Annual Symposium on Theory of Computing, ACM. 1998.
7 J. L. Lin, and M. H. Dunham. Mining association rules: Anti-skew algorithms. Proceedings of the International Conference on Data Engingeering, Orlando, Florida, February 1998.
8 H. Mannila, H. Toivonen, and A. Verkamo. Efficient algorithm for discovering association rules. AAAI Workshop on Knowledge Discovery in Databases, 1994, pp. 181-192.
9 R. Ng, L. V. S. Lakshmanan, J. Han, and A. Pang. Exploratory mining and pruning optimizations of constrained associations rules. Proceedings of ACM SIGMOD International Conference on Management of Data, pates 13-24, Seattle, Washington, June 1998.
10 J. S. Park, M. S. Chen, and P. S. Yu. An effective hash-based algorithm for mining association rules. Proceedings of ACM SIGMOD International Conference on Management of Data, pages 175-186, San Jose, CA, May 1995.
11 J. S. Park, M. S. Chen, and P. S. Yu. Efficient parallel data mining of association rules. 4th International Conference on Information and Knowledge Management, Baltimore, Maryland, Novermber 1995.
12 R. Srikant, and R. Agrawal. Mining generalized association rules. Proceedings of the 21st International Conference on Very Large Database, 1995, pp. 407-419.
13 R. Srikant, and R. Agrawal. Mining quantitative association rules in large relational tables. Proceedings of the ACM SIGMOD Conference on Management of Data, 1996. -12.
14 A. Savasere, E. Omiecinski, and S. Navathe. An efficient algorithm for mining association rules in large databases. Proceedings of the 21st International Conference on Very large Database, 1995.
15 A. Savasere, E. Omiecinski, and S. Navathe. Mining for strong negative associations in a large database of costomer transactions. Proceedings of the International Conference on Data Engineering, February 1998.
16 H. Toivonen. Sampling large databases for association rules. Proceedings of the 22nd International Conference on Very Large Database, Bombay, India, September 1996.
17 M. J. Zaki, S. Parthasarathy, and W. Li. A localized algorithm for parallel association mining. 9th Annual ACM Symposium on Parallel Algorithms and Architectures, Newport, Rhode Island, June 1997.
18 ,,and frequent patterns without candidate ACM-SIGMOD of Data(SIGMOD’00),Dalas,TX,May 2000.
19 Edith Cohen,Mayur Datar,Shinji Fujiwara, Aristides Gionis,Piotr Indyk,Rajeev Motwani,Jeffrey ,Cheng Interesting Associations without Support Pruning.
20 Jiawei Han,Sonny . Chee,Jenny for On-Line Analytical Mining of Data Warehouses.
21 Information Discovery, and DataMining,Bridging the Gap.
22 C. C. Aggarwal, and P. S. Yu. A new framework for itemset generation. IBM Research Report,RC-21064.
Survey of Association Rule Generation
Cai Weijie Zhang Xiaohui Zhu Jianqiu Zhu Yangyong
(Computer Science Department, Fudan University, Shanghai, 200433)
Abstract This paper provides a survey of the study in association rule generation,brings forward a classification of association rule,reviews and analyses some typical algorithms,points out the weakness of the traidional measure method,concludes the measure method of the association rule’s value,views some future directions in association rule generation.
Key Words Data Mining, Association Rules, Large Itemset,OLAP
基 于 历 史 的 分 析(MBR)
人类非常善于根据过去的经验来作出决定。处理的过程大致是这样的:先根据经验寻找寻找相似的情况,然后将这些情况的信息应用于当前的例子中。这个其实也就是MBR(Memory Based Reasoning)的本质。MBR首先寻找和新记录相似的邻居,然后用这些邻居进行分类和估值。
MBR的应用实例有:
欺诈。新的案例可能和过去的案例相似。
用户响应预测。下一个可能对某项服务作出反应的客户可能和以前的客户相似。
医疗处理。最好的处理效果可能是对相似病人有效的那些治疗方法。
分类。例如文本分类。
MBR的优点和缺点:
优点:
简单:MBR的最大优点就是它的简单性,几乎可以应用于各种不同类型的数据结构包括地理位置和文本。在关系数据库中,MBR也可以用SQL实现,但是性能是一个问题。
不需训练:和其他的一些数据挖掘的方法相比,MBR不需要很多的时间进行训练的工作。
缺点:
MBR的资源消耗比较的大。它需要大量的已经准备好的数据用于寻找邻居。在对一个新记录进行分类的时候,需要搜索所有的历史记录来寻找最相似的邻居。
距离函数和联合函数的确定。虽然寻找一个距离函数和联合函数的难度并不是很大,但是如何确定一个最佳解就比较困难了。
使用MBR中的三个主要的问题:
寻找确定的历史数据。
决定表示历史数据的最有效的方法。
决定距离函数、联合函数和邻居的数量。
寻找合适的历史数据:这里的历史数据就是一个训练集,它应该提供对历史数据的一个很好的覆盖,以便寻找到的最近邻居对于预测是有用的。主要的原则就是选出各个类的数量应该大致一致。
如何代表历史数据:降低训练集的大小。可以采用将原始数据分类,然后在每个类中选取有代表性的一些记录来代表整个类的方法来减小数据量。
决定距离函数、联合函数和邻居的个数:这三个参数是决定MBR工作好坏的决定性因素。幸运的是,一些简单的距离函数和联合函数往往能工作的很好。
案例学习:对新的故事分类
这个例子将说明对于有几百个分类的情况,MBR能和人表现的一样好,同时可以对很难处理的文本进行处理。
例子如下:想要对一些新到的故事,消息进行自动的分类。在以前是用手工的方法进行分类的。
种类
代码
文章数
出现次数
Government(g)
28
3926
4200
Industry(i)
112
38562
42058
Market Sector(m)
9
38562
42058
Product(p)
21
2242
2523
Region(r)
121
47083
116358
Subject(n)
70
41902
52751
实施:训练集有49652个故事组成,平均每个故事有8个代码。如果其中的分布能有更好的处理一下的话,效果可能更好。
选择距离函数:使用一个叫 relevance feedback 的指标= (-log2 frequency)
距离函数就是 d(A,B)=1-score(A,B)/score(A,A)
选择联合函数:使用一个权重的问题。
邻居
距离
权重
代码
1
R/FE,R/CA,R/CO
2
R/FE,R/JA,R/CA
3
R/FE,R/JA,R/MI
4
R/FE,R/JA,R/CA
最后,R/CA ,R/CO=,R/FE=,R/JA=,R/MI=。
选择邻居的数量:本例中邻居的数量需要相对的多,但是对于其他的应用可能就不需要这么多的。
结果如何:覆盖率,准确率。
衡量距离函数:
一次建立一个字段的距离关系。对于数字字段有三种常用的距离函数:绝对距离:|A-B|、平方差:(A-B)*(A-B)、标准差:|A-B|/(maximum difference)。
然后对各个字段的距离并在一块有三个方法:求和,标准和,平方和的根。当然有时其中的权值可以适当的做一些调整。
对于其他字段的距离函数的定义:可以使用一些特殊的距离函数。例如:有一个长度为5的邮编。我们可以定义不同大小的距离函数。
联合函数的确定:向邻居寻找答案。
民主选举的方法:就是从邻居中选择一个出现频率最高的项作为最后的结果。当出现平局的情况时,选择最近邻居所在的那个结果。在这里邻居的数量是有一定的影响的。同时引入一个可信度的问题:也就是所选邻居占总数量的比例。注意:当可信度较小的时候,说明我们的训练集有问题,训练集没有提供足够的信息,这是我们可以考虑对训练集做一定的调整。MBR的效果最高只能和训练集的一样好。
带权重的选举:就是距离越远,权重越小。其余的和民主选举的方法类似。这两种方法的好坏可以通过测试集的方法来决定。
用统计回归的方法来处理数字属性和顺序属性:对于数字字段,以上的两个方法是不大适用的。如果用求平均的方法也不是很好,会限定结果的区间。建议的方法是先用MBR的方法找到几个最近的邻居,然后对这几个最近邻居采用回归的方法产生最后的结果。
产生最好的结果:
关 联 规 则 分 析
关联规则简介:
关联规则虽然来源于POS中,但是可以应用于很多领域。只要一个客户在同一个时间里买了多样东西,或者在一段时间了做了好几样事情就可能是一个潜在的应用。例如:
用信用卡购物,如汽车租金和旅馆费,可以看他下一个要买的东西。
电话公司提供的多项服务,以研究捆绑销售的问题。
银行提供的多项服务,来分析客户可能需要那些服务。
不寻常的多项保险申请可能是欺诈行为。
数据挖掘什么时候有用?三种规则:有用的、价值不高的、费解的。价值不高的规则往往是对一些商业领域内的规则重现。费解的规则往往是数据中一些偶然的东西,从而也没有什么采取行动的价值。
虚拟元素(Virtual Items)是一个在事务中认为加入的元素。用来对事务进行一定的区别。加入虚拟元素后我们能做的事情:
对比促销时和平常销售时的区别。
按照销售的区域来看,按照销售的方式来看。
比较城市和郊区的区别。
比较各个季节的不同。
数据挖掘的基本流程:
选择合适的元素。考虑不同的统计级别,选择哪种细节程度。细节的颗粒越粗,那么算法的工作量就越小;细节的颗粒越细,那么结果的可实施性就越好。关键:只有当数据中的元素出现的次数大致相同是,关联规则的效果才最好。虚拟元素不能太多!应该注意数据的质量。
产生规则。什么是规则?就是一个条件和一个结果的和:If condition then result。实际中有用的往往是结果中只有一个元素的情况。支持度、可信度和提高率(兴趣度)。
元组
出现频率
A
45%
B
%
C
40%
A和B
25%
A和C
20%
B和C
15%
A和B和C
5%
支持度:就是一个元组在整个数据库中出现的概率。如上面的例子中S(A)=。
可信度:它是针对规则而言的。对于一般的规则,它的可信度=p(condition and result)/p(condition)。例如有如下规则:If B and C then A。则它的可信度是:p(B and C and A)/p(B and C)=5%/15%=。
提高率(或者叫兴趣度):对于上面的一个规则,我们可以发现,当我们从从数据库中直接取A的时候,概率是45%;可在我们的规则中,取到A的概率却只有%。显然,这种情况是我们不愿意见到的,我们应该略去这样的一些规则。所以我们引入了兴趣度的概念,具体的公式如下:兴趣度=p(condition and result)/p(condition)*p(result)。当兴趣度大于1的时候,这条规则就是比较好的;当兴趣度小于1的时候,这条规则就是没有很大意义的。兴趣度越大,规则的实际意义就越好。
克服实际应用中数据量暴大的问题。当数据量增大时,要考虑的元素组就增长的很快了。
分裂规则:例如:If A and not B then C。
用关联规则的方法对序列规则的分析:
为了进行序列模式的分析,事务数据要满足额外的两个条件:
一个时标或者序列信息用以决定事务发生的顺序。
标识信息,用以区别不同的事务。
可以用于原因结果分析。
关联规则的优缺点:
优点:
它可以产生清晰有用的结果。
它支持间接数据挖掘。
可以处理变长的数据。
它的计算的消耗量是可以预见的。
缺点:
当问题变大时,计算量增长得厉害。
难以决定正确的数据。
容易忽略稀有的数据。
数据挖掘资料汇编
从Internet综合的资料,对于了解数据挖掘有一定的好处,对技术没有讲解。如果大家有补充的可随时交流、增加、修改。
数据挖掘讨论组
2000年12月
1. 数据挖掘技术的由来 4
网络之后的下一个技术热点 4
数据爆炸但知识贫乏 4
支持数据挖掘技术的基础 4
从商业数据到商业信息的进化 5
数据挖掘逐渐演变的过程 5
2 数据挖掘的定义 6
技术上的定义及含义 6
商业角度的定义 7
数据挖掘与传统分析方法的区别 7
3 数据挖掘的研究历史和现状 7
研究历史 7
出版物及工具 8
国内现状 8
业界观点 8
4 数据挖掘研究内容和本质 9
广义知识(Generalization) 9
关联知识(Association) 9
分类知识(Classification&Clustering) 9
预测型知识(Prediction) 10
偏差型知识(Deviation) 10
5 数据挖掘的功能 10
自动预测趋势和行为 10
关联分析 10
聚类 11
概念描述 11
偏差检测 11
6 数据挖掘常用技术 11
人工神经网络 11
决策树 11
遗传算法 11
近邻算法 11
规则推导 11
7 数据挖掘工具 12
基于神经网络的工具 12
基于规则和决策树的工具 12
基于模糊逻辑的工具 12
综合多方法工具 12
8 数据挖掘的流程 12
数据挖掘环境 12
数据挖掘过程图 12
数据挖掘过程工作量 13
数据挖掘过程简介 13
数据挖掘需要的人员 14
9 数据挖掘未来研究方向 14
10 数据挖掘热点 15
网站的数据挖掘(Web site data mining) 15
生物信息或基因的数据挖掘 16
文本的数据挖掘(Textualmining) 16
11 Web数据挖掘与XML 16
Web数据挖掘的难点 16
XML与Web数据挖掘技术 17
12 数据挖掘应用 20
12. 1 数据挖掘解决的典型商业问题 20
12. 2 数据挖掘在市场营销的应用 20
12. 3 成功案例 21
13 实施数据挖掘项目考虑的问题 23
14 实施数据挖掘项目考虑的问题 24
1. 数据挖掘技术的由来
网络之后的下一个技术热点
我们现在已经生活在一个网络化的时代,通信、计算机和网络技术正改变着整个人类和社会。如果用芯片集成度来衡量微电子技术,用CPU处理速度来衡量计算机技术,用信道传输速率来衡量通信技术,那么摩尔定律告诉我们,它们都是以每18个月翻一番的速度在增长,这一势头已经维持了十多年。在美国,广播达到5000万户用了38年;电视用了13年;Internet拨号上网达到5000万户仅用了4年。全球IP网发展速度达到每6个月翻一番,国内情况亦然。1999年初,中国上网用户为210万,现在已经达到600万。网络的发展导致经济全球化,在1998年全球产值排序前100名中,跨国企业占了51个,国家只占49个。有人提出,对待一个跨国企业也许比对待一个国家还要重要。在新世纪钟声刚刚敲响的时候,回顾往昔,人们不仅要问:就推动人类社会进步而言,历史上能与网络技术相比拟的是什么技术呢?有人甚至提出要把网络技术与火的发明相比拟。火的发明区别了动物和人,种种科学技术的重大发现扩展了自然人的体能、技能和智能,而网络技术则大大提高了人的生存质量和人的素质,使人成为社会人、全球人。
现在的问题是:网络之后的下一个技术热点是什么?让我们来看一些身边俯拾即是的现象:《纽约时报》由60年代的10~20版扩张至现在的100~200版,最高曾达1572版;《北京青年报》也已是16~40版;市场营销报已达100版。然而在现实社会中,人均日阅读时间通常为30~45分钟,只能浏览一份24版的报纸。大量信息在给人们带来方便的同时也带来了一大堆问题:第一是信息过量,难以消化;第二是信息真假难以辨识;第三是信息安全难以保证;第四是信息形式不一致,难以统一处理。人们开始提出一个新的口号:“要学会抛弃信息”。人们开始考虑:“如何才能不被信息淹没,而是从中及时发现有用的知识、提高信息利用率?”
面对这一挑战,数据开采和知识发现(DMKD)技术应运而生,并显示出强大的生命力。
数据爆炸但知识贫乏
另一方面,随着数据库技术的迅速发展以及数据库管理系统的广泛应用,人们积累的数据越来越多。激增的数据背后隐藏着许多重要的信息,人们希望能够对其进行更高层次的分析,以便更好地利用这些数据。目前的数据库系统可以高效地实现数据的录入、查询、统计等功能,但无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势。缺乏挖掘数据背后隐藏的知识的手段,导致了“数据爆炸但知识贫乏”的现象。
支持数据挖掘技术的基础
数据挖掘技术是人们长期对数据库技术进行研究和开发的结果。起初各种商业数据是存储在计算机的数据库中的,然后发展到可对数据库进行查询和访问,进而发展到对数据库的即时遍历。数据挖掘使数据库技术进入了一个更高级的阶段,它不仅能对过去的数据进行查询和遍历,并且能够找出过去数据之间的潜在联系,从而促进信息的传递。现在数据挖掘技术在商业应用中已经可以马上投入使用,因为对这种技术进行支持的三种基础技术已经发展成熟,他们是:
- 海量数据搜集
- 强大的多处理器计算机
- 数据挖掘算法
Friedman[1997]列举了四个主要的技术理由激发了数据挖掘的开发、应用和研究的兴趣:
- 超大规模数据库的出现,例如商业数据仓库和计算机自动收集的数据记录;
- 先进的计算机技术,例如更快和更大的计算能力和并行体系结构;
- 对巨大量数据的快速访问;
- 对这些数据应用精深的统计方法计算的能力。
商业数据库现在正在以一个空前的速度增长,并且数据仓库正在广泛地应用于各种行业;对计算机硬件性能越来越高的要求,也可以用现在已经成熟的并行多处理机的技术来满足;另外数据挖掘算法经过了这10多年的发展也已经成为一种成熟,稳定,且易于理解和操作的技术。
从商业数据到商业信息的进化
从商业数据到商业信息的进化过程中,每一步前进都是建立在上一步的基础上的。见下表。表中我们可以看到,第四步进化是革命性的,因为从用户的角度来看,这一阶段的数据库技术已经可以快速地回答商业上的很多问题了。
进化阶段
商业问题
支持技术
产品厂家
产品特点
数据搜集 (60年代)
“过去五年中我的总收入是多少?”
计算机、磁带和磁盘
IBM,CDC
提供历史性的、静态的数据信息
数据访问 (80年代)
“在新英格兰的分部去年三月的销售额是多少?”
关系数据库(RDBMS),结构化查询语言(SQL),ODBC
Oracle、Sybase、Informix、IBM、Microsoft
在记录级提供历史性的、动态数据信息
数据仓库;决策支持 (90年代)
“在新英格兰的分部去年三月的销售额是多少?波士顿据此可得出什么结论?”
联机分析处理(OLAP)、多维数据库、数据仓库
Pilot、Comshare、Arbor、Cognos、Microstrategy
在各种层次上提供回溯的、动态的数据信息
数据挖掘 (正在流行)
“下个月波士顿的销售会怎么样?为什么?”
高级算法、多处理器计算机、海量数据库
Pilot、Lockheed、IBM、SGI、其他初创公司
提供预测性的信息
表一、数据挖掘的进化历程。
数据挖掘的核心模块技术历经了数十年的发展,其中包括数理统计、人工智能、机器学习。今天,这些成熟的技术,加上高性能的关系数据库引擎以及广泛的数据集成,让数据挖掘技术在当前的数据仓库环境中进入了实用的阶段。
数据挖掘逐渐演变的过程
数据挖掘其实是一个逐渐演变的过程,电子数据处理的初期,人们就试图通过某些方法来实现自动决策支持,当时机器学习成为人们关心的焦点.机器学习的过程就是将一些已知的并已被成功解决的问题作为范例输入计算机,机器通过学习这些范例总结并生成相应的规则,这些规则具有通用性,使用它们可以解决某一类的问题.随后,随着神经网络技术的形成和发展,人们的注意力转向知识工程,知识工程不同于机器学习那样给计算机输入范例,让它生成出规则,而是直接给计算机输入已被代码化的规则,而计算机是通过使用这些规则来解决某些问题。专家系统就是这种方法所得到的成果,但它有投资大、效果不甚理想等不足。80年代人们又在新的神经网络理论的指导下,重新回到机器学习的方法上,并将其成果应用于处理大型商业数据库。随着在80年代末一个新的术语,它就是数据库中的知识发现,简称KDD(Knowledge discovery in database).它泛指所有从源数据中发掘模式或联系的方法,人们接受了这个术语,并用KDD来描述整个数据发掘的过程,包括最开始的制定业务目标到最终的结果分析,而用数据挖掘(data mining)来描述使用挖掘算法进行数据挖掘的子过程。但最近人们却逐渐开始使用数据挖掘中有许多工作可以由统计方法来完成,并认为最好的策略是将统计方法与数据挖掘有机的结合起来。
数据仓库技术的发展与数据挖掘有着密切的关系。数据仓库的发展是促进数据挖掘越来越热的原因之一。但是,数据仓库并不是数据挖掘的先决条件,因为有很多数据挖掘可直接从操作数据源中挖掘信息
2 数据挖掘的定义
技术上的定义及含义
数据挖掘(Data Mining)就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。
与数据挖掘相近的同义词有数据融合、数据分析和决策支持等。这个定义包括好几层含义:数据源必须是真实的、大量的、含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受、可理解、可运用;并不要求发现放之四海皆准的知识,仅支持特定的发现问题。
----何为知识?从广义上理解,数据、信息也是知识的表现形式,但是人们更把概念、规则、模式、规律和约束等看作知识。人们把数据看作是形成知识的源泉,好像从矿石中采矿或淘金一样。原始数据可以是结构化的,如关系数据库中的数据;也可以是半结构化的,如文本、图形和图像数据;甚至是分布在网络上的异构型数据。发现知识的方法可以是数学的,也可以是非数学的;可以是演绎的,也可以是归纳的。发现的知识可以被用于信息管理,查询优化,决策支持和过程控制等,还可以用于数据自身的维护。因此,数据挖掘是一门交叉学科,它把人们对数据的应用从低层次的简单查询,提升到从数据中挖掘知识,提供决策支持。在这种需求牵引下,汇聚了不同领域的研究者,尤其是数据库技术、人工智能技术、数理统计、可视化技术、并行计算等方面的学者和工程技术人员,投身到数据挖掘这一新兴的研究领域,形成新的技术热点。
这里所说的知识发现,不是要求发现放之四海而皆准的真理,也不是要去发现崭新的自然科学定理和纯数学公式,更不是什么机器定理证明。实际上,所有发现的知识都是相对的,是有特定前提和约束条件,面向特定领域的,同时还要能够易于被用户理解。最好能用自然语言表达所发现的结果。
商业角度的定义
数据挖掘是一种新的商业信息处理技术,其主要特点是对商业数据库中的大量业务数据进行抽取、转换、分析和其他模型化处理,从中提取辅助商业决策的关键性数据。
简而言之,数据挖掘其实是一类深层次的数据分析方法。数据分析本身已经有很多年的历史,只不过在过去数据收集和分析的目的是用于科学研究,另外,由于当时计算能力的限制,对大数据量进行分析的复杂数据分析方法受到很大限制。现在,由于各行业业务自动化的实现,商业领域产生了大量的业务数据,这些数据不再是为了分析的目的而收集的,而是由于纯机会的(Opportunistic)商业运作而产生。分析这些数据也不再是单纯为了研究的需要,更主要是为商业决策提供真正有价值的信息,进而获得利润。但所有企业面临的一个共同问题是:企业数据量非常大,而其中真正有价值的信息却很少,因此从大量的数据中经过深层分析,获得有利于商业运作、提高竞争力的信息,就像从矿石中淘金一样,数据挖掘也因此而得名。
因此,数据挖掘可以描述为:按企业既定业务目标,对大量的企业数据进行探索和分析,揭示隐藏的、未知的或验证已知的规律性,并进一步将其模型化的先进有效的方法。
数据挖掘与传统分析方法的区别
数据挖掘与传统的数据分析(如查询、报表、联机应用分析)的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识.数据挖掘所得到的信息应具有先未知,有效和可实用三个特征.
先前未知的信息是指该信息是预先未曾预料到的,既数据挖掘是要发现那些不能靠直觉发现的信息或知识,甚至是违背直觉的信息或知识,挖掘出的信息越是出乎意料,就可能越有价值.在商业应用中最典型的例子就是一家连锁店通过数据挖掘发现了小孩尿布和啤酒之间有着惊人的联系.
3 数据挖掘的研究历史和现状
研究历史
从数据库中发现知识(KDD)一词首次出现在1989年举行的第十一届国际联合人工智能学术会议上。到目前为止,由美国人工智能协会主办的KDD国际研讨会已经召开了8次,规模由原来的专题讨论会发展到国际学术大会(见表1),研究重点也逐渐从发现方法转向系统应用,注重多种发现策略和技术的集成,以及多种学科之间的相互渗透。1999年,亚太地区在北京召开的第三届PAKDD会议收到158篇论文,空前热烈。IEEE的Knowledge and Data Engineering会刊率先在1993年出版了KDD技术专刊。并行计算、计算机网络和信息工程等其他领域的国际学会、学刊也把数据挖掘和知识发现列为专题和专刊讨论,甚至到了脍炙人口的程度。
出版物及工具
此外,在Internet上还有不少KDD电子出版物,其中以半月刊Knowledge Discovery Nuggets最为权威( Email Club等。至于DMKD书籍,可以在任意一家计算机书店找到十多本。目前,世界上比较有影响的典型数据挖掘系统有:SAS公司的Enterprise Miner、IBM公司的Intelligent Miner、SGI公司的SetMiner、SPSS公司的Clementine、Sybase公司的Warehouse Studio、RuleQuest Research公司的See5、还有CoverStory、EXPLORA、Knowledge Discovery Workbench、DBMiner、Quest等。读者可以访问.网站,该网站提供了许多数据挖掘系统和工具的性能测试报告。
国内现状
与国外相比,国内对DMKD的研究稍晚,没有形成整体力量。1993年国家自然科学基金首次支持我们对该领域的研究项目。目前,国内的许多科研单位和高等院校竞相开展知识发现的基础理论及其应用研究,这些单位包括清华大学、中科院计算技术研究所、空军第三研究所、海军装备论证中心等。其中,北京系统工程研究所对模糊方法在知识发现中的应用进行了较深入的研究,北京大学也在开展对数据立方体代数的研究,华中理工大学、复旦大学、浙江大学、中国科技大学、中科院数学研究所、吉林大学等单位开展了对关联规则开采算法的优化和改造;南京大学、四川联合大学和上海交通大学等单位探讨、研究了非结构化数据的知识发现以及Web数据挖掘。
业界观点
最近,Gartner Group的一次高级技术调查将数据挖掘和人工智能列为“未来三到五年内将对工业产生深远影响的五大关键技术”之首,并且还将并行处理体系和数据挖掘列为未来五年内投资焦点的十大新兴技术前两位。根据最近Gartner的HPC研究表明,“随着数据捕获、传输和存储技术的快速发展,大型系统用户将更多地需要采用新技术来挖掘市场以外的价值,采用更为广阔的并行处理系统来创建新的商业增长点。”
4 数据挖掘研究内容和本质
----随着DMKD研究逐步走向深入,数据挖掘和知识发现的研究已经形成了三根强大的技术支柱:数据库、人工智能和数理统计。因此,KDD大会程序委员会曾经由这三个学科的权威人物同时来任主席。目前DMKD的主要研究内容包括基础理论、发现算法、数据仓库、可视化技术、定性定量互换模型、知识表示方法、发现知识的维护和再利用、半结构化和非结构化数据中的知识发现以及网上数据挖掘等。
----数据挖掘所发现的知识最常见的有以下四类:
广义知识(Generalization)
----广义知识指类别特征的概括性描述知识。根据数据的微观特性发现其表征的、带有普遍性的、较高层次概念的、中观和宏观的知识,反映同类事物共同性质,是对数据的概括、精炼和抽象。
----广义知识的发现方法和实现技术有很多,如数据立方体、面向属性的归约等。数据立方体还有其他一些别名,如“多维数据库”、“实现视图”、“OLAP"等。该方法的基本思想是实现某些常用的代价较高的聚集函数的计算,诸如计数、求和、平均、最大值等,并将这些实现视图储存在多维数据库中。既然很多聚集函数需经常重复计算,那么在多维数据立方体中存放预先计算好的结果将能保证快速响应,并可灵活地提供不同角度和不同抽象层次上的数据视图。另一种广义知识发现方法是加拿大SimonFraser大学提出的面向属性的归约方法。这种方法以类SQL语言表示数据挖掘查询,收集数据库中的相关数据集,然后在相关数据集上应用一系列数据推广技术进行数据推广,包括属性删除、概念树提升、属性阈值控制、计数及其他聚集函数传播等。
关联知识(Association)
----它反映一个事件和其他事件之间依赖或关联的知识。如果两项或多项属性之间存在关联,那么其中一项的属性值就可以依据其他属性值进行预测。最为著名的关联规则发现方法是提出的Apriori算法。关联规则的发现可分为两步。第一步是迭代识别所有的频繁项目集,要求频繁项目集的支持率不低于用户设定的最低值;第二步是从频繁项目集中构造可信度不低于用户设定的最低值的规则。识别或发现所有频繁项目集是关联规则发现算法的核心,也是计算量最大的部分。
分类知识(Classification&Clustering)
----它反映同类事物共同性质的特征型知识和不同事物之间的差异型特征知识。最为典型的分类方法是基于决策树的分类方法。它是从实例集中构造决策树,是一种有指导的学习方法。该方法先根据训练子集(又称为窗口)形成决策树。如果该树不能对所有对象给出正确的分类,那么选择一些例外加入到窗口中,重复该过程一直到形成正确的决策集。最终结果是一棵树,其叶结点是类名,中间结点是带有分枝的属性,该分枝对应该属性的某一可能值。最为典型的决策树学习系统是ID3,它采用自顶向下不回溯策略,能保证找到一个简单的树。算法和都是ID3的扩展,它们将分类领域从类别属性扩展到数值型属性。
----数据分类还有统计、粗糙集(RoughSet)等方法。线性回归和线性辨别分析是典型的统计模型。为降低决策树生成代价,人们还提出了一种区间分类器。最近也有人研究使用神经网络方法在数据库中进行分类和规则提取。
预测型知识(Prediction)
----它根据时间序列型数据,由历史的和当前的数据去推测未来的数据,也可以认为是以时间为关键属性的关联知识。
----目前,时间序列预测方法有经典的统计方法、神经网络和机器学习等。1968年Box和Jenkins提出了一套比较完善的时间序列建模理论和分析方法,这些经典的数学方法通过建立随机模型,如自回归模型、自回归滑动平均模型、求和自回归滑动平均模型和季节调整模型等,进行时间序列的预测。由于大量的时间序列是非平稳的,其特征参数和数据分布随着时间的推移而发生变化。因此,仅仅通过对某段历史数据的训练,建立单一的神经网络预测模型,还无法完成准确的预测任务。为此,人们提出了基于统计学和基于精确性的再训练方法,当发现现存预测模型不再适用于当前数据时,对模型重新训练,获得新的权重参数,建立新的模型。也有许多系统借助并行算法的计算优势进行时间序列预测。
偏差型知识(Deviation)
----此外,还可以发现其他类型的知识,如偏差型知识(Deviation),它是对差异和极端特例的描述,揭示事物偏离常规的异常现象,如标准类外的特例,数据聚类外的离群值等。所有这些知识都可以在不同的概念层次上被发现,并随着概念层次的提升,从微观到中观、到宏观,以满足不同用户不同层次决策的需要。
5 数据挖掘的功能
数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要有以下五类功能。
自动预测趋势和行为
数据挖掘自动在大型数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。一个典型的例子是市场预测问题,数据挖掘使用过去有关促销的数据来寻找未来投资中回报最大的用户,其它可预测的问题包括预报破产以及认定对指定事件最可能作出反应的群体。
关联分析
数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。
聚类
数据库中的记录可被化分为一系列有意义的子集,即聚类。聚类增强了人们对客观现实的认识,是概念描述和偏差分析的先决条件。聚类技术主要包括传统的模式识别方法和数学分类学。80年代初,Mchalski提出了概念聚类技术牞其要点是,在划分对象时不仅考虑对象之间的距离,还要求划分出的类具有某种内涵描述,从而避免了传统技术的某些片面性。
概念描述
概念描述就是对某类对象的内涵进行描述,并概括这类对象的有关特征。概念描述分为特征性描述和区别性描述,前者描述某类对象的共同特征,后者描述不同类对象之间的区别。生成一个类的特征性描述只涉及该类对象中所有对象的共性。生成区别性描述的方法很多,如决策树方法、遗传算法等。
偏差检测
数据库中的数据常有一些异常记录,从数据库中检测这些偏差很有意义。偏差包括很多潜在的知识,如分类中的反常实例、不满足规则的特例、观测结果与模型预测值的偏差、量值随时间的变化等。偏差检测的基本方法是,寻找观测结果与参照值之间有意义的差别。
6 数据挖掘常用技术
人工神经网络
仿照生理神经网络结构的非线形预测模型,通过学习进行模式识别。
决策树
代表着决策集的树形结构。
遗传算法
基于进化理论,并采用遗传结合、遗传变异、以及自然选择等设计方法的优化技术。
近邻算法
将数据集合中每一个记录进行分类的方法。
规则推导
从统计意义上对数据中的“如果-那么”规则进行寻找和推导。
采用上述技术的某些专门的分析工具已经发展了大约十年的历史,不过这些工具所面对的数据量通常较小。而现在这些技术已经被直接集成到许多大型的工业标准的数据仓库和联机分析系统中去了。
7 数据挖掘工具
基于神经网络的工具
由于对非线性数据的快速建模能力,基于神经网络的数据挖掘工具现在越来越流行。其开采过程基本上是将数据聚类,然后分类计算权值。神经网络很适合非线性数据和含噪声数据,所以在市场数据库的分析和建模方面应用广泛。
基于规则和决策树的工具
大部分数据挖掘工具采用规则发现或决策树分类技术来发现数据模式和规则,其核心是某种归纳算法。这类工具通常是对数据库的数据进行开采,生产规则和决策树,然后对新数据进行分析和预测。这类工具的主要优点是,规则和决策树都是可读的。
基于模糊逻辑的工具
其发现方法是应用模糊逻辑进行数据查询、排序等。该工具使用模糊概念和“最近”搜索技术的数据查询工具,它可以让用户指定目标,然后对数据库进行搜索,找出接近目标的所有记录,并对结果进行评估。
综合多方法工具
不少数据挖掘工具采用了多种开采方法,这类工具一般规模较大,适于大型数据库牗包括并行数据库牘。这类工具开采能力很强,但价格昂贵,并要花很长时间进行学习。
8 数据挖掘的流程
数据挖掘环境
数据挖掘是指一个完整的过程,该过程从大型数据库中挖掘先前未知的,有效的,可实用的信息,并使用这些信息做出决策或丰富知识.
数据挖掘环境可示意如下图:
数据挖掘环境框图
数据挖掘过程图
下图描述了数据挖掘的基本过程和主要步骤
数据挖掘过程的步骤
数据挖掘过程工作量
在数据挖掘中被研究的业务对象是整个过程的基础,它驱动了整个数据挖掘过程,也是检验最后结果和指引分析人员完成数据挖掘的依据和顾问.图2各步骤是按一定顺序完成的,当然整个过程中还会存在步骤间的反馈.数据挖掘的过程并不是自动的,绝大多数的工作需要人工完成.图3给出了各步骤在整个过程中的工作量之比.可以看到,60%的时间用在数据准备上,这说明了数据挖掘对数据的严格要求,而后挖掘工作仅占总工作量的10%.
确定业务对象数据准备数据处理结果分析和知识的同化
图3数据挖掘过程工作量比例
数据挖掘过程简介
过程中各步骤的大体内容如下:
1. 确定业务对象
清晰地定义出业务问题,认清数据挖掘的目的是数据挖掘的重要一步.挖掘的最后结构是不可预测的,但要探索的问题应是有预见的,为了数据挖掘而数据挖掘则带有盲目性,是不会成功的.
2. 数据准备
1) 数据的选择
搜索所有与业务对象有关的内部和外部数据信息,并从中选择出适用于数据挖掘应用的数据.
2) 数据的预处理
研究数据的质量,为进一步的分析作准备.并确定将要进行的挖掘操作的类型.
3) 数据的转换
将数据转换成一个分析模型.这个分析模型是针对挖掘算法建立的.建立一个真正适合挖掘算法的分析模型是数据挖掘成功的关键.
3. 数据挖掘
对所得到的经过转换的数据进行挖掘.除了完善从选择合适的挖掘算法外,其余一切工作都能自动地完成.
4. 结果分析
解释并评估结果.其使用的分析方法一般应作数据挖掘操作而定,通常会用到可视化技术.
5. 知识的同化
将分析所得到的知识集成到业务信息系统的组织结构中去.
数据挖掘需要的人员
数据挖掘过程的分步实现,不同的步会需要是有不同专长的人员,他们大体可以分为三类.
业务分析人员:要求精通业务,能够解释业务对象,并根据各业务对象确定出用于数据定义和挖掘算法的业务需求.
数据分析人员:精通数据分析技术,并对统计学有较熟练的掌握,有能力把业务需求转化为数据挖掘的各步操作,并为每步操作选择合适的技术.
数据管理人员:精通数据管理技术,并从数据库或数据仓库中收集数据.
从上可见,数据挖掘是一个多种专家合作的过程,也是一个在资金上和技术上高投入的过程.这一过程要反复进行牞在反复过程中,不断地趋近事物的本质,不断地优先问题的解决方案。数据重组和细分添加和拆分记录选取数据样本可视化数据探索聚类分析神经网络、决策树数理统计、时间序列结论综合解释评价数据知识数据取样数据探索数据调整模型化评价。
9 数据挖掘未来研究方向
----当前,DMKD研究方兴未艾,其研究与开发的总体水平相当于数据库技术在70年代所处的地位,迫切需要类似于关系模式、DBMS系统和SQL查询语言等理论和方法的指导,才能使DMKD的应用得以普遍推广。预计在本世纪,DMKD的研究还会形成更大的高潮,研究焦点可能会集中到以下几个方面:
发现语言的形式化描述,即研究专门用于知识发现的数据挖掘语言,也许会像SQL语言一样走向形式化和标准化;
寻求数据挖掘过程中的可视化方法,使知识发现的过程能够被用户理解,也便于在知识发现的过程中进行人机交互;
研究在网络环境下的数据挖掘技术(WebMining),特别是在因特网上建立DMKD服务器,并且与数据库服务器配合,实现WebMining;
加强对各种非结构化数据的开采(DataMiningforAudio&Video),如对文本数据、图形数据、视频图像数据、声音数据乃至综合多媒体数据的开采;
处理的数据将会涉及到更多的数据类型,这些数据类型或者比较复杂,或者是结构比较独特。为了处理这些复杂的数据,就需要一些新的和更好的分析和建立模型的方法,同时还会涉及到为处理这些复杂或独特数据所做的费时和复杂数据准备的一些工具和软件。
交互式发现;
知识的维护更新。
但是,不管怎样,需求牵引与市场推动是永恒的,DMKD将首先满足信息时代用户的急需,大量的基于DMKD的决策支持软件产品将会问世。只有从数据中有效地提取信息,从信息中及时地发现知识,才能为人类的思维决策和战略发展服务。也只有到那时,数据才能够真正成为与物质、能源相媲美的资源,信息时代才会真正到来。
10 数据挖掘热点
就目前来看,将来的几个热点包括网站的数据挖掘(Web site data mining)、生物信息或基因(Bioinformatics/genomics)的数据挖掘及其文本的数据挖掘(Textual mining)。下面就这几个方面加以简单介绍。
网站的数据挖掘(Web site data mining)
需求
随着Web技术的发展,各类电子商务网站风起云涌,建立起一个电子商务网站并不困难,困难的是如何让您的电子商务网站有效益。要想有效益就必须吸引客户,增加能带来效益的客户忠诚度。电子商务业务的竞争比传统的业务竞争更加激烈,原因有很多方面,其中一个因素是客户从一个电子商务网站转换到竞争对手那边,只需点击几下鼠标即可。网站的内容和层次、用词、标题、奖励方案、服务等任何一个地方都有可能成为吸引客户、同时也可能成为失去客户的因素。而同时电子商务网站每天都可能有上百万次的在线交易,生成大量的记录文件(Logfiles)和登记表,如何对这些数据进行分析和挖掘,充分了解客户的喜好、购买模式,甚至是客户一时的冲动,设计出满足于不同客户群体需要的个性化网站,进而增加其竞争力,几乎变得势在必行。若想在竞争中生存进而获胜,就要比您的竞争对手更了解客户。
电子商务网站数据挖掘
在对网站进行数据挖掘时,所需要的数据主要来自于两个方面:一方面是客户的背景信息,此部分信息主要来自于客户的登记表;而另外一部分数据主要来自浏览者的点击流(Click-stream),此部分数据主要用于考察客户的行为表现。但有的时候,客户对自己的背景信息十分珍重,不肯把这部分信息填写在登记表上,这就会给数据分析和挖掘带来不便。在这种情况之下,就不得不从浏览者的表现数据中来推测客户的背景信息,进而再加以利用。
就分析和建立模型的技术和算法而言,网站的数据挖掘和原来的数据挖掘差别并不是特别大,很多方法和分析思想都可以运用。所不同的是网站的数据格式有很大一部分来自于点击流,和传统的数据库格式有区别。因而对电子商务网站进行数据挖掘所做的主要工作是数据准备。目前,有很多厂商正在致力于开发专门用于网站挖掘的软件。
生物信息或基因的数据挖掘
生物信息或基因数据挖掘则完全属于另外一个领域,在商业上很难讲有多大的价值,但对于人类却受益非浅。例如,基因的组合千变万化,得某种病的人的基因和正常人的基因到底差别多大?能否找出其中不同的地方,进而对其不同之处加以改变,使之成为正常基因?这都需要数据挖掘技术的支持。
对于生物信息或基因的数据挖掘和通常的数据挖掘相比,无论在数据的复杂程度、数据量还有分析和建立模型的算法而言,都要复杂得多。从分析算法上讲,更需要一些新的和好的算法。现在很多厂商正在致力于这方面的研究。但就技术和软件而言,还远没有达到成熟的地步。
文本的数据挖掘(Textualmining)
人们很关心的另外一个话题是文本数据挖掘。举个例子,在客户服务中心,把同客户的谈话转化为文本数据,再对这些数据进行挖掘,进而了解客户对服务的满意程度和客户的需求以及客户之间的相互关系等信息。从这个例子可以看出,无论是在数据结构还是在分析处理方法方面,文本数据挖掘和前面谈到的数据挖掘相差很大。文本数据挖掘并不是一件容易的事情,尤其是在分析方法方面,还有很多需要研究的专题。目前市场上有一些类似的软件,但大部分方法只是把文本移来移去,或简单地计算一下某些词汇的出现频率,并没有真正的分析功能。
随着计算机计算能力的发展和业务复杂性的提高,数据的类型会越来越多、越来越复杂,数据挖掘将发挥出越来越大的作用。
11 Web数据挖掘与XML
Web数据挖掘的难点
Web上有海量的数据信息,怎样对这些数据进行复杂的应用成了现今数据库技术的研究热点。数据挖掘就是从大量的数据中发现隐含的规律性的内容,解决数据的应用质量问题。充分利用有用的数据,废弃虚伪无用的数据,是数据挖掘技术的最重要的应用。相对于Web的数据而言,传统的数据库中的数据结构性很强,即其中的数据为完全结构化的数据,而Web上的数据最大特点就是半结构化。所谓半结构化是相对于完全结构化的传统数据库的数据而言。显然,面向Web的数据挖掘比面向单个数据仓库的数据挖掘要复杂得多。
1.异构数据库环境
从数据库研究的角度出发,Web网站上的信息也可以看作一个数据库,一个更大、更复杂的数据库。Web上的每一个站点就是一个数据源,每个数据源都是异构的,因而每一站点之间的信息和组织都不一样,这就构成了一个巨大的异构数据库环境。如果想要利用这些数据进行数据挖掘,首先,必须要研究站点之间异构数据的集成问题,只有将这些站点的数据都集成起来,提供给用户一个统一的视图,才有可能从巨大的数据资源中获取所需的东西。其次,还要解决Web上的数据查询问题,因为如果所需的数据不能很有效地得到,对这些数据进行分析、集成、处理就无从谈起。
2.半结构化的数据结构
Web上的数据与传统的数据库中的数据不同,传统的数据库都有一定的数据模型,可以根据模型来具体描述特定的数据。而Web上的数据非常复杂,没有特定的模型描述,每一站点的数据都各自独立设计,并且数据本身具有自述性和动态可变性。因而,Web上的数据具有一定的结构性,但因自述层次的存在,从而是一种非完全结构化的数据,这也被称之为半结构化数据。半结构化是Web上数据的最大特点。
3.解决半结构化的数据源问题
Web数据挖掘技术首要解决半结构化数据源模型和半结构化数据模型的查询与集成问题。解决Web上的异构数据的集成与查询问题,就必须要有一个模型来清晰地描述Web上的数据。针对Web上的数据半结构化的特点,寻找一个半结构化的数据模型是解决问题的关键所在。除了要定义一个半结构化数据模型外,还需要一种半结构化模型抽取技术,即自动地从现有数据中抽取半结构化模型的技术。面向Web的数据挖掘必须以半结构化模型和半结构化数据模型抽取技术为前提。
XML与Web数据挖掘技术
以XML为基础的新一代WWW环境是直接面对Web数据的,不仅可以很好地兼容原有的Web应用,而且可以更好地实现Web中的信息共享与交换。XML可看作一种半结构化的数据模型,可以很容易地将XML的文档描述与关系数据库中的属性一对应起来,实施精确地查询与模型抽取。
的产生与发展
XML(extensible Markup Language)是由万维网协会(W3C)设计,特别为Web应用服务的SGML(Standard General Markup Language)的一个重要分支。总的来说,XML是一种中介标示语言(Meta-markup Language),可提供描述结构化资料的格式,详细来说,XML是一种类似于HTML,被设计用来描述数据的语言。XML提供了一种独立的运行程序的方法来共享数据,它是用来自动描述信息的一种新的标准语言,它能使计算机通信把Internet的功能由信息传递扩大到人类其他多种多样的活动中去。XML由若干规则组成,这些规则可用于创建标记语言,并能用一种被称作分析程序的简明程序处理所有新创建的标记语言,正如HTML为第一个计算机用户阅读Internet文档提供一种显示方式一样,XML也创建了一种任何人都能读出和写入的世界语。XML解决了HTML不能解决的两个Web问题,即Internet发展速度快而接入速度慢的问题,以及可利用的信息多,但难以找到自己需要的那部分信息的问题。XML能增加结构和语义信息,可使计算机和服务器即时处理多种形式的信息。因此,运用XML的扩展功能不仅能从Web服务器下载大量的信息,还能大大减少网络业务量。
XML中的标志(TAG)是没有预先定义的,使用者必须要自定义需要的标志,XML是能够进行自解释(Self Describing)的语言。XML使用DTD(Document Type Definition文档类型定义)来显示这些数据,XSL(eXtensible Style Sheet Language)是一种来描述这些文档如何显示的机制,它是XML的样式表描述语言。XSL的历史比HTML用的CSS(层叠式样式表Cascading Style Sheets)还要悠久,XSL包括两部分:一个用来转换XML文档的方法;一个用来格式化XML文档的方法。XLL(eXtensible Link Language)是XML连接语言,它提供XML中的连接,与HTML中的类似,但功能更强大。使用XLL,可以多方向连接,且连接可以存在于对象层级,而不仅仅是页面层级。由于XML能够标记更多的信息,所以它就能使用户很轻松地找到他们需要的信息。利用XML,Web设计人员不仅能创建文字和图形,而且还能构建文档类型定义的多层次、相互依存的系统、数据树、元数据、超链接结构和样式表。
的主要特点
正是XML的特点决定了其卓越的性能表现。XML作为一种标记语言,有许多特点:
(1)简单。XML经过精心设计,整个规范简单明了,它由若干规则组成,这些规则可用于创建标记语言,并能用一种常常称作分析程序的简明程序处理所有新创建的标记语言。XML能创建一种任何人都能读出和写入的世界语,这种创建世界语的功能叫做统一性功能。如XML创建的标记总是成对出现,以及依靠称作统一代码的新的编码标准。
(2)开放。XML是SGML在市场上有许多成熟的软件可用来帮助编写、管理等,开放式标准XML的基础是经过验证的标准技术,并针对网络做最佳化。众多业界顶尖公司,与W3C的工作群组并肩合作,协助确保交互作业性,支持各式系统和浏览器上的开发人员、作者和使用者,以及改进XML标准。XML解释器可以使用编程的方法来载入一个XML的文档,当这个文档被载入以后,用户就可以通过XML文件对象模型来获取和操纵整个文档的信息,加快了网络运行速度。
(3)高效且可扩充。支持复用文档片断,使用者可以发明和使用自己的标签,也可与他人共享,可延伸性大,在XML中,可以定义无限量的一组标注。XML提供了一个标示结构化资料的架构。一个XML组件可以宣告与其相关的资料为零售价、营业税、书名、数量或其它任何数据元素。随着世界范围内的许多机构逐渐采用XML标准,将会有更多的相关功能出现:一旦锁定资料,便可以使用任何方式透过电缆线传递,并在浏览器中呈现,或者转交到其他应用程序做进一步的处理。XML提供了一个独立的运用程序的方法来共享数据,使用DTD,不同的组中的人就能够使用共同的DTD来交换数据。你的应用程序可以使用这个标准的DTD来验证你接受到的数据是否有效,你也可以使用一个DTD来验证你自己的数据。
(4)国际化。标准国际化,且支持世界上大多数文字。这源于依靠它的统一代码的新的编码标准,这种编码标准支持世界上所有以主要语言编写的混合文本。在HTML中,就大多数字处理而言,一个文档一般是用一种特殊语言写成的,不管是英语,还是日语或阿拉伯语,如果用户的软件不能阅读特殊语言的字符,那么他就不能使用该文档。但是能阅读XML语言的软件就能顺利处理这些不同语言字符的任意组合。因此,XML不仅能在不同的计算机系统之间交换信息,而且能跨国界和超越不同文化疆界交换信息。
在Web数据挖掘中的应用
XML已经成为正式的规范,开发人员能够用XML的格式标记和交换数据。XML在三层架构上为数据处理提供了很好的方法。使用可升级的三层模型,XML可以从存在的数据中产生出来,使用XML结构化的数据可以从商业规范和表现形式中分离出来。
促进XML应用的是那些用标准的HTML无法完成的Web应用。这些应用从大的方面讲可以被分成以下四类:需要Web客户端在两个或更多异质数据库之间进行通信的应用;试图将大部分处理负载从Web服务器转到Web客户端的应用;需要Web客户端将同样的数据以不同的浏览形式提供给不同的用户的应用;需要智能Web代理根据个人用户的需要裁减信息内容的应用。显而易见,这些应用和Web的数据挖掘技术有着重要的联系,基于Web的数据挖掘必须依靠它们来实现。
XML给基于Web的应用软件赋予了强大的功能和灵活性,因此它给开发者和用户带来了许多好处。比如进行更有意义的搜索,并且Web数据可被XML唯一地标识。没有XML,搜索软件必须了解每个数据库是如何构建的,但这实际上是不可能的,因为每个数据库描述数据的格式几乎都是不同的。由于不同来源数据的集成问题的存在,现在搜索多样的不兼容的数据库实际上是不可能的。XML能够使不同来源的结构化的数据很容易地结合在一起。软件代理商可以在中间层的服务器上对从后端数据库和其它应用处来的数据进行集成。然后,数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。XML的扩展性和灵活性允许它描述不同种类应用软件中的数据,从描述搜集的Web页到数据记录,从而通过多种应用得到数据。同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。利用XML,用户可以方便地进行本地计算和处理,XML格式的数据发送给客户后,客户可以用应用软件解析数据并对数据进行编辑和处理。使用者可以用不同的方法处理数据,而不仅仅是显示它。XML文档对象模式(DOM)允许用脚本或其他编程语言处理数据,数据计算不需要回到服务器就能进行。XML可以被利用来分离使用者观看数据的界面,使用简单灵活开放的格式,可以给Web创建功能强大的应用软件,而原来这些软件只能建立在高端数据库上。另外,数据发到桌面后,能够用多种方式显示。
XML还可以通过以简单开放扩展的方式描述结构化的数据,XML补充了HTML,被广泛地用来描述使用者界面。HTML描述数据的外观,而XML描述数据本身。由于数据显示与内容分开,XML定义的数据允许指定不同的显示方式,使数据更合理地表现出来。本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。CSS和XSL为数据的显示提供了公布的机制。通过XML,数据可以粒状地更新。每当一部分数据变化后,不需要重发整个结构化的数据。变化的元素必须从服务器发送给客户,变化的数据不需要刷新整个使用者的界面就能够显示出来。但在目前,只要一条数据变化了,整一页都必须重建。这严重限制了服务器的升级性能。XML也允许加进其他数据,比如预测的温度。加入的信息能够进入存在的页面,不需要浏览器重新发一个新的页面。XML应用于客户需要与不同的数据源进行交互时,数据可能来自不同的数据库,它们都有各自不同的复杂格式。但客户与这些数据库间只通过一种标准语言进行交互,那就是XML。由于XML的自定义性及可扩展性,它足以表达各种类型的数据。客户收到数据后可以进行处理,也可以在不同数据库间进行传递。总之,在这类应用中,XML解决了数据的统一接口问题。但是,与其他的数据传递标准不同的是,XML并没有定义数据文件中数据出现的具体规范,而是在数据中附加TAG来表达数据的逻辑结构和含义。这使XML成为一种程序能自动理解的规范。
XML应用于将大量运算负荷分布在客户端,即客户可根据自己的需求选择和制作不同的应用程序以处理数据,而服务器只须发出同一个XML文件。如按传统的“Client/Server”工作方式,客户向服务器发出不同的请求,服务器分别予以响应,这不仅加重服务器本身的负荷,而且网络管理者还须事先调查各种不同的用户需求以做出相应不同的程序,但假如用户的需求繁杂而多变,则仍然将所有业务逻辑集中在服务器端是不合适的,因为服务器端的编程人员可能来不及满足众多的应用需求,也来不及跟上需求的变化,双方都很被动。应用XML则将处理数据的主动权交给了客户,服务器所作的只是尽可能完善、准确地将数据封装进XML文件中,正是各取所需、各司其职。XML的自解释性使客户端在收到数据的同时也理解数据的逻辑结构与含义,从而使广泛、通用的分布式计算成为可能。
XML还被应用于网络代理,以便对所取得的信息进行编辑、增减以适应个人用户的需要。有些客户取得数据并不是为了直接使用而是为了根据需要组织自己的数据库。比方说,教育部门要建立一个庞大的题库,考试时将题库中的题目取出若干组成试卷,再将试卷封装进XML文件,接下来在各个学校让其通过一个过滤器,滤掉所有的答案,再发送到各个考生面前,未经过滤的内容则可直接送到老师手中,当然考试过后还可以再传送一份答案汇编。此外,XML文件中还可以包含进诸如难度系数、往年错误率等其他相关信息,这样只需几个小程序,同一个XML文件便可变成多个文件传送到不同的用户手中。
面向Web的数据挖掘是一项复杂的技术,由于Web数据挖掘比单个数据仓库的挖掘要复杂的多,因而面向Web的数据挖掘成了一个难以解决的问题。而XML的出现为解决Web数据挖掘的难题带来了机会。由于XML能够使不同来源的结构化的数据很容易地结合在一起,因而使搜索多样的不兼容的数据库能够成为可能,从而为解决Web数据挖掘难题带来了希望。XML的扩展性和灵活性允许XML描述不同种类应用软件中的数据,从而能描述搜集的Web页中的数据记录。同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。作为表示结构化数据的一个工业标准,XML为组织、软件开发者、Web站点和终端使用者提供了许多有利条件。相信在以后,随着XML作为在Web上交换数据的一种标准方式的出现,面向Web的数据挖掘将会变得非常轻松。
12 数据挖掘应用
12. 1 数据挖掘解决的典型商业问题
需要强调的是,数据挖掘技术从一开始就是面向应用的。目前,在很多领域,数据挖掘(data mining)都是一个很时髦的词,尤其是在如银行、电信、保险、交通、零售(如超级市场)等商业领域。数据挖掘所能解决的典型商业问题包括:数据库营销(Database Marketing)、客户群体划分(Customer Segmentation & Classification)、背景分析(Profile Analysis)、交叉销售(Cross-selling)等市场分析行为,以及客户流失性分析(Churn Analysis)、客户信用记分(Credit Scoring)、欺诈发现(Fraud Detection)等等。
12. 2 数据挖掘在市场营销的应用
数据挖掘技术在企业市场营销中得到了比较普遍的应用,它是以市场营销学的市场细分原理为基础,其基本假定是“消费者过去的行为是其今后消费倾向的最好说明”。 通过收集、加工和处理涉及消费者消费行为的大量信息,确定特定消费群体或个体的兴趣、消费习惯、消费倾向和消费需求,进而推断出相应消费群体或个体下一步的消费行为,然后以此为基础,对所识别出来的消费群体进行特定内容的定向营销,这与传统的不区分消费者对象特征的大规模营销手段相比,大大节省了营销成本,提高了营销效果,从而为企业带来更多的利润。
商业消费信息来自市场中的各种渠道。例如,每当我们用信用卡消费时,商业企业就可以在信用卡结算过程收集商业消费信息,记录下我们进行消费的时间、地点、感兴趣的商品或服务、愿意接收的价格水平和支付能力等数据;当我们在申办信用卡、办理汽车驾驶执照、填写商品保修单等其他需要填写表格的场合时,我们的个人信息就存入了相应的业务数据库;企业除了自行收集相关业务信息之外,甚至可以从其他公司或机构购买此类信息为自己所用。 这些来自各种渠道的数据信息被组合,应用超级计算机、并行处理、神经元网络、模型化算法和其他信息处理技术手段进行处理,从中得到商家用于向特定消费群体或个体进行定向营销的决策信息。这种数据信息是如何应用的呢?举一个简单的例子,当银行通过对业务数据进行挖掘后,发现一个银行帐户持有者突然要求申请双人联合帐户时,并且确认该消费者是第一次申请联合帐户,银行会推断该用户可能要结婚了,它就会向该用户定向推销用于购买房屋、支付子女学费等长期投资业务,银行甚至可能将该信息卖给专营婚庆商品和服务的公司。数据挖掘构筑竞争优势。 在市场经济比较发达的国家和地区,许多公司都开始在原有信息系统的基础上通过数据挖掘对业务信息进行深加工,以构筑自己的竞争优势,扩大自己的营业额。美国运通公司(American Express)有一个用于记录信用卡业务的数据库,数据量达到54亿字符,并仍在随着业务进展不断更新。运通公司通过对这些数据进行挖掘,制定了“关联结算(Relation ship Billing)优惠”的促销策略,即如果一个顾客在一个商店用运通卡购买一套时装,那么在同一个商店再买一双鞋,就可以得到比较大的折扣,这样既可以增加商店的销售量,也可以增加运通卡在该商店的使用率。再如,居住在伦敦的持卡消费者如果最近刚刚乘英国航空公司的航班去过巴黎,那么他可能会得到一个周末前往纽约的机票打折优惠卡。
基于数据挖掘的营销,常常可以向消费者发出与其以前的消费行为相关的推销材料。卡夫(Kraft)食品公司建立了一个拥有3000万客户资料的数据库,数据库是通过收集对公司发出的优惠券等其他促销手段作出积极反应的客户和销售记录而建立起来的,卡夫公司通过数据挖掘了解特定客户的兴趣和口味,并以此为基础向他们发送特定产品的优惠券,并为他们推荐符合客户口味和健康状况的卡夫产品食谱。美国的读者文摘(Reader's Digest)出版公司运行着一个积累了40年的业务数据库,其中容纳有遍布全球的一亿多个订户的资料,数据库每天24小时连续运行,保证数据不断得到实时的更新,正是基于对客户资料数据库进行数据挖掘的优势,使读者文摘出版公司能够从通俗杂志扩展到专业杂志、书刊和声像制品的出版和发行业务,极大地扩展了自己的业务。
基于数据挖掘的营销对我国当前的市场竞争中也很具有启发意义,我们经常可以看到繁华商业街上一些厂商对来往行人不分对象地散发大量商品宣传广告,其结果是不需要的人随手丢弃资料,而需要的人并不一定能够得到。如果搞家电维修服务的公司向在商店中刚刚购买家电的消费者邮寄维修服务广告,卖特效药品的厂商向医院特定门诊就医的病人邮寄广告,肯定会比漫无目的的营销效果要好得多。
12. 3 成功案例
1 电话收费和管理办法
加拿大BC省电话公司要求加拿大Simon Fraser大学KDD研究组根据其拥有的十多年的客户数据,总结、分析并提出新的电话收费和管理办法,制定既有利于公司又有利于客户的优惠政策。
2 竞技运动中的数据挖掘
美国著名的国家篮球队NBA的教练,利用IBM公司提供的数据挖掘工具临场决定替换队员。想象你是NBA的教练,你靠什么带领你的球队取得胜利呢?当然,最容易想到的是全场紧逼、交叉扯动和快速抢断等具体的战术和技术。但是今天,NBA的教练又有了他们的新式武器:数据挖掘。大约20个NBA球队使用了IBM公司开发的数据挖掘应用软件Advanced Scout系统来优化他们的战术组合。例如Scout就因为研究了魔术队队员不同的布阵安排,在与迈阿密热队的比赛中找到了获胜的机会。
----系统分析显示魔术队先发阵容中的两个后卫安佛尼.哈德卫(Anfernee Hardaway)和伯兰.绍(Brian Shaw)在前两场中被评为-17分,这意味着他俩在场上,本队输掉的分数比得到的分数多17分。然而,当哈德卫与替补后卫达利尔.阿姆斯创(Darrell Armstrong)组合时,魔术队得分为正14分。
----在下一场中,魔术队增加了阿姆斯创的上场时间。此着果然见效:阿姆斯创得了21分,哈德卫得了42分,魔术队以88比79获胜。魔术队在第四场让阿姆斯创进入先发阵容,再一次打败了热队。在第五场比赛中,这个靠数据挖掘支持的阵容没能拖住热队,但Advanced Scout毕竟帮助了魔术队赢得了打满5场,直到最后才决出胜负的机会。
----Advanced Scout是一个数据分析工具,教练可以用便携式电脑在家里或在路上挖掘存储在NBA中心的服务器上的数据。每一场比赛的事件都被统计分类,按得分、助攻、失误等等。时间标记让教练非常容易地通过搜索NBA比赛的录像来理解统计发现的含义。例如:教练通过Advanced Scout发现本队的球员在与对方一个球星对抗时有犯规纪录,他可以在对方球星与这个队员“头碰头”的瞬间分解双方接触的动作,进而设计合理的防守策略。
----Advanced Scout的开发人,因德帕尔.布罕德瑞,开发该应用时他正在IBM的研究中心当研究员,他演示了一个技术新手应该如何使用数据挖掘。布罕德瑞说:“教练们可以完全没有统计学的培训,但他们可以利用数据挖掘制定策略”。与此同时,另一个正式的体育联盟,国家曲棍球联盟,正在开发自己的数据挖掘应用NHL-ICE,联盟与IBM建立了一个技术型的合资公司,去年11月推出一个电子实时的比赛计分和统计系统。在原理上是一个与Advanced Scout相似的数据挖掘应用,可以让教练、广播员、新闻记者及球迷挖掘NHL的统计。当他们访问NHL的Web站点时,球迷能够使用该系统循环看联盟的比赛,同时广播员和新闻记者可以挖掘统计数据,找花边新闻为他们的实况评述添油加醋。
----当然,所有系统都有其局限性。所以不要期望这样的数据挖掘可以帮助一支球队找到赢得足球世界杯的策略。
3 数据挖掘技术在商业银行中的应用
金融事务需要搜集和处理大量的数据,由于银行在金融领域的地位、工作性质、业务特点以及激烈的市场竞争决定了它对信息化、电子化比其它领域有更迫切的要求。利用数据挖掘技术可以帮助银行产品开发部门描述客户以往的需求趋势,并预测未来。美国商业银行是发达国家商业银行的典范,许多地方值得我国学习和借鉴。
数据挖掘技术在美国银行金融领域应用广泛。金融事务需要搜集和处理大量数据,对这些数据进行分析,发现其数据模式及特征,然后可能发现某个客户、消费群体或组织的金融和商业兴趣,并可观察金融市场的变化趋势。商业银行业务的利润和风险是共存的。为了保证最大的利润和最小的风险,必须对帐户进行科学的分析和归类,并进行信用评估。Mellon银行使用Intelligent Agent数据挖掘软件提高销售和定价金融产品的精确度,如家庭普通贷款。零售信贷客户主要有两类,一类很少使用信贷限额(低循环者),另一类能够保持较高的未清余额(高循环者)。每一类都代表着销售的挑战。低循环者代表缺省和支出注销费用的危险性较低,但会带来极少的净收入或负收入,因为他们的服务费用几乎与高循环者的相同。银行常常为他们提供项目,鼓励他们更多地使用信贷限额或找到交叉销售高利润产品的机会。高循环者由高和中等危险元件构成。高危险分段具有支付缺省和注销费用的潜力。对于中等危险分段,销售项目的重点是留住可获利的客户并争取能带来相同利润的新客户。但根据新观点,用户的行为会随时间而变化。分析客户整个生命周期的费用和收入就可以看出谁是最具创利潜能的。Mellon银行认为“根据市场的某一部分进行定制”能够发现最终用户并将市场定位于这些用户。但是,要这么做就必须了解关于最终用户特点的信息。数据挖掘工具为Mellon银行提供了获取此类信息的途径。Mellon银行销售部在先期数据挖掘项目上使用Intelligence Agent寻找信息,主要目的是确定现有Mellon用户购买特定附加产品:家庭普通信贷限额的倾向,利用该工具可生成用于检测的模型。据银行官员称:Intelligence Agent可帮助用户增强其商业智能,如交往、分类或回归分析,依赖这些能力,可对那些有较高倾向购买银行产品、服务产品和服务的客户进行有目的的推销。该官员认为,该软件可反馈用于分析和决策的高质量信息,然后将信息输入产品的算法。Intelligence Agent还有可定制能力。
美国Firstar银行使用Marksman数据挖掘工具,根据客户的消费模式预测何时为客户提供何种产品。Firstar银行市场调查和数据库营销部经理发现:公共数据库中存储着关于每位消费者的大量信息,关键是要透彻分析消费者投入到新产品中的原因,在数据库中找到一种模式,从而能够为每种新产品找到最合适的消费者。Marksman能读取800到1000个变量并且给它们赋值,根据消费者是否有家庭财产贷款、赊帐卡、存款证或其它储蓄、投资产品,将它们分成若干组,然后使用数据挖掘工具预测何时向每位消费者提供哪种产品。预测准客户的需要是美国商业银行的竞争优势。
4 因特网筛选
最近,还有不少DMKD产品用来筛选因特网上的新闻,保护用户不受无聊电子邮件和商业推销的干扰,很受欢迎。
13 实施数据挖掘项目考虑的问题
谈到数据挖掘应从以下三方面加以考虑,一是用数据挖掘解决什么样的商业问题,二是为进行数据挖掘所做的数据准备,三是数据挖掘的各种分析算法。
数据挖掘的分析算法主要来自于以下两个方面:统计分析和人工智能(机器学习、模式识别等)。数据挖掘研究人员和数据挖掘软件供应商,在这一方面所做的主要工作是优化现有的一些算法,以适应大数据量。另外需要强调的是,任何一种数据挖掘的算法,不管是统计分析方法、神经元网络、各种树分析方法,还是遗传算法,没有一种算法是万能的。不同的商业问题,需要用不同的方法去解决。即使对于同一个商业问题,可能有多种算法,这个时候,也需要评估对于这一特定问题和特定数据哪一种算法表现好。
做数据挖掘研究的人,往往把主要的精力用于改进现有算法和研究新算法上。人们都知道数据准备是必不可少的一步,但很少有人去真正花时间和精力去研究。其实数据挖掘最后成功与失败,是否有经济效益,数据准备起到了至关重要的作用。数据准备包含很多方面:一是从多种数据源去综合数据挖掘所需要的数据,保证数据的综合性、易用性、数据的质量和数据的时效性,这有可能要用到数据仓库的思想和技术;另一方面就是如何从现有数据中衍生出所需要的指标,这主要取决于数据挖掘者的分析经验和工具的方便性。
众所周知,SQL是广泛用于数据库查询的语言,有很多数据挖掘软件提供商利用SQL来为数据挖掘做数据准备,但就笔者多年来的分析经验和同其他专家探讨感觉到,SQL在很多时候有些力不从心,因为数据挖掘和分析的一些算法通常要求数据具有一定的格式和规范性。
还需要强调的一点是,人们通常把数据挖掘工具看得过份神秘,认为只要有了一个数据挖掘工具,就能自动挖掘出所需要的信息,就能更好地进行企业运作,这是认识上的一个误区。其实要想真正做好数据挖掘,数据挖掘工具只是其中的一个方面,同时还需要对企业业务的深入了解和数据分析经验。一个企业要想在未来的市场中具有竞争力,必须有一些数据挖掘方面的专家,专门从事数据分析和数据挖掘工作。再同其他部门协调,把挖掘出来的信息供管理者决策参考,最后把挖掘出的知识物化。在国内的企业中,还很少有决策人员认识到这一点。如果管理者没有这方面的意识,数据挖掘和数据分析就很难发挥应有的作用,很容易走向两个极端,一是认为数据挖掘没有用处,二是开始认为数据挖掘是万能的。如此得到的结果往往与初始期望相去太远。
14 实施数据挖掘项目考虑的问题
1. 超大规模数据库和高维数据问题;
2. 数据丢失问题;
3. 变化的数据和知识问题;
4. 模式的易懂性问题;
5. 非标准格式的数据、多媒体数据、面向对象数据处理问题;
6. 与其他系统的集成问题;
7. 网络与分布式环境下的KDD问题。
8. 个人隐私问题
当然数据挖掘也会带来一些社会问题,其中最敏感的要属个人隐私问题。当消费者感觉到他们的个人信息被非授权使用、滥用甚至出卖时,他们会感到他们的个人隐私受到了严重侵害。例如,在西方有的警察为了防止来自罪犯的报复,往往要注意保守自己家庭地址和电话号码不被泄露,但当他的新生婴儿在医院出生后,医院可能会将相应的信息出卖给专营新生儿用品或服务的公司,使他全然失去安全感。也许当你用信用卡为你妻子的妇科诊疗付费后,你会回家后收到来自保险公司的妇科保险征订单、来自厂商的妇科保健用品广告等,你会如何感受?正是由于这种状况,在有些发达国家,许多人认为政府和商业机构对他们个人的事知道得太多了,为此,他们宁可放弃使用信用卡消费。
特例情况分析
张宝生 bszhang@
很多时候,会有一些记录与通常的行为不一样,对于那些跟数据库中其他的记录不相符合的记录,我们称之为outliers。
Outliers可能在聚集运行或者检测的时候被发现,比如一个人的年龄是999,这个在对数据库进行检测的时候就会被发现。还有,就是outliers可能是本身就固有的,而不是一个错误,比如部门经理的工资就比一般员工的工资高出很多。
很多数据挖掘技术都力图将outliers的影响降到最小,直至完全没有。但是,这有可能失去一些重要的隐藏的信息,因为对于一方来讲是“坏”的东西而对于另外的一方来讲很可能是重要的东西。换句话说,这个“特例”可能有特别的作用,例如发现诈骗行为。因此,发现和分析“诈骗行为”是一相很有意义的数据挖掘任务,我称为“outlier mining”。
outlier mining的应用是很广泛的,除了上面说的“欺骗发现”以外,它还能够发现收入特别低或者特别高的顾客的购买行为。outlier mining可以这么来描述:给定n个个记录,和k(我们期望得到的outlier的个数);发现k个与其他的记录最不相象的记录。这个过程可以看成2个子过程:1,首先定义什么样的记录被称为“特例”;2,根据上面的定义,找到一个很有效的方法来发现这些特例。
在这篇文章里,我们介绍了三种方法来发现outlier:
1,基于统计的方法:
统计的方法先假定在训练集中有一个分布模式存在,并且用一个“discordancy test”的方法来定义和发现outliers。这个方法的应用首先要设定一些参数——假定的分布模式,分布的参数,期望得到的outlier的的个数等等。
工作过程:首先检测2个假说,一个 working hypothesis和 alternative hypothesis。working hypothesis,H,是说所有的记录的数据都应该遵从一个分布模式,F,然后用一个“discordancy test”来检测记录Oi是否与F的关系很大。这儿的“discordancy test”是根据对于数据的了解以及F的选择得出的。这儿,通过T计算出Oi对应的值vi,如果SP(vi)=prob(T>vi)的值很小的话,我们就可以考虑Oi是个outlier。
2,基于距离的方法:
如果一个记录的距离大于d的邻居的个数大于一个设定值p的话,就可以认为这个记录是个outlier。换句话说,就是这个记录没有足够的邻居数目,这儿的邻居是根据距离来确定的。
Index-based algorithm:给定一个数据集,这个算法检查每一个记录o的d半径的邻居个数,定义M为一个outlier的最大d-邻居个数,那么一旦一个记录o有M+1个d-邻居,显然这个记录不是个outlier。
Nest-loop algorithm:与上一个方法相比,它优点在于减少输入、出个数,提高储存效率。
Cell-based algorithm:这种方法是将数据集分成c个cells,每一个cell有两层,第一层有1个cell的厚度,第二层有2*sqrt(k)个cell的厚度。这个算法是一个cell一个cell地来找outlier。对于一个cell,我们计算三个量:在这个cell内的记录个数,在第一层的记录个数,在第二层的记录的个数,分别用cell_count,cell_+_1_layer-count, cell_+_2_layer-count。
那么这个方法是怎样来计算outlier的呢?首先计算cell_+_1_layer-count,如果它的值大于M,那么这个cell内的所有的记录都不是outlier,如果它的值小于后者等于M, 那么接着计算cell_+_2_layer-count,如果它的值小于后者等于M,那么cell中所有的记录都可以认为是outlier。否则我们按照d-邻居的方法来一个一个地检查这层中的记录。
3, 基于背离度的方法:
这种方法是根据一个数据集中的主要特征来判定outlier的,那些与这个主要特征背离很大的记录就被认为是一个outlier。
Sequential exception technique:给定一个有n个记录的数据集S,首先建立它的一个记录子集序列,{S1,S2,S3,…Sm},这儿的Sj包含Sj-1。
在这个序列中我们可以计算子集间的不相象性,下面介绍几个关键的概念。
Eeception set:它定义为outlier的集合。
Dissimilarity functuion:这个函数计算在一个集合中记录的不相象性,如果各个记录之间越象,那么这个值就越小,而记录之间背离读越大,则这个值就越大。
Cardinality function:它计算在给定的一个集合中记录的个数。
Smoothing factor:这个函数计算了从原集合S中去除一个子集后Dissimilarity的减少值,那个减少的值最多的子集就是outlier。
聚集的方法小节:
这篇文章很全面的介绍了聚集:包括聚集的定义,聚集的应用,聚集的几种常用的算法,,最后还介绍了特例的检测。
聚集的算法包括分割的聚集方法,层次聚集,基于密度的方法,和基于模型的方法。
挖掘基于时间序列的数据
张宝生 bszhang@
时间序列的数据库内某个字段的值是随着时间而不断变化的,例如股票价格每天的涨跌,科学实验,浏览网页的次序等。
这儿,我们运用数据挖掘的方法来对这些数据库进行“趋势分析”,“相似搜索”,“挖掘序列模式”,“时段模式”。
一, 趋势分析:
一个变量Y,表示某一支股票每天的收盘价,可以看作是时间t的函数,例如:Y=F(t);
这样的函数可以用一个时间序列的图来表示。
我们怎么样来分析这些时间序列的数据呢?这儿有四个方面值得我们注意的:
1, 长时间的走向:表明在很长一段时间内总的走向趋势,这个可以用一个“趋势曲线”或者“趋势直线”来显示,具体方法将在下面讲到。
2, 周期的走向与周期的变化:直线和曲线的振荡并不是周期的,这个循环并不遵循基于相等时间的规律。
3, 季节性的走向与变化:例如在情人节来之前,巧克力和花的销量突然的增大。换一个话说,就是在连续的很多年中,有一段时期总是与这年中的其他时期大不同。
4, 不规则的随机走向;由于一些突发的偶然事件而产生的。
上面这些走向我们分别可以用变量T,C,S,I来表示,时间序列分析也就可以是将一个时间序列的数据分割成这四个基本的趋势。这时间序列变量Y就可以模化为这四个变量的乘积或者是总和。
“给定Y的的集合,我们怎么样来分析出数据的走向呢?”
一个很普遍的方法就是计算平均值,这个方法就叫做“moving average of order n”。如果采用一个有权重的方法的话,就是“weighted moving average of order n”。
例:给定9 个数的序列,我们计算出它的moving average of order 3和weighted moving average of order 3(用权重1,4,1)。这个可以用下表来表示:
3,7,2,0,4,5,9,7,2
4,3,2,3,6,7,6
, , 1,,,8,
给中间一个权重大是为减少平滑的影响。
那么我们还有没有其他的方法来估计这个趋势呢?其中的一个方法是“freehand method”:用一个相似的曲线来代替数据,这儿最相似的曲线我们定义为di的总和最小,di是指曲线yi与实际数据yi的差。
有没有一些方法来调整季节性波动的数据呢?在实际的商业运用中,人们总想一般化季节性的波动。我们可以采用seasonal index numbers的方法。
二, 挖掘序列模式。
“什么是序列模式挖掘?”序列模式挖掘是基于时间或者其他序列的经常发生的模式。序列模式的一个例子就是“一个9个月前买了一台PC的顾客有可能在一个月内买一个新的CPU”。很多数据都是这种时间序列形式的,我们就可以用它来市场趋势分析,客户保留和天气预测等等。
序列模式挖掘的例子和参数:有很多参数对于挖掘的结果影响很大:
首先是时间序列T的持续时间,也就是这个时间序列的有效时间或者是用户选择的一个时间段,例如1999年。这样序列模式挖掘就被限定为对某段特定时间内的数据的挖掘。
其次是时间折叠窗口w,在一段时间内发生的几件事件可以被看作是同时发生的,如果w被设置为持续时间T的长度,我们就可以发现一些关联模式——“在1999年,一个买了PC机用户又买了数字照相机”(并不考虑先后顺序)。如果w被设置为0,那么序列模式就是两个事件发生在不同的时间里——“已经买了Pc机和内存的顾客有可能在以后买一个光驱”。如果w被设置为一段时间间隔(例如一个月或者是一天),那么在这段时间的交易在分析中可以被看作是同时发生的。
第三个参数是时间间隔,int,这个参数表示发现的模式的时间间隔。
Int=0:在这儿,我们要考虑参数w,例如如果这个参数设置为一个星期,那么发生了事件A,事件B会在一星期内发生。
Min_interval<max_interval:表示我们发现的事件发生的间隔小于min_interval大于max_interval。例如:“如果一个租了影片A,那么他一定会在一个月内租影片B”,这儿隐含着int<30。
Int=c而c不为0,那么意味着两件事的间隔在固定的时间内,例如:每次股票A下跌了5%,那么两天后会发生什么事?
用于数据挖掘的粗集产生多重知识库的方法*
杨 辉, 王浣尘 (上海交通大学管理学院)
在智能决策中,通常知识库表示成决策规则的集合.这种知识库由人类专家或收集的数据产生.多数情况下,收集的数据量很大,超出了人类专家的分析能力.从收集的数据中分析和析取有用的信息已成为当今数据挖掘研究领域的新问题. 粗集作为一种数据分析的方法首先由Pawlak[1]提出.它能从不精确的、模糊的、不确定的数据中发现知识.粗集理论在知识获取和数据挖掘中得到了广泛的应用[2],它为数据挖掘提供了理论基础.单个知识库使用单个最小决策规则集合在分类对象时有可能导致出错.为了增强分类的精确性,提出了多重知识库(或冗余知识库)的概念.多重知识库在分类一个新对象时,产生几个知识库代替一个知识库.许多研究结果表明,多重知识库能改善分类的精确性[3~5]Gams[4]提出一种归纳学习系统GINESYS产生多个决策规则的集合.在学习系统YAILS中,冗余性在处理不确定性问题时具有较高的精确性.但以上这些产生冗余知识的方法缺乏理论基础.为此,本文提出了一种产生多重知识库的理论模型.
1 模 型
知识表示系统
知识表示系统用五元组来描述:S=〈U,C,D,VAL,f〉.其中:U是非空的对象集合,U={u1,u2,…,un};C是非空条件属性集合;D是非空决策属性的集合;A=C∪D是所有属性的集合,其中C∩D=.设VAL=∪a∈AVALa,其中VALa的元素称为属性a的值;f是一个信息函数,f(ui,a)∈VALa,其中ui∈U.设B是A的非空子集,ui、uj是U的元素,R=U×U是等价关系.定义二元关系IND(B)={(ui,uj)∈R:a∈B,f(ui,a)=f(uj,a)}为不可辨别关系,它将U分成等价类.关系R的等价类称为近似空间apr=(U,R)的基本集合.对任何对象uiU,由ui确定的R等价类表示为[ui]R.设X是U的子集,X在apr中的下近似和上近似表示为apr(x)={ui∈U|[ui]RX}, apr(x)={ui∈U|[ui]R∩X≠}(1)表1为一个知识表示系统的例子.其中:U={u1,u2,…,un};C={T,I,F,D},具有属性值VALT={0,1},VALI={0,1,2},VALF={1,2}和VALD={0,1};VALCLASS={0,1}表示决策属性D的属性值.基于集合XU的下近似和上近似,域U分成三个区域:正区POS(X)、负区NEG(X)和边区BND(X).有以下公式:
POS(X)=apr(X), NEG(X)=U-apr(X), BND(X)=apr(X)-apr(X)(2) 表1 知识表示系统 Knowledge representation system UTIFDCLASS u100100 u210211 u311100 u402111 u512101 u610100 u712211 u800211
属性简化
属性简化就是去掉冗余属性,并找到最小的属性集合.设C*表示为不可辨别关系IND(C)的等价类集合,D*表示不可辨别关系IND(D)的等价类集合,POS(C,D表示下近似apr(X)的并集,其中X∈D*,apr=(U,IND(C)).则POS(C,D)=∪X∈D·apr(X)
定义1 在条件属性和决策属性间的相关度表示为γ(C,D)(或用K(C,D)表示),定义
γ(X,D)=card(POS(C,D))/card(U)(3)
式中card表示集合的基数(或用| |表示).定义2 属性P(PC)是属性C的简化,满足下面两个条件:
① P′P,POS(P,D)≠POS(P′,D);② γ(P,D)=γ(C,D).
属性简化集合表示为RED(D),它是条件属性C关于决策属性D的最小子集,任何简化REDi∈RED(D)可以通过去掉冗余属性从知识表示系统S中求出.
2 多重知识库最小知识库是无冗余属性的决策规则的集合.多重知识库的概念与粗集中的简化相对应.在知识表示系统中通过去掉冗余属性产生简化表,因此称为简化的知识表示系统.从简化表推导出由决策规则组成的知识库,从知识表示系统产生的不同简化,推 导出不同的知识库,形成多重知识库. 消除冗余属性 在某知识表示系统S中,通过条件属性值C描述各个对象.通常,在C中的一些属性是冗 余的,有必要消除冗余属性提高学习的有效性和精确性. 定义3 如果POSC(D)=POSC-{P}(D),那么在C中关于D的属性P∈C是冗余的,否则P在C 中关于D的属性是必需的. 如果某个属性在知识表示系统S中是冗余的,它将从S中去掉而不改变原来系统S中的 相关性.例如T是表1的冗余属性,表2是通过去掉表1的冗余属性而得到的. 表2 表1的简化表 Reduction table UIFDCLASS u1,u60100 u2,u80211 u31100 u42111 u52101 u72211 最小决策规则 一般地,规则r表示为一个蕴含式: r:(C1=Vi1)∧(C2=Vi2)∧…∧(Cm=Vim)→(D=Vd)(4) 式中:C1,C2,…,Cm为条件属性;D为决策属性. 决策矩阵用于计算知识表示系统S中最小决策规则,它提供产生最小决策规则集合的 方法. 设ei表示属于|Vd|的任何对象,其中:|Vd|={e∈U:d(e)=Vd};i=1,2,…,ρ;ρ= card(|Vd|).设ej∈U-|Vd|,j=1,2,…,γ;γ=card(U-|Vd|).决策矩阵DM=(DM ij)ργ,定义 DMij={(a,a(ej)):a(ei)≠a(ej)}(5) 式中:a∈A;a(e)为对象e的属性值.表3为从表2推导出的决策矩阵.下面给出由决 策矩阵计算最小决策规则的算法. 算法1 计算最小决策规则. 输入:一个关系R;输出:最小决策规则.步骤:(1) 从R中析取一般化关系R′[1]; (2) 在当前R′中计算决策矩阵;(3) 通过估算和简单化决策函数Bi,对ei(i=1, 2,…,ρ)计算最小决策规则mini,则Bi=∩j∪DMij(j=1,2,…,γ),其中∩和∪表示 合取和析取操作;(4) 计算最小决策规则的并集,找出当前R′中的最小决策规则. 由算法1从表3求出关于类“0”和类“1”的最小决策规则. (I=0)∧(F=1)→(CLASS=‘0’), (I=0)∧(D=0)→(CLASS=‘0’) (I=0)→(CLASS=‘0’)(6) (F=2)→(CLASS=‘1’), (D=1)→(CLASS=‘1’), (I=2)→(CLASS=‘1’)(7) 表3 决策矩阵 Decision matrixU 计算多重简化 该算法从核开始(核为与决策属性D有关的条件属性C的所有属性集合,并且属于简化 交集,核是简化的公共部分,表示为CORE(C,D),核是计算简化的起始点),通过条件属 性和决策属性间的属性值和相关性,进行向前选择和向后消除来计算.通过回溯操 作,建立简化集合.当简化中的属性包含所有必需的属性时算法终止. 算法2 计算多重简化. 输入:消除了冗余属性的关系R;输出:所有必需属性简化集合∪RED =C-CO; RED U=CO;1→i,对各个属性a∈AR,计算属性值,对属性AR集合进行排序. While在∪RED Ui的属性不包含在知识表示系统中的所有必需属性时 (向前选择) while K(RED U,D)≠K(C,D)do 选择在AR中的下一个属性aj; RED U=RED U∪{aj},AR=AR-{aj} 计算相关度K(RED U,D); Endwhile (向后消除) |RED U|→N forj=0 to N-1 do/*通过去掉冗余属性建立简化*/ if aj不在CO中,then从RED Ui中去掉 计算相关度K(RED U,D); if K (RED U,D)≠K(C,D)then RED U∪aj→RED U Endfor RED Ui=RED U;i+1→i;/*回溯计算下一个简化*/ Endwhile 设RULmin={r1,r2,…,rk}是由决策矩阵方法产生的最小决策规则,设RED={RED1,RED 2,…,REDi}是从算法2中计算出的简化集合,一个最小知识库表示为KBREDi=∪{Cond (rk)Cond(REDi):rk∈RULmin},其中Cond()是属性名的集合.使用算法2从表2中求 出关于决策属性的简化集合RED={IF,ID}. 简化“IF”的最小知识库KBRED1为 (I=0)∧(F=1)→(CLASS=‘0'), (I=1)→(CLASS=‘0') (F=2)→(CLASS=‘1'), (I=2)→(CLASS=‘1')(8) 简化“ID”的最小知识库KBRED2为 (I=0)∧(D=0)→(CLASS=‘0'), (I=0)→(CLASS=‘0') (D=1)→(CLASS=‘1'), (I=2)→(CLASS=‘1')(9) 综合上述步骤,得出产生多重知识库的算法如下. 算法3 产生多重知识库. 输入:关系Rj,输出:多重知识库∪KBREDi.步骤:(1) 从知识表示系统中去掉冗余 属性;(2) 从决策矩阵中计算最小决策规则;(3) 计算覆盖所有必需属性的简化集 合;(4) 由相应的简化对决策规则进行分组形成多重知识库. 3 结 语 本文提出了一种用于数据挖掘的粗集产生多重知识库的新方法.粗集理论在数据挖 掘中得到了广泛的应用,它为数据挖掘提供了理论基础.从知识表示系统产生的不 同的简化,形成不同的最小知识库,产生多重知识库.研究结果表明,多重知识库改善 了分类的精确性,提高了学习过程的有效性. 参考文献 1 Pawlak Journal of Information and Computer Science,1982,11(5):341~356 2 Slowinski decision support:handbook of applications and advances of rough set :Kluwer Academic Publishers, 1992. 3 Kononenko I,Kovacie as optimization:stochastic generation of multiple of the 9th International Workshop on Machine Learning,Aberden,Scotland,~262 4 Gams measurements highlight the importance of redundant knowled 4th Europe Working Session on Learning,Momtpellier,~80 5 Cestnik B,Bratko redundant rules in noisy of European Conf on AI,Munich,Germany,~350
最近邻居和聚集(Nearest Neighbor and Clustering)
距离近:在一些重要的属性上比较相似
聚集(clustering):是把相似的记录放在一起。
用途
聚集
让用户在较高的层次上观察数据库。常被用来做商业上的顾客分片(segmentation)。
找到不能与其他记录集合在一起的记录,做例外分析。
最近邻居
预测,距离相近的对象通常他们的预测值也相似,因此只要知道一个对象的预测值,就可以用他来预测他的邻居的值。
分数卡
基本思想
一般来说一个数据库没有一种最好的分类方法。聚集要在类中对象的相似程度和类的数目之间找到一个最佳的结合点。
N维空间和距离
变量(字段)的个数作为空间的维数。
基本的距离定义有两种:Manhatan距离 ∑∣a-b∣、欧氏距离(∑(a–b)2)1/2
决定变量权重的方法:
按照实际问题中各个变量对预测值的影响程度
用进化的办法,修改各个变量的权重,看是否能提高预测的准确率。
在文本挖掘中:1 用单词出现频率的倒数;2 按照各个单词对要检索内容的相关程度
怎样计算两个类的距离:
单连通方法(single-link method):取两个类中最近记录的距离为类的距离。此种方法可以生成细长的蛇形类,不适于应用在典型的一堆堆记录集合在一起的情况。
完全连通方法(complete-link method):取两个类中最远记录的距离为类的距离。同第1中方法相反,此种方法易生成很小的记录都聚集在一起的类。
平均连通方法(group-average link):计算两个类中所有记录对的距离平均值。效果介于1、2种算法之间。
Ward方法(Ward’s method):计算两个类中所有记录的距离的和。易于用在生成类层次的情况,对例外的数据(outliers)很敏感,很难应用于生成蛇形类。
聚集的分类和算法流程
分层的聚集(hierarchy):生成一个从小到大的聚集层次树。用户可以自由剪切这棵树,得到对数据的不同划分方法
合并(Agglomerative):从下到上,最初每个记录都是一类,逐步合并,直到合并成一个大类。
令数据库中的每一条记录都是一个类
把距离最近的类合并
重复2直到只含唯一的一个类为止
分割(Divisive):从上到下,一开始所有记录属于一个大类,逐步分割每一个类,直到不能分割为止。因选择分割哪一个类需要很大的计算量,此种方法很少使用。
令数据库中的所有记录都属于一个类
在所有的类中找到一个类中数据相似性最小的一个类,把他一分为二
重复2直到每个类中记录的个数都是1或达到一个预先设定的阈值,或类的个数已达到预先设定的最大个数
不分层聚集:速度更快,但需要用户在使用前设定一些参数,如类的个数、同一类中记录的最大距离。有时要反复修改参数才能得到一种满意的分类方法。
一次通过法(single-pass methods):只扫描数据库一次,就可完成分类。
从数据库中读取一条记录,判断他距哪个类的距离最近
如果即使到最近的类的距离比我们设定的距离相比还远,那么建立一个新的类,把此记录放到此类中去。
如果数据库中还有记录转1。
问题:数据库中记录的输入顺序和类内最大距离的设定,对分类的结果影响很大。
再分配法(reallocation methods):要把一条记录从一个类拿出来重新分到另一个类。
预先设定想要把数据分成类的个数
为每个类随机选取一条数据,作为类的中心或“种子”
一次读取数据库中的每一条记录,将其归到距离最近的类。
重新计算各个类的中心
重复3-4,直到类的中心不再变化或变化很小
问题:用户设定的类的个数很难与实际数据中存在的类的个数正好相符
最近邻居用于预测
方法
找到数据库中距离最近记录,将此记录的值作为新记录的预测值
找到最近的K个记录,用这K个记录按其到新记录的距离作为权重,综合得到新记录的预测值。
缺点
模型太大,预测时要使用整个历史数据库
没有正规的用于防止overfitting的方法(formal way)
模型的改进:删除用于预言的历史数据库中多余的数据,以得到数据量小而且准确度高的数据。
合并相似的记录,用一条记录(称为原型)代替相似的几条记录。要在不降低预测准确率的前提下。
只保留一组相似数据中的“边界”数据(称为“哨兵”),去掉“边界”内部的无用数据。
发展方向
应用算法到新的领域
改进输入变量权重的计算方法,和如何减小用于预测的历史数据的大小
根据历史记录自动计算变量的权重
自 动 聚 集 检 测
当人们处理复杂问题的时候,我们一个自然的想法就是把问题分成几个简单的问题来处理。在数据挖掘的时候,我们也可以采用类似的方法。用市场方面的术语就是“用户分片”。
分类的例子
例子1:
US军队需要对女士兵的服装进行重新的设计。
他们需要将士兵的体型分成几个相似的类。
测量的指标有100多个。
例子2:
银行对于客户行为的分析。
两个例子的分别:例子1虽然是没有指导的,但是分出来的类是有很明确的意义的。
例子2的变量的种类很杂,所以分出来的类不一定都有意义,实际的情况是14个类中,只有一个有用,但也足矣。
K-means 方法
变量的种类问题:
1. 种类变量(categories)。
2. 等级变量 (rank)。
3. 间隔变量(interval)。如温度
4. 真正的测度变量(true measure)。它有一个有意义的零点,从而两个变量的比例是有意义的。
后两种变量是可以直接应用的。而前两种变量就应该转化成第三种变量。
比例缩放和权重:
比例缩放是处理不同变量的衡量单位不同的问题。
权重是处理有些变量比另外一个变量更重要的问题。
比例缩放的三个常用方法:
1)每个变量都除以这个变量的平均值。
2)再减去最小值之后除以最大差值。
3)在减去平均值后,再除以标准方差。
K-means的变化:
1)改变初始种子的选择方法。
2)改变计算下一个质心的方法。
3)使用概率密度来代替距离进行聚集。
K-means方法的缺点:
1)不能很好处理重叠聚集。
2)很容易受例外情况的影响。
3)一条记录只能属于一个群中。
高斯混合模型(正态分布)
Responsibility值的计算。一个点离一个方差较小的高斯的较远,离另一个方差较大的高斯较近,他们得出的R是一样的。
凝聚块方法
K-means方法的群的个数是固定的,这个凝聚块方法是一个自底向上的过程。首先将每个元素作为群,然后一点点的扩大。然后把扩大的过程记录下来。用户可以最后进行选择。
算法的大致过程:首先建一个N*N的matrix。每个格子上都是两个元素之间的距离。然后将最相近的元素组合在一起形成一个新的群。
群间距离的计算:
1) 最近连接
2) 最远连接
3) 质心连接
群和树
群的衡量
对于单个群的判断标准:方差。
对于整个群集来说,通过 群内的距离之和/群间的距离之和 来体现。
群内的分析、群间的分析
其它的方法
自动聚集检测的优点
1) 不需要指导。
2) 对于种类、数值、文本数据都可以处理。
3) 容易实施
自动聚集检测的缺点
1) 距离和权重很难选择。
2) 对初始参数很敏感
3) 结果难以解释。
在实施数据仓库过程中应避免的11个错误
张晓辉 xiaohui@
1. 错误的项目发起:
在数据仓库实施项目经理之上,还有两个关键的人物对整个项目的实施产生重要影响。一是为更有效的利用企业数据和信息技术投钱的人,可以是公司总裁、市场副总裁、研发副总裁等。在项目经理和项目发起人之间还应该有一个被称为驾驭者(driver)的人,来控制项目的进度,保证项目沿着正确的方向前进,此人应具备如下3条特点:1)在其他项目的执行中已经得到人们的尊重。2)对技术抱怀疑态度。3)办事果断,而不是老好人。
表1:当数据挖掘项目缺少一些关键因素时可能付出的代价
问题
代价
发起人是IT主管而不是IT外部的商务主管
项目看起来象一个技术试验,而不是在商业上的战略投资
发起人预算不足
由于资金不足,每遇到一个技术问题都可能导致整个项目的失败;会给项目带来“麻烦制造者”和“预算恐龙”的名声。
如果没有驾驭人员,数据仓库项目经理直接向项目发起人员负责
发起人很快会对无穷无尽的数据定义冲突感到厌烦,没有一个协调各方面冲突的权威。
驾驭人员还没有赢得各部门管理人员的尊敬
由于没人能担保数据定义的有效性,人们就不会信任数据仓库内的数据,也就没人会使用它
驾驭人员崇拜技术,而不是怀疑它
项目被人看成是技术试验(或玩具),商业人员没人使用它
驾驭人员忧愁寡断或不愿意快速行动
项目进展缓慢,管理层的支持软化,人们兴趣度降低,人们转而寻找其他的解决办法。
2. 制订了不可能完成的目标:
实施数据仓库可以分成两各阶段:一是向公司高层游说,说服他们实施你的数据仓库计划。二是在得到了预算后努力实现自己当初许诺的目标。很有可能你当初夸的海口太大,比如“给我一百万,就能让公司里的每个人非常容易的得到他所想要的任何数据”。实际上很多情况下,数据仓库不可能提供人们所要求的所有数据,比如古老的历史细节数据可能根本就没有放到数据仓库中。
3. 犯政治幼稚病(Engaging in Politically Naive Behavior):
很多数据仓库项目经理都会犯的典型的错误是在宣传数据仓库时把他说成“他能帮助管理人员更好的制订决策”,当一个自尊的管理人员听到这样的话时典型的反映就是“这个家伙认为我们的决策做的不好,要用他的系统来给我们打补丁”,然后在后面的实施过程中就很难取得这些管理人员的支持。
4. 把所有能找到的数据全都放到数据仓库中:
把许多无关紧要的数据都放到数据仓库中,很快就会导致巨大的数据库,响应缓慢,难于管理和维护,使数据仓库最终成为一个华而不实的东西,只在理论上有用,而实际上很难使用。
5. 认为设计数据仓库就是设计事务数据库:
由于两者的目的根本不同,应此在设计数据仓库时也不能应为采用的相同的数据库管理软件,就不按照数据仓库的特殊需求来设计他。
6. 选择一个面向技术的而不是面向用户的人做数据仓库项目经理:
数据仓库实施过程中要与企业中各个部门的人打交道,数据仓库建立好之后也是为用户提供服务,如果只是专注于技术而不理用户的态度,很容易导致项目被中途终止。
7. 只专注传统的内部关系型数据,而忽略外部数据、文本、图像、甚至声音、视频数据:
白宫80年代在50家大公司中进行的一项调查表明高层管理人员使用的95%的信息是来自于公司外部(新闻,朋友,同盟者),并且越到高层对公司内部的数据越不重视。因此好的数据仓库应避免让高层人员直接看一条条的细节数据,而是经过统计分析后的汇总数据或漂亮的报表,并与外部数据结合。
8. 用交叠的或冲突的数据定义交付数据:
数据仓库的唯一致命弱点就是必须取得数据定义的一致,反之很容易导致用户迷茫和厌烦。
9. 相信软硬件供应商对性能、能力和可扩展性的承诺:
各个厂家对产品承诺的性能通常都是在最好的条件下获得,或被完全夸大,而在实际应用中很难打倒,因此实施过程中为自己留下余地。
10. 相信一旦数据仓库建立起来并开始运行,你的任务就完成了:
每个在通过使用数据仓库给自己带来好处的用户都会不断的要求你更新数据仓库中的数据,对更快的响应速度的要求需要你不断的采用新的技术和更新设备。一个典型的错误就是把数据仓库交给一个项目组,认为一旦仓库建立起来,组就可以解散。数据仓库建立完成后需要继续被精心维护至少一年。应把数据仓库看成是一个过程而不是一个目标。
11. 专注于动态生成查询、数据挖掘和定期生成报表:
利用数据仓库的典型过程是1)把数据从各个地方拿来放到数据仓库中,2)进行动态的数据查询,3)将常用的查询结果生成报表。但这些报表只有被真正利用起来,投资才会真正产生效益,而高层管理人员一般很忙,他们很快就会对定期发到他们手里的这些报表厌烦,而永远不会去看。更好的办法是建立危险信号警报系统,在数据仓库中定义各种警报条件,只有当这些警报条件满足时才会发送信息给特定的人。
直效邮件的数据挖掘——预测模型
通过分析消费者的购买行为,商家可以洞察消费者需要怎样的产品和服务,以及他们愿意接受的价格。这样,商家就可以更有针对性和高效地销售商品给消费者。商家无须过多地通过直效邮件(Direct Mail)、电子销售和各种媒介向消费者提供他们并不真正感兴趣的服务,而是分析其购物活动,确保消费者只收到自己感兴趣的、相关性强的且具有价值的信息。
预测模型是实现这个目标的关键。该模型是基于这样一个假设:消费者的消费行为具有一定的重复性和规律性,这使得商家可以通过分析收集存储在数据库中的交易信息,预测消费者的消费行为。按消费者所具有的特定的消费行为将其分类,商家就能将销售工作集中于一部分消费者──即针对性销售。例如,许多商家以邮寄方式向所有消费者或随机抽取的人群提供服务。而预测模型使商家有针对性地选取一部分消费者(以往消费者的10%至30%),这些人的购买力却占商家所获利润的20%到60%,这样就使商家大大降低了销售成本。
在预测模型中,消费者对直效邮件的反馈是一种最普遍的消费者行为,商家也可以自行定义其它消费行为,包括流失率、长期价值、信誉风险、欺骗性等。
将机器学习和人工智能应用于数据挖掘系统,如IBM研制开发的智能数据挖掘机(Intelligent Miner for Data),使商家可以建立预测模型,优于他们以往所使用的统计模型。
本文将深入介绍预测模型的处理过程,让读者逐步了解针对性直效邮件。下面的是近期一个零售商客户采用直效邮件的成功例子。
直效邮件实现流程
预测模型中直效邮件的商务处理流程。请看如下各个步骤
·建立商务需求 商家想要通过直效邮件对那些最有可能回应的消费者实现交叉销售。
·设计方案
商家想要测试两种不同的供应方式以确定在将来直效邮件中哪一种更有效。这两种供应方式具有不同的折扣。方案的制定应该面向那些最有可能回应某种供应的消费者。
制定邮件
以往的各种反馈信息为预测模型提供了大量数据,通过这些数据商家可以制定针对那些积极消费者的邮件。
·设计创意
商家的广告代理设计每个邮件的市场信息和外观形象。邮件的大小取决于建立模型之前的邮件的预估单价和其它预算。
·设计方案的实施
方案实施需要建立邮递单元(邮递单元是指商家会向其邮寄某种特定供应和创意的那部分消费者)。建立多少邮递单元取决于独立因素的数量,这些因素影响到消费者是否会回应商家的邮件。其中包括邮寄者的创意设计、供应和消费者的选择技术。
方案实施是将实际消费者分配到各个单元。预测模型建立好后,每个消费者记录都有一个分数值,表示消费者会作出反应的可能性(后面会介绍建模和分值的处理)。将消费者按其分数值大小进行排列。一般先分配组成参照单元,然后组成目标单元。将排列在前面的消费者分配到目标单元。如果有多个目标单元,就需要对它们同时进行分配,使各级消费者在这些单元中分布均匀。
一旦组成了这些单元,就可以从数据库中获取消费者的姓名、地址和其它数据,并寄出相应的邮件。
·结果追踪
为了能追踪方案的结果,应当把消费者的名字和所属单元(表明消费者收到的是哪一种供应和创意)记录在晋级历史表中。该表可以让商家了解哪些消费者作出了反应,哪些没作反应。也可以在表中保存消费者记录的模型分数值和变量,以备将来分析。
·结果分析
方案实施之后,你就可以决定方案的结果。通常要计算以下几个数值: 每个邮递单元的反应率、收入、成本、盈利、投资回报以及总体收入、总体成本、总体投资回报、总体反应率、模型定量反应率(基于参照单元)。
描述型数据挖掘
统计和可视化
要想建立一个好的预言模型,你必须了解自己的数据。最基本的方法是计算各种统计变量(平均值、方差等)和察看数据的分布情况。你也可以用数据透视表察看多维数据。
数据的种类可分为连续的,有一个用数字表示的值(比如销售量)或离散的,分成一个个的类别(如红、绿、蓝)。离散数据可以进一步分为可排序的,数据间可以比较大小(如,高、中、低)和标称的,不可排序(如邮政编码)。
图形和可视化工具在数据准备阶段尤其重要,它能让你快速直观的分析数据,而不是给你枯燥乏味的文本和数字。它不仅让你看到整个森林,还允许你拉近每一棵树来察看细节。在图形模式下人们很容易找到数据中可能存在的模式、关系、异常等,直接看数字则很难。
可视化工具的问题是模型可能有很多维或变量,但是我们只能在2维的屏幕或纸上展示它。比如,我们可能要看的是信用风险与年龄、性别、婚姻状况、参加工作时间的关系。因此,可视化工具必须用比较巧妙的方法在两维空间内展示n维空间的数据。虽然目前有了一些这样的工具,但它们都要用户“训练”过他们的眼睛后才能理解图中画的到底是什么东西。对于眼睛有色盲或空间感不强的人,在使用这些工具时可能会遇到困难。
聚集(分群)
聚集是把整个数据库分成不同的群组。它的目的是要群与群之间差别很明显,而同一个群之间的数据尽量相似。与分类不同(见后面的预测型数据挖掘),在开始聚集之前你不知道要把数据分成几组,也不知道怎么分(依照哪几个变量)。因此在聚集之后要有一个对业务很熟悉的人来解释这样分群的意义。很多情况下一次聚集你得到的分群对你的业务来说可能并不好,这时你需要删除或增加变量以影响分群的方式,经过几次反复之后才能最终得到一个理想的结果。神经元网络和K-均值是比较常用的聚集算法。
不要把聚集与分类混淆起来。在分类之前,你已经知道要把数据分成哪几类,每个类的性质是什么,聚集则恰恰相反。
关联分析
关联分析是寻找数据库中值的相关性。两种常用的技术是关联规则和序列模式。关联规则是寻找在同一个事件中出现的不同项的相关性,比如在一次购买活动中所买不同商品的相关性。序列模式与此类似,他寻找的是事件之间时间上的相关性,如对股票涨跌的分析。
关联规则可记为A==>B,A称为前提和左部(LHS),B称为后续或右部(RHS)。如关联规则“买锤子的人也会买钉子”,左部是“买锤子”,右部是“买钉子”。
要计算包含某个特定项或几个项的事务在数据库中出现的概率只要在数据库中直接统计即可。某一特定关联(“锤子和钉子”)在数据库中出现的频率称为支持度。比如在总共1000个事务中有15个事务同时包含了“锤子和钉子”,则此关联的支持度为%。非常低的支持度(比如1百万个事务中只有一个)可能意味着此关联不是很重要,或出现了错误数据(如,“男性和怀孕”)。
要找到有意义的规则,我们还要考察规则中项及其组合出现的相对频率。当已有A时,B发生的概率是多少?也即概率论中的条件概率。回到我们的例子,也就是问“当一个人已经买了锤子,那他有多大的可能也会买钉子?”这个条件概率在数据挖掘中也称为可信度,计算方法是求百分比:(A与B同时出现的频率)/(A出现的频率)。
让我们用一个例子更详细的解释这些概念:
总交易笔数(事务数):1,000
包含“锤子”:50
包含“钉子”:80
包含“钳子”:20
包含“锤子”和“钉子”:15
包含“钳子”和“钉子”:10
包含“锤子”和“钳子”:10
包含“锤子”、“钳子”和“钉子”:5
则可以计算出:
“锤子和钉子”的支持度=%(15/1,000)
“锤子、钉子和钳子”的支持度=%(5/1,000)
“锤子==>钉子”的可信度=30%(15/50)
“钉子==>锤子”的可信度=19%(15/80)
“锤子和钉子==>钳子”的可信度=33%(5/15)
“钳子==>锤子和钉子”的可信度=25%(5/20)
我们可以看到买锤子的人也买钉子的可能性(30%)高于买钉子的人要买锤子的可能性(19%)。锤子和钉子关联的支持度已经足够高了,意味着这是一条有意义的关联规则。
改善度(lift)是另外一个描述规则价值的数值。改善度越高A的出现对B出现的可能性影响越大。改善度是一个比值:(A==>B的可信度)/(B出现的频率)。如:
“锤子==>钉子”的改善度:(30% / 8%)
“锤子和钉子==>钳子”的改善度:(33% / 2%)
关联规则算法的另一个重要的性质是指定项的概念层次。比如在我们讨论的锤子和钉子的例子中没有涉及产品的品牌和型号。这一点很重要,如在“金属制品-->五金工具-->钉子-->5号钉子-->XX厂的5号钉子”的概念层次上,基于不同的目的,你可能需要选择不同的层次。
注意数据挖掘得到的关联规则或序列模式并不是真正的规则,他只是对数据库中数据之间相关性的一种描述。还没有其他数据来验证得到的规则的正确性,也不能保证利用过去的数据得到的规律在未来新的情况下仍有效。
有时很难决定能利用你发现的关联规则做些什么。比如,在超市货架的摆放策略上,按照发现的关联规则把相关性很强的物品放在一起,反而可能会使整个超市的销售量下降—顾客如果可以很容易的找到他要买的商品,他就不会再买那些本来不在他的购买计划上的商品。总之,在采取任何行动之前一定要经过分析和实验,即使它是利用数据挖掘得到的知识。
有些软件产品用图形的方式显示项之间的相关性。如图3所示,每个圆圈代表一个项或一个事件,线代表他们间的关系,线越粗表示相关性越强,这样对软件的使用者来说就很直观。
预言型数据挖掘
你需要选择的
数据挖掘的目的是生成可以据其所示的含义采取行动的知识,也就是建立一个现实世界的模型。建立这个模型可能需要各种各样的源数据,包括交易记录、顾客历史数据、人口统计信息、进程控制数据、和市场相关的外部数据等,比如:信用卡公司提供的数据、天气数据等。模型是模式和数据间相关性的形式化描述。
为了防止混淆,我们把数据挖掘概念划分为几个层次
商业目标
预言的种类
模型的类型
算法
产品
最高层是商业目标:数据挖掘的最终目的是什么?比如:希望用数据挖掘技术留住你的有价值的客户,你可能先要建立一个模型来预测每个客户所能带来的利润,然后再建立一个模型来确定哪些客户可能会离开。充分了解你所在企业的需求和目标有助于你建立这样的目标。
下一步是决定最合适的预言的种类:(1)分类:预测一个特定的客户或事件属于哪一类;(2)回归(regression):预测一个变量的值(如果此变量随事件变化,可成为时间序列预测)。在上面的例子中你可以用回归来预测利润的大小,用分类预测哪些客户会离开。后面我们会详细讨论。
现在你可以选择模型的类型:用神经网络来做回归,决策树做分类,还是用统计模型,如:逻辑回归,偏差分析,普通线性模型等。下一章我们要详细讨论这些模型。
每种模型都可以用不同的算法来实现,比如,可以用回馈函数或radial basis函数来建立神经网络;决策树有CART,,QUEST,CHAID等。
在选择数据挖掘软件产品时,要注意这些软件所采用的算法虽然名称可能完全一样,但他们的实现方法通常都是不一样的。这些对算法的不同实现影响了软件对内存、硬盘的需求的不同,和性能上的差异。
大部分的商业目标都可以用各种不同的模型及相异的算法来解决。通常在你还没有试过任何数据挖掘算法之前,很难决定那种对你来说是最好的。
一些术语
在预言模型中,把我们要预测的值或所属类别称为响应变量、依赖变量或目标变量;用于预测的输入变量是预测变量或独立变量。
一些预言模型是通过那些已知目标变量值的历史数据训练出来的。这种训练有时也称为带指导的学习,因为是通过给出一些已知答案的问题(已知结果的数据)来让他“学习”。相对应的,还有不带指导的学习,如上面提到的描述型数据挖掘(在运行之前,算法对数据一无所知)。
分类
分类要解决的问题是为一个事件或对象归类。在使用上,既可以用此模型分析已有的数据,也可以用它来预测未来的数据。例如,用分类来预测哪些客户最倾向于对直接邮件推销做出回应,又有哪些客户可能会换他的手机服务提供商,或在医疗领域当遇到一个病例时用分类来判断一下从哪些药品着手比较好。
数据挖掘算法的工作方法是通过分析已知分类信息的历史数据总结出一个预测模型。这里用于建立模型的数据称为训练集,通常是已经掌握的历史数据。如,已经不再接受服务的用户,你很可能还保存了他们在接受服务时的历史记录。训练集也可以是通过实际的实验得到的数据。比如你从包含公司所有顾客的数据库中取出一部分数据做实验,向他们发送介绍新产品的推销信,然后收集对此做出回应的客户名单,然后你就可以用这些推销回应记录建立一个预测哪些用户会对新产品感兴趣的模型,最后把这个模型应用到公司的所有客户上。
回归
回归是通过具有已知值的变量来预测其他变量的值。在最简单的情况下,回归采用的是象线性回归这样的标准统计技术。但在大多数现实世界中的问题是不能用简单的线性回归所能预测的。如商品的销售量、股票价格、产品合格率等,很难找到简单有效的方法来预测,因为要描述这些事件的变化所需的变量以上百计,且这些变量本身往往都是非线性的。为此人们又发明了许多新的手段来试图解决这个问题,如逻辑回归、决策树、神经网络等。
一般同一个模型既可用于回归也可用于分类。如CART决策树算法既可以用于建立分类树,也可建立回归树。神经网络也一样。
时间序列
时间序列是用变量过去的值来预测未来的值。与回归一样,他也是用已知的值来预测未来的值,只不过这些值的区别是变量所处时间的不同。时间序列采用的方法一般是在连续的时间流中截取一个时间窗口(一个时间段),窗口内的数据作为一个数据单元,然后让这个时间窗口在时间流上滑动,以获得建立模型所需要的训练集。比如你可以用前六天的数据来预测第7天的值,这样就建立了一个区间大小为7的窗口。
数据挖掘模型和算法
现在我们来讨论数据挖掘算法中涌到的各种类型的模型和算法。大多数数据挖掘产品使用的算法都是在计算机科学或统计数学杂志上发表过的成熟算法,所不同的只是算法的实现和对性能的优化。当然也有一些公司采用的是自己研发的未公开的算法,效果也不错。
我们下面将要介绍的模型和算法都是数据挖掘中最常见的和应用最广泛的,在计算机科学、统计数学、和人工智能领域的科学家们已经在研究和改进这些算法方面作了大量的工作。几乎所有的数据挖掘技术都可称为是数据驱动的,而不是用户驱动的,也就是说用户在使用这些算法时,只要给出数据,不用告诉算法程序怎么做和期待得到什么结果,一切都是算法自身从给定的数据中自己找出来。
应注意的是大部分算法都不是专为解决某个问题而特制的,算法之间也并不互相排斥。不能说一个问题一定要采用某种算法,别的就不行。一般来说并不存在所谓的最好的算法,在最终决定选取那种模型或算法之前,你可能各种模型都试一下,然后再选取一个较好的,或只试了一个就已经满足了你对准确度的要求。
神经网络
神经网络近来越来越受到人们的关注,因为它为解决大复杂度问题提供了一种相对来说比较有效的简单方法。神经网络可以很容易的解决具有上百个参数的问题(当然实际生物体中存在的神经网络要比我们这里所说的程序模拟的神经网络要复杂的多)。神经网络常用于两类问题:分类和回归。
在结构上,可以把一个神经网络划分为输入层、输出层和隐含层(见图4)。输入层的每个节点对应一个个的预测变量。输出层的节点对应目标变量,可有多个。在输入层和输出层之间是隐含层(对神经网络使用者来说不可见),隐含层的层数和每层节点的个数决定了神经网络的复杂度。
除了输入层的节点,神经网络的每个节点都与很多它前面的节点(称为此节点的输入节点)连接在一起,每个连接对应一个权重Wxy,此节点的值就是通过它所有输入节点的值与对应连接权重乘积的和作为一个函数的输入而得到,我们把这个函数称为活动函数或挤压函数。如图5中节点4输出到节点6的值可通过如下计算得到:
W14*节点1的值+W24*节点2的值
神经网络的每个节点都可表示成预测变量(节点1,2)的值或值的组合(节点3-6)。注意节点6的值已经不再是节点1、2的线性组合,因为数据在隐含层中传递时使用了活动函数。实际上如果没有活动函数的话,神经元网络就等价于一个线性回归函数,如果此活动函数是某种特定的非线性函数,那神经网络又等价于逻辑回归。
调整节点间连接的权重就是在建立(也称训练)神经网络时要做的工作。最早的也是最基本的权重调整方法是错误回馈法,现在较新的有变化坡度法、类牛顿法、Levenberg-Marquardt法、和遗传算法等。无论采用那种训练方法,都需要有一些参数来控制训练的过程,如防止训练过度和控制训练的速度。
决定神经网络拓扑结构(或体系结构)的是隐含层及其所含节点的个数,以及节点之间的连接方式。要从头开始设计一个神经网络,必须要决定隐含层和节点的数目,活动函数的形式,以及对权重做那些限制等,当然如果采用成熟软件工具的话,他会帮你决定这些事情。
在诸多类型的神经网络中,最常用的是前向传播式神经网络,也就是我们前面图示中所描绘的那种。我们下面详细讨论一下,为讨论方便假定只含有一层隐含节点。
可以认为错误回馈式训练法是变化坡度法的简化,其过程如下:
前向传播:数据从输入到输出的过程是一个从前向后的传播过程,后一节点的值通过它前面相连的节点传过来,然后把值按照各个连接权重的大小加权输入活动函数再得到新的值,进一步传播到下一个节点。
回馈:当节点的输出值与我们预期的值不同,也就是发生错误时,神经网络就要 “学习”(从错误中学习)。我们可以把节点间连接的权重看成后一节点对前一节点的“信任” 程度(他自己向下一节点的输出更容易受他前面哪个节点输入的影响)。学习的方法是采用惩罚的方法,过程如下:如果一节点输出发生错误,那么他看他的错误是受哪个(些)输入节点的影响而造成的,是不是他最信任的节点(权重最高的节点)陷害了他(使他出错),如果是则要降低对他的信任值(降低权重),惩罚他们,同时升高那些做出正确建议节点的信任值。对那些收到惩罚的节点来说,他也需要用同样的方法来进一步惩罚它前面的节点。就这样把惩罚一步步向前传播直到输入节点为止。
对训练集中的每一条记录都要重复这个步骤,用前向传播得到输出值,如果发生错误,则用回馈法进行学习。当把训练集中的每一条记录都运行过一遍之后,我们称完成一个训练周期。要完成神经网络的训练可能需要很多个训练周期,经常是几百个。训练完成之后得到的神经网络就是在通过训练集发现的模型,描述了训练集中响应变量受预测变量影响的变化规律。
由于神经网络隐含层中的可变参数太多,如果训练时间足够长的话,神经网络很可能把训练集的所有细节信息都“记”下来,而不是建立一个忽略细节只具有规律性的模型,我们称这种情况为训练过度。显然这种“模型”对训练集会有很高的准确率,而一旦离开训练集应用到其他数据,很可能准确度急剧下降。为了防止这种训练过度的情况,我们必须知道在什么时候要停止训练。在有些软件实现中会在训练的同时用一个测试集来计算神经网络在此测试集上的正确率,一旦这个正确率不再升高甚至开始下降时,那么就认为现在神经网络已经达到做好的状态了可以停止训练。
图6中的曲线可以帮我们理解为什么利用测试集能防止训练过度的出现。在图中可以看到训练集和测试集的错误率在一开始都随着训练周期的增加不断降低,而测试集的错误率在达到一个谷底后反而开始上升,我们认为这个开始上升的时刻就是应该停止训练的时刻。
神经元网络和统计方法在本质上有很多差别。神经网络的参数可以比统计方法多很多。如图4中就有13个参数(9个权重和4个限制条件)。由于参数如此之多,参数通过各种各样的组合方式来影响输出结果,以至于很难对一个神经网络表示的模型做出直观的解释。实际上神经网络也正是当作“黑盒”来用的,不用去管“盒子”里面是什么,只管用就行了。在大部分情况下,这种限制条件是可以接受的。比如银行可能需要一个笔迹识别软件,但他没必要知道为什么这些线条组合在一起就是一个人的签名,而另外一个相似的则不是。在很多复杂度很高的问题如化学试验、机器人、金融市场的模拟、和语言图像的识别,等领域神经网络都取得了很好的效果。
神经网络的另一个优点是很容易在并行计算机上实现,可以把他的节点分配到不同的CPU上并行计算。
在使用神经网络时有几点需要注意:第一,神经网络很难解释,目前还没有能对神经网络做出显而易见解释的方法学。
第二,神经网络会学习过度,在训练神经网络时一定要恰当的使用一些能严格衡量神经网络的方法,如前面提到的测试集方法和交叉验证法等。这主要是由于神经网络太灵活、可变参数太多,如果给足够的时间,他几乎可以“记住”任何事情。
第三,除非问题非常简单,训练一个神经网络可能需要相当可观的时间才能完成。当然,一旦神经网络建立好了,在用它做预测时运行时还是很快得。
第四,建立神经网络需要做的数据准备工作量很大。一个很有误导性的神话就是不管用什么数据神经网络都能很好的工作并做出准确的预测。这是不确切的,要想得到准确度高的模型必须认真的进行数据清洗、整理、转换、选择等工作,对任何数据挖掘技术都是这样,神经网络尤其注重这一点。比如神经网络要求所有的输入变量都必须是0-1(或-1 -- +1)之间的实数,因此像“地区”之类文本数据必须先做必要的处理之后才能用作神经网络的输入。
决策树
决策树提供了一种展示类似在什么条件下会得到什么值这类规则的方法。比如,在贷款申请中,要对申请的风险大小做出判断,图7是为了解决这个问题而建立的一棵决策树,从中我们可以看到决策树的基本组成部分:决策节点、分支和叶子。
决策树中最上面的节点称为根节点,是整个决策树的开始。本例中根节点是“收入>¥40,000”,对此问题的不同回答产生了“是”和“否”两个分支。
决策树的每个节点子节点的个数与决策树在用的算法有关。如CART算法得到的决策树每个节点有两个分支,这种树称为二叉树。允许节点含有多于两个子节点的树称为多叉树。
每个分支要么是一个新的决策节点,要么是树的结尾,称为叶子。在沿着决策树从上到下遍历的过程中,在每个节点都会遇到一个问题,对每个节点上问题的不同回答导致不同的分支,最后会到达一个叶子节点。这个过程就是利用决策树进行分类的过程,利用几个变量(每个变量对应一个问题)来判断所属的类别(最后每个叶子会对应一个类别)。
假如负责借贷的银行官员利用上面这棵决策树来决定支持哪些贷款和拒绝哪些贷款,那么他就可以用贷款申请表来运行这棵决策树,用决策树来判断风险的大小。“年收入>¥40,00”和“高负债”的用户被认为是“高风险”,同时“收入<¥40,000”但“工作时间>5年”的申请,则被认为“低风险”而建议贷款给他/她。
数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测(就像上面的银行官员用他来预测贷款风险)。常用的算法有CHAID、 CART、 Quest 和。
建立决策树的过程,即树的生长过程是不断的把数据进行切分的过程,每次切分对应一个问题,也对应着一个节点。对每个切分都要求分成的组之间的“差异”最大。
各种决策树算法之间的主要区别就是对这个“差异”衡量方式的区别。对具体衡量方式算法的讨论超出了本文的范围,在此我们只需要把切分看成是把一组数据分成几份,份与份之间尽量不同,而同一份内的数据尽量相同。这个切分的过程也可称为数据的“纯化”。看我们的例子,包含两个类别--低风险和高风险。如果经过一次切分后得到的分组,每个分组中的数据都属于同一个类别,显然达到这样效果的切分方法就是我们所追求的。
到现在为止我们所讨论的例子都是非常简单的,树也容易理解,当然实际中应用的决策树可能非常复杂。假定我们利用历史数据建立了一个包含几百个属性、输出的类有十几种的决策树,这样的一棵树对人来说可能太复杂了,但每一条从根结点到叶子节点的路径所描述的含义仍然是可以理解的。决策树的这种易理解性对数据挖掘的使用者来说是一个显著的优点。
然而决策树的这种明确性可能带来误导。比如,决策树每个节点对应分割的定义都是非常明确毫不含糊的,但在实际生活中这种明确可能带来麻烦(凭什么说年收入¥40,001的人具有较小的信用风险而¥40,000的人就没有)。
建立一颗决策树可能只要对数据库进行几遍扫描之后就能完成,这也意味着需要的计算资源较少,而且可以很容易的处理包含很多预测变量的情况,因此决策树模型可以建立得很快,并适合应用到大量的数据上。
对最终要拿给人看的决策树来说,在建立过程中让其生长的太“枝繁叶茂”是没有必要的,这样既降低了树的可理解性和可用性,同时也使决策树本身对历史数据的依赖性增大,也就是说这是这棵决策树对此历史数据可能非常准确,一旦应用到新的数据时准确性却急剧下降,我们称这种情况为训练过度。为了使得到的决策树所蕴含的规则具有普遍意义,必须防止训练过度,同时也减少了训练的时间。因此我们需要有一种方法能让我们在适当的时候停止树的生长。常用的方法是设定决策树的最大高度(层数)来限制树的生长。还有一种方法是设定每个节点必须包含的最少记录数,当节点中记录的个数小于这个数值时就停止分割。
与设置停止增长条件相对应的是在树建立好之后对其进行修剪。先允许树尽量生长,然后再把树修剪到较小的尺寸,当然在修剪的同时要求尽量保持决策树的准确度尽量不要下降太多。
对决策树常见的批评是说其在为一个节点选择怎样进行分割时使用“贪心”算法。此种算法在决定当前这个分割时根本不考虑此次选择会对将来的分割造成什么样的影响。换句话说,所有的分割都是顺序完成的,一个节点完成分割之后不可能以后再有机会回过头来再考察此次分割的合理性,每次分割都是依赖于他前面的分割方法,也就是说决策树中所有的分割都受根结点的第一次分割的影响,只要第一次分割有一点点不同,那么由此得到的整个决策树就会完全不同。那么是否在选择一个节点的分割的同时向后考虑两层甚至更多的方法,会具有更好的结果呢?目前我们知道的还不是很清楚,但至少这种方法使建立决策树的计算量成倍的增长,因此现在还没有哪个产品使用这种方法。
而且,通常的分割算法在决定怎么在一个节点进行分割时,都只考察一个预测变量,即节点用于分割的问题只与一个变量有关。这样生成的决策树在有些本应很明确的情况下可能变得复杂而且意义含混,为此目前新提出的一些算法开始在一个节点同时用多个变量来决定分割的方法。比如以前的决策树中可能只能出现类似“收入<¥35,000”的判断,现在则可以用“收入<(*抵押)”或“收入>¥35,000或抵押<150,000”这样的问题。
决策树很擅长处理非数值型数据,这与神经网络只能处理数值型数据比起来,就免去了很多数据预处理工作。
甚至有些决策树算法专为处理非数值型数据而设计,因此当采用此种方法建立决策树同时又要处理数值型数据时,反而要做把数值型数据映射到非数值型数据的预处理。
数据挖掘入门 一 数据挖掘入门 三
Web 聚集算法的一种改进
以前我们谈到过用Leader聚集算法实现动态连接的问题,但是真正做起来的话效率是非常低的,为什么呢?
一个Web服务器含有成千上万的网页,一个“Session”中所含的网页也是相对比较多的,要用一个多维的向量来表示一个“Session”是很庞大的,在进行聚集分类的时候其计算量是很大的。而当要增加或者删除网页的时候,需要重新定义网页的代号。
我们的目的是具有相似浏览模式的用户,但是用户的喜好是多种多样的,如果我们把网页分得过细的话,这样就会显得很困难了。例如,也许你会找到很多同样喜欢足球的人,但要分到喜欢某一个球星的话,这样的所分的类就会很多,会花很多时间而且具体用起来是比困难的。
下面我们提出一种解决的方法。
在这儿,我们将用户看到的最后一层叫做“简单网页”,例如从首页�>电脑�>软件�>数据库…具体介绍某相技术的(这个再没有子网页了)。这里中间的叫做“通用网页”我们提出在运用聚集的时候,不再细分到简单网页,而是分到通用网页。
例如,如果网站的结构是
A
B C
D E
我们在形成“Session”向量的时候,如果我们考虑的通用网页是B,C这一层的话,那么向量里就只出现B,在D,E上花的时间就会加到B上面了。如果本来的向量形式是(session _id,<B,20>,<D,50>,<.E,70>...),那么用这种方法以后就会变成(session_ id,<B,140>…)。这样的话就会将维的数目减少到很少。
该选取那一层的“通用网页”,通常是由用户设定,或者先设一个门限值,选择“简单网页”小于该门限值的最层的网页。
为什么这么做?这样会不会失去一些有用的信息?
XML与面向Web的数据挖掘技术
XML与面向Web的数据挖掘技术 面向Web的数据挖掘 Web上有海量的数据信息,怎样对这些数据进行复杂的应用成了现今数据库技术的研究热点。数据挖掘就是从大量的数据中发现隐含的规律性的内容,解决数据的应用质量问题。充分利用有用的数据,废弃虚伪无用的数据,是数据挖掘技术的最重要的应用。相对于Web的数据而言,传统的数据库中的数据结构性很强,即其中的数据为完全结构化的数据,而Web上的数据最大特点就是半结构化。所谓半结构化是相对于完全结构化的传统数据库的数据而言。显然,面向Web的数据挖掘比面向单个数据仓库的数据挖掘要复杂得多。 1.异构数据库环境 从数据库研究的角度出发,Web网站上的信息也可以看作一个数据库,一个更大、更复杂的数据库。Web上的每一个站点就是一个数据源,每个数据源都是异构的,因而每一站点之间的信息和组织都不一样,这就构成了一个巨大的异构数据库环境。如果想要利用这些数据进行数据挖掘,首先,必须要研究站点之间异构数据的集成问题,只有将这些站点的数据都集成起来,提供给用户一个统一的视图,才有可能从巨大的数据资源中获取所需的东西。其次,还要解决Web上的数据查询问题,因为如果所需的数据不能很有效地得到,对这些数据进行分析、集成、处理就无从谈起。 2.半结构化的数据结构 Web上的数据与传统的数据库中的数据不同,传统的数据库都有一定的数据模型,可以根据模型来具体描述特定的数据。而Web上的数据非常复杂,没有特定的模型描述,每一站点的数据都各自独立设计,并且数据本身具有自述性和动态可变性。因而,Web上的数据具有一定的结构性,但因自述层次的存在,从而是一种非完全结构化的数据,这也被称之为半结构化数据。半结构化是Web上数据的最大特点。 3.解决半结构化的数据源问题 Web数据挖掘技术首要解决半结构化数据源模型和半结构化数据模型的查询与集成问题。解决Web上的异构数据的集成与查询问题,就必须要有一个模型来清晰地描述Web上的数据。针对Web上的数据半结构化的特点,寻找一个半结构化的数据模型是解决问题的关键所在。除了要定义一个半结构化数据模型外,还需要一种半结构化模型抽取技术,即自动地从现有数据中抽取半结构化模型的技术。面向Web的数据挖掘必须以半结构化模型和半结构化数据模型抽取技术为前提。 XML与Web数据挖掘技术 以XML为基础的新一代WWW环境是直接面对Web数据的,不仅可以很好地兼容原有的Web应用,而且可以更好地实现Web中的信息共享与交换。XML可看作一种半结构化的数据模型,可以很容易地将XML的文档描述与关系数据库中的属性一对应起来,实施精确地查询与模型抽取。 的产生与发展 XML (eXtensible Markup Language) 是由万维网协会(W3C)设计,特别为Web应用服务的SGML(Standard General Markup Language)的一个重要分支。总的来说,XML是一种中介标示语言(Meta-markup Language),可提供描述结构化资料的格式,详细来说,XML是一种类似于HTML,被设计用来描述数据的语言。XML提供了一种独立的运行程序的方法来共享数据,它是用来自动描述信息的一种新的标准语言,它能使计算机通信把Internet的功能由信息传递扩大到人类其他多种多样的活动中去。XML由若干规则组成,这些规则可用于创建标记语言,并能用一种被称作分析程序的简明程序处理所有新创建的标记语言,正如HTML为第一个计算机用户阅读Internet文档提供一种显示方式一样,XML也创建了一种任何人都能读出和写入的世界语。XML解决了HTML不能解决的两个Web问题,即Internet发展速度快而接入速度慢的问题,以及可利用的信息多,但难以找到自己需要的那部分信息的问题。XML能增加结构和语义信息,可使计算机和服务器即时处理多种形式的信息。因此,运用XML的扩展功能不仅能从Web服务器下载大量的信息,还能大大减少网络业务量。 XML中的标志(TAG)是没有预先定义的,使用者必须要自定义需要的标志,XML是能够进行自解释(Self Describing)的语言。XML使用DTD(Document Type Definition文档类型定义)来显示这些数据,XSL(eXtensible Style Sheet Language)是一种来描述这些文档如何显示的机制,它是XML的样式表描述语言。XSL的历史比HTML用的CSS(层叠式样式表Cascading Style Sheets)还要悠久,XSL包括两部分:一个用来转换XML文档的方法;一个用来格式化XML文档的方法。XLL(eXtensible Link Language)是XML连接语言,它提供XML中的连接,与HTML中的类似,但功能更强大。使用XLL,可以多方向连接,且连接可以存在于对象层级,而不仅仅是页面层级。由于XML能够标记更多的信息,所以它就能使用户很轻松地找到他们需要的信息。利用XML,Web设计人员不仅能创建文字和图形,而且还能构建文档类型定义的多层次、相互依存的系统、数据树、元数据、超链接结构和样式表。 的主要特点 正是XML的特点决定了其卓越的性能表现。XML作为一种标记语言,有许多特点: (1)简单。XML经过精心设计,整个规范简单明了,它由若干规则组成,这些规则可用于创建标记语言,并能用一种常常称作分析程序的简明程序处理所有新创建的标记语言。XML能创建一种任何人都能读出和写入的世界语,这种创建世界语的功能叫做统一性功能。如XML创建的标记总是成对出现,以及依靠称作统一代码的新的编码标准。 (2)开放。XML是SGML在市场上有许多成熟的软件可用来帮助编写、管理等, 开放式标准XML 的基础是经过验证的标准技术,并针对网络做最佳化。众多业界顶尖公司,与W3C的工作群组并肩合作,协助确保交互作业性,支持各式系统和浏览器上的开发人员、作者和使用者,以及改进 XML 标准。XML解释器可以使用编程的方法来载入一个XML的文档,当这个文档被载入以后,用户就可以通过XML文件对象模型来获取和操纵整个文档的信息,加快了网络运行速度。 (3)高效且可扩充。支持复用文档片断,使用者可以发明和使用自己的标签,也可与他人共享,可延伸性大,在XML 中,可以定义无限量的一组标注。XML提供了一个标示结构化资料的架构。一个 XML 组件可以宣告与其相关的资料为零售价、营业税、书名、数量或其它任何数据元素。随着世界范围内的许多机构逐渐采用XML标准,将会有更多的相关功能出现:一旦锁定资料,便可以使用任何方式透过电缆线传递,并在浏览器中呈现,或者转交到其他应用程序做进一步的处理。XML提供了一个独立的运用程序的方法来共享数据,使用DTD,不同的组中的人就能够使用共同的DTD来交换数据。你的应用程序可以使用这个标准的DTD来验证你接受到的数据是否有效,你也可以使用一个DTD来验证你自己的数据。 (4)国际化。标准国际化,且支持世界上大多数文字。这源于依靠它的统一代码的新的编码标准,这种编码标准支持世界上所有以主要语言编写的混合文本。在HTML中,就大多数字处理而言,一个文档一般是用一种特殊语言写成的,不管是英语,还是日语或阿拉伯语,如果用户的软件不能阅读特殊语言的字符,那么他就不能使用该文档。但是能阅读XML语言的软件就能顺利处理这些不同语言字符的任意组合。因此,XML不仅能在不同的计算机系统之间交换信息,而且能跨国界和超越不同文化疆界交换信息。 在Web数据挖掘中的应用 XML已经成为正式的规范,开发人员能够用XML的格式标记和交换数据。XML在三层架构上为数据处理提供了很好的方法。使用可升级的三层模型,XML可以从存在的数据中产生出来,使用XML结构化的数据可以从商业规范和表现形式中分离出来。数据的集成、发送、处理和显示是下面过程中的每一个步骤,见图1。 促进XML应用的是那些用标准的HTML无法完成的Web应用。这些应用从大的方面讲可以被分成以下四类:需要Web客户端在两个或更多异质数据库之间进行通信的应用;试图将大部分处理负载从Web服务器转到Web客户端的应用;需要Web客户端将同样的数据以不同的浏览形式提供给不同的用户的应用;需要智能Web代理根据个人用户的需要裁减信息内容的应用。显而易见,这些应用和Web的数据挖掘技术有着重要的联系,基于Web的数据挖掘必须依靠它们来实现。 XML给基于Web的应用软件赋予了强大的功能和灵活性,因此它给开发者和用户带来了许多好处。比如进行更有意义的搜索,并且Web数据可被XML唯一地标识。没有XML,搜索软件必须了解每个数据库是如何构建的,但这实际上是不可能的,因为每个数据库描述数据的格式几乎都是不同的。由于不同来源数据的集成问题的存在,现在搜索多样的不兼容的数据库实际上是不可能的。XML能够使不同来源的结构化的数据很容易地结合在一起。软件代理商可以在中间层的服务器上对从后端数据库和其它应用处来的数据进行集成。然后,数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。XML的扩展性和灵活性允许它描述不同种类应用软件中的数据,从描述搜集的Web页到数据记录,从而通过多种应用得到数据。同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。利用XML,用户可以方便地进行本地计算和处理,XML格式的数据发送给客户后,客户可以用应用软件解析数据并对数据进行编辑和处理。使用者可以用不同的方法处理数据,而不仅仅是显示它。XML文档对象模式(DOM)允许用脚本或其他编程语言处理数据,数据计算不需要回到服务器就能进行。XML可以被利用来分离使用者观看数据的界面,使用简单灵活开放的格式,可以给Web创建功能强大的应用软件,而原来这些软件只能建立在高端数据库上。另外,数据发到桌面后,能够用多种方式显示。 XML还可以通过以简单开放扩展的方式描述结构化的数据,XML补充了HTML,被广泛地用来描述使用者界面。HTML描述数据的外观,而XML描述数据本身。由于数据显示与内容分开,XML定义的数据允许指定不同的显示方式,使数据更合理地表现出来。本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。CSS和XSL为数据的显示提供了公布的机制。通过XML,数据可以粒状地更新。每当一部分数据变化后,不需要重发整个结构化的数据。变化的元素必须从服务器发送给客户,变化的数据不需要刷新整个使用者的界面就能够显示出来。但在目前,只要一条数据变化了,整一页都必须重建。这严重限制了服务器的升级性能。XML也允许加进其他数据,比如预测的温度。加入的信息能够进入存在的页面,不需要浏览器重新发一个新的页面。XML应用于客户需要与不同的数据源进行交互时,数据可能来自不同的数据库,它们都有各自不同的复杂格式。但客户与这些数据库间只通过一种标准语言进行交互,那就是XML。由于XML的自定义性及可扩展性,它足以表达各种类型的数据。客户收到数据后可以进行处理,也可以在不同数据库间进行传递。总之,在这类应用中,XML解决了数据的统一接口问题。但是,与其他的数据传递标准不同的是,XML并没有定义数据文件中数据出现的具体规范,而是在数据中附加TAG来表达数据的逻辑结构和含义。这使XML成为一种程序能自动理解的规范。 XML应用于将大量运算负荷分布在客户端,即客户可根据自己的需求选择和制作不同的应用程序以处理数据,而服务器只须发出同一个XML文件。如按传统的“Client/Server”工作方式,客户向服务器发出不同的请求,服务器分别予以响应,这不仅加重服务器本身的负荷,而且网络管理者还须事先调查各种不同的用户需求以做出相应不同的程序,但假如用户的需求繁杂而多变,则仍然将所有业务逻辑集中在服务器端是不合适的,因为服务器端的编程人员可能来不及满足众多的应用需求,也来不及跟上需求的变化,双方都很被动。应用XML则将处理数据的主动权交给了客户,服务器所作的只是尽可能完善、准确地将数据封装进XML文件中,正是各取所需、各司其职。XML的自解释性使客户端在收到数据的同时也理解数据的逻辑结构与含义,从而使广泛、通用的分布式计算成为可能。 XML还被应用于网络代理,以便对所取得的信息进行编辑、增减以适应个人用户的需要。有些客户取得数据并不是为了直接使用而是为了根据需要组织自己的数据库。比方说,教育部门要建立一个庞大的题库,考试时将题库中的题目取出若干组成试卷,再将试卷封装进XML文件,接下来在各个学校让其通过一个过滤器,滤掉所有的答案,再发送到各个考生面前,未经过滤的内容则可直接送到老师手中,当然考试过后还可以再传送一份答案汇编。此外,XML文件中还可以包含进诸如难度系数、往年错误率等其他相关信息,这样只需几个小程序,同一个XML文件便可变成多个文件传送到不同的用户手中。 结束语 面向Web的数据挖掘是一项复杂的技术,由于Web数据挖掘比单个数据仓库的挖掘要复杂的多,因而面向Web的数据挖掘成了一个难以解决的问题。而XML的出现为解决Web数据挖掘的难题带来了机会。由于XML能够使不同来源的结构化的数据很容易地结合在一起,因而使搜索多样的不兼容的数据库能够成为可能,从而为解决Web数据挖掘难题带来了希望。XML的扩展性和灵活性允许XML描述不同种类应用软件中的数据,从而能描述搜集的Web页中的数据记录。同时,由于基于XML的数据是自我描述的,数据不需要有内部描述就能被交换和处理。作为表示结构化数据的一个工业标准,XML为组织、软件开发者、Web站点和终端使用者提供了许多有利条件。相信在以后,随着XML作为在Web上交换数据的一种标准方式的出现,面向Web的数据挖掘将会变得非常轻松。
SAS数据挖掘
目 录
SAS帮助你进行数据挖掘
SAS的数据挖掘的方法论-SEMMA
SAS数据挖掘的集成软件工具--SAS/EM(Enterprise Miner)
SAS帮助你进行数据挖掘
早期的计算机主要就是用来进行数据处理或称数值计算的。后来随着计算机技术及其周边设备和通讯能力的发展,计算机更多地用于了大量繁杂事务的在线处理,生产设备的实时控制等。在此过程中,计算机系统积累了越来越多的数据,数据处理的任务就更加繁重。到今天,即使是发展中的我们中国,在一个企业中有数以几十或上百GB(10 字节)计的生产经营数据已不是什么希奇的事情了。企业的数据和由此而产生的信息是企业的重要财富。它最真实、具体的反映了企业运作的本质状况。但是,面对堆积如"山"的数据,你可能并未看清企业运作的本质规律是什么,或者说你至少是未能全部看清楚。面对激烈竞争的市场经济,企业的经营和管理者任何不符合客观事物规律性的决策都会给企业带来损失,甚至失败。运用有力的工具,不断地探索企业成败、得失的原委,并以此不断完善企业运作,这是每一个成功的企业家必不可少的工作任务。美国SAS软件从60年代在北卡洲立大学开创伊始就致力于计算机数据处理的研究。几十年来无数的成功事例使人们推崇SAS为国际上标准的数理统计分析软件;进而,SAS的丰富数据采集、数据管理、数据分析和信息展现的能力,又使之成为决策支持的最好的工具;现在SAS又推出了套装的SAS/Enterprise Miner这一企业级的数据处理分析和决策支持软件包。SAS系统的软件和这些软件运用的无数成功经验,一定能帮你从企业堆积如"山"的数据中"挖掘"出隐藏着的规律性,以支持你正确的经营决策。
SAS的数据挖掘软件集成了一系列有效的技术手段全面地支持你的工作。首先是支持你的数据重组工作。在你的企业或组织中或许已经有了成功的MIS系统、CIMS系统或是有了大量卓有成效的过程控制系统,甚至是办公自动化系统。其中的数据体系对应着一项项事务处理和一个又一个控制环节,它们定能完美的支持其原有的工作。但当你从企业级的角度去审视,并想进一步分析处理时,你会感到这些数据过于分散,数量越来越大,并难以整合。美国数据挖掘技术开拓者Gregory Piatetsky-Shapiro曾戏言说:"原来曾希望计算机系统成为我们智慧的源泉,但从中涌出的却是洪水般的数据!"其实不必埋怨数据太多,也不必埋怨原来的数据结构不好,它们是适应原有工作任务的,只是不适合你现在的要求而已。要支持你的企业级的决策,就是需要"洪水般的数据量",但是要面向企业级的工作任务对其进行重组。SAS有连续两年获奖的数据仓库系统支持你进行数据重组,并以全新的数据、信息的结构形式支持你的全新的工作方式。这在前面五篇连载文章中已作了详尽的介绍。建立数据仓库,这是进一步能有成效的进行数据挖掘的基础工作。
要看清企业或组织运作的状况,第一步就是能查询到反映你所关心事情的相应数据、信息。以SAS的多维数据库产品MDDB构造的数据仓库从物理结构上保证了你查询的迅速、方便。在提出在线分析处理OLAP概念时,多维数据结构是实现其任务的第一项要求。一些简单的决策支持所需要的就是有针对性的数据。在数据重组后的数据仓库中还建立了所谓数据市场(Data Marts),它就可以更针对决策支持的需要而设计,其中还可综合不同层次的汇总数据和跨数据仓库主题的数据。
SAS软件研究所对数据挖掘所下的定义是:数据挖掘是按照既定的业务目标,对大量的企业数据进行探索、揭示隐藏其中的规律性并进一步将之模型化的先进、有效的方法。
对数据的探索、挖掘首先要有一个明确的业务目标。一组生产数据可作生产能力的分析;可作生产成本核算的分析;亦可作影响产品质量诸因素的分析。目标决定了此后数据挖掘过程的各种运作,并导引了运作的方向。虽然说数据挖掘的业务目标在过程中不是不可修正的,也应当在工作进程中不断的进一步明确化,但其基本原则内容要保持稳定不变,否则数据挖掘工作是难以有效的进行的。
这里所指的大量企业数据最好是按照数据仓库的概念重组过的,在数据仓库中的数据、信息才能最有效的支持数据挖掘。假如所取用的数据并不足以反映企业的真实情况,当然也不可能挖掘出有用的规律。数据仓库的数据重组,首先是从企业正在运行的计算机系统中完整地将数据取出来。所谓完整,就是决策支持目标所涉及的各个环节不能有遗漏;其次各个环节的数据要按一定的规则有机、准确地衔接起来。从决策支持的主题来看,这重新组织过的数据,以极易取用的数据结构方式,全面的描述了该主题。
有了反映业务主题全貌的数据后,在进行数据的分析、探索时,对于不同的人,可能会采用不同的方式方法。Gartner Group在评价数据挖掘工具时,也特别提到了面对各种不同类型人员的可伸缩性和完整性。SAS支持各层次用户:
业务水平和数学水平可能比较一般,对这样的用户提供方便的数据查询是非常重要的。实际上早期的决策支持主要就是数据查询的支持。可能也要做一些简单的数理统计分析。若统计分析的要求是较明确的,可以事先做好,向他们提供统计分析的结果。这可做成SAS数据仓库中的信息市场(Information Mart)。对应他们随机的需求,应当提供菜单式选择的方便工具。
业务水平较高,但数学水平一般,且没有时间和兴趣再钻研数学方法的人,除了以上资源外,还应提供能简便的实现各种常用的数理统计的工具。让他们不必受累于繁杂的过程,通过简单的需求设定,即可执行他们需要的操作。
有计算机和数学知识,但对业务的熟悉程度一般的人员。对他们要提供较全面的数据处理工具,如:数理统计;聚类分析;决策树;人工神经元网络;……等。
对有很深计算机和数学造诣的数据分析专家不仅要提供上述环境,而且还要提供实现各种算法的工具和开发平台。
SAS系统提供了适合各类人员使用的既完整,又有伸缩性的摸块化的工具。
通过探索和模型化所得的结果可分成两种类型:一种是描述型的;另一种是预测型的。描述型的结果是指通过数据挖掘量化的搞清了业务目标的现状。如在原来工艺规程中允许的范围内,生产出来的产品质量水平波动很大。通过数据挖掘找出了这同一种产品在什么条件下产出的产品质量比较好;什么条件下产出的产品质量较差。通过数据挖掘,描述清楚了产品质量高低的规律性,这就为修改原来的工艺规程提供了决策的支持依据。
通过数据挖掘还可以建立起企业或某个过程的各种不同类型模型。这些模型不仅能描述当前的现状和规律性,而且利用它还可以预测当条件变化后可能发生的状况。这就为企业开发新产品;甚至于为企业业务重组提供决策支持依据。
在世界走向信息化的今天,充分利用企业的信息资源,挖掘企业和所对应市场的运作规律性,以不断提高企业的经济效益是先进企业的必由之路。世界有名的Gartner Group咨询顾问公司预计:不久的将来先进的大企业将会设置"统一数据分析专家"的工作岗位。
在以SAS数据仓库和数据挖掘应用获奖的美国LTV钢铁公司阐述其获奖文章的题目是"DW + DM = $aving"亦即在企业中建立数据仓库进行数据挖掘就是挖取企业的经济效益。
SAS的数据挖掘的方法论-SEMMA
正象是你拿个镐在山上挖几下不能算是开采矿山一样,用数理统计方法或人工神经元网络作个数据分析,也不能说就是在进行数据挖掘了。要开采矿山,首先要按照人类总结千百年来经验所形成的理论规律去找矿;发现矿藏后还要根据其实际地质情况,有针对性的采用相应的方法最有效的挖掘才能获得有价值的宝藏。同样,要想有效地进行数据挖掘也必须要有好的工具和一整套妥善的方法论。可以说在数据挖掘中你采用的工具、使用工具的能力、以及数据挖掘过程中的方法论在很大程度上决定了你能开拓的成果。SAS研究所不仅有丰富的工具供你选用,而且在多年的数据处理研究工作中积累了一套行之有效的数据挖掘方法论──SEMMA,通过使用SAS技术进行数据挖掘,我们愿意和你分享这些经验:
Sample──数据取样
Explore──数据特征探索、分析和予处理
Modify──问题明确化、数据调整和技术选择
Model──模型的研发、知识的发现
Assess──模型和知识的综合解释和评价
Sample──数据取样
当进行数据挖掘时,首先要从企业大量数据中取出一个与你要探索问题相关的样板数据子集,而不是动用全部企业数据。这就象在对开采出来矿石首先要进行选矿一样。通过数据样本的精选,不仅能减少数据处理量,节省系统资源,而且能通过数据的筛选,使你想要它反映的规律性更加凸现出来。
通过数据取样,要把好数据的质量关。在任何时候都不要忽视数据的质量,即使你是从一个数据仓库中进行数据取样,也不要忘记检查其质量如何。因为通过数据挖掘是要探索企业运作的规律性的,原始数据有误,还谈什么从中探索规律性。若你真的从中还探索出来了什么"规律性",再依此去指导工作,则很可能是在进行误导。若你是从正在运行着的系统中进行数据取样,则更要注意数据的完整性和有效性。再次提醒你在任何时候都不要忽视数据的质量,慎之又慎!
从巨大的企业数据母体中取出哪些数据作为样本数据呢?这要依你所要达到的目标来区分采用不同的办法:如果你是要进行过程的观察、控制,这时你可进行随机取样,然后根据样本数据对企业或其中某个过程的状况作出估计。SAS不仅支持这一取样过程,而且可对所取出的样本数据进行各种例行的检验。若你想通过数据挖掘得出企业或其某个过程的全面规律性时,必须获得在足够广泛范围变化的数据,以使其有代表性。你还应当从实验设计的要求来考察所取样数据的代表性。唯此,才能通过此后的分析研究得出反映本质规律性的结果。利用它支持你进行决策才是真正有效的,并能使企业进一步获得技术、经济效益。
Explore──数据特征探索、分析和予处理
前面所叙述的数据取样,多少是带着人们对如何达到数据挖掘目的的先验的认识进行操作的。当我们拿到了一个样本数据集后,它是否达到我们原来设想的要求;其中有没有什么明显的规律和趋势;有没有出现你所从未设想过的数据状态;因素之间有什么相关性;它们可区分成怎样一些类别……这都是要首先探索的内容。
进行数据特征的探索、分析,最好是能进行可视化的操作。SAS有:SAS/INSIGHT和SAS/SPECTRAVIEW两个产品给你提供了可视化数据操作的最强有力的工具、方法和图形。它们不仅能做各种不同类型统计分析显示,而且可做多维、动态、甚至旋转的显示。
这里的数据探索,就是我们通常所进行的深入调查的过程。你最终要达到的目的可能是要搞清多因素相互影响的,十分复杂的关系。但是,这种复杂的关系不可能一下子建立起来。一开始,可以先观察众多因素之间的相关性;再按其相关的程度,以了解它们之间相互作用的情况。这些探索、分析,并没有一成不变操作规律性;相反,是要有耐心的反复的试探,仔细的观察。在此过程中,你原来的专业技术知识是非常有用的,它会帮助你进行有效的观察。但是,你也要注意,不要让你的专业知识束缚了你对数据特征观察的敏锐性。可能实际存在着你的先验知识认为不存在的关系。假如你的数据是真实可靠的话,那末你绝对不要轻易地否定数据呈现给你的新关系。很可能这里就是发现的新知识!有了它,也许会导引你在此后的分析中,得出比你原有的认识更加符合实际的规律性知识。假如在你的操作中出现了这种情况,应当说,你的数据挖掘已挖到了有效的矿脉。
在这里要提醒你的是要有耐心,做几种分析,就发现重大成果是不大可能的。所幸的是SAS向你提供了强有力的工具,它可跟随你的思维,可视化、快速的作出反应。免除了数学的复杂运算过程和编制结果展现程序的烦恼和对你思维的干扰。这就使你数据分析过程集聚于你业务领域的问题,并使你的思维保持了一个集中的较高级的活动状态,从而加速了你的思维过程,提高了你的思维能力。
Modify──问题明确化、数据调整和技术选择
通过上述两个步骤的操作,你对数据的状态和趋势可能有了进一步的了解。对你原来要解决的问题可能会有了进一步的明确;这时要尽可能对问题解决的要求能进一步的量化。问题越明确,越能进一步量化,问题就向它的解决更前进了一步。这是十分重要的。因为原来的问题很可能是诸如质量不好、生产率低等模糊的问题,没有问题的进一步明确,你简直就无法进行有效的数据挖掘操作。 在问题进一步明确化的基础上,你就可以按照问题的具体要求来审视你的数据集了,看它是否适应你的问题的需要。Gartner group在评论当前一些数据挖掘产品时特别强调指出:在数据挖掘的各个阶段中,数据挖掘的产品都要使所使用的数据和所将建立模型处于十分易于调整、修改和变动的状态,这才能保证数据挖掘有效的进行。
针对问题的需要可能要对数据进行增删;也可能按照你对整个数据挖掘过程的新认识,要组合或者生成一些新的变量,以体现对状态的有效的描述。SAS对数据强有力的存取、管理和操作的能力保证了对数据的调整、修改和变动的可能性。若使用了SAS的数据仓库产品技术时就更进一步保证了有效、方便的进行这些操作。
在问题进一步明确;数据结构和内容进一步调整的基础上,下一步数据挖掘应采用的技术手段就更加清晰、明确了。
Model──模型的研发、知识的发现
这一步是数据挖掘工作的核心环节。虽然数据挖掘模型化工作涉及了非常广阔的技术领域,但对SAS研究所来说并不是一件新鲜事。自从SAS问世以来,就一直是统计模型市场领域的领头羊,而且年年提供新产品,并以这些产品体现业界技术的最新发展。
按照SAS提出的SEMMA方法论走到这一步时,你对应采用的技术已有了较明确的方向;你的数据结构和内容也有了充分的适应性。SAS在这时也向你提供了充分的可选择的技术手段:广泛的数理统计方法;人工神经元网络;决策树……等。
正如Gartner group评论中所指出的:数理统计方法还是数据挖掘工作中最常用的主流技术手段。在SAS的SAS/STAT软件包中就覆盖了所有的实用数理统计方法,并成为国际上统计分析领域的标准软件。SAS/STAT提供了十多个过程可进行各种不同类型模型、不同特点数据的回归分析,如正交回归、响应面回归、Logistic回归、非线性回归等,且有多种形式模型化的方法选择。可处理的数据有实型数据、有序数据和属性数据,并能产生各种有用的统计量和诊断信息。在方差分析方面,SAS/STAT为多种试验设计模型提供了方差分析工具。更一般的,它还有处理一般线性模型和广义线性模型的专用过程。在多变量统计分析方面,SAS/STAT为主成分分析、典型相关分析、判别分析和因子分析提供了许多专用过程。SAS/STAT含有多种聚类准则的聚类分析方法。利用SAS/STAT可进行生存分析(这对客户保有程度分析等特别有用)。SAS/ETS提供了丰富的计量经济学和时间序列分析方法,是研究复杂系统和进行预测的有力工具。它提供方便的模型设定手段、多样的参数估计方法。实际上SAS的数理统计工具不仅能揭示企业已有数据间的新关系、隐藏着的规律性;而且能反过来预测它的发展趋势,或是在一定条件下将会出现什么结果。
SAS以GUI式的友好界面提供了人工神经元网络的应用环境。一般的情况下人工神经元网络对数据处理的要求比较多,在处理上资源的消耗也比较大。但在SAS的集成环境下,有规范的数据维护、管理机制;可在诸如Client/Server等综合调度环境中运行,这就保证了你的人工神经元网络应用更顺畅的实现。
人工神经元网络和决策树的方法结合起来可用于从相关性不强的多变量中选出重要的变量。SAS还支持 平方自动交互检验(CHAID)。分类和回归树的软件包(CART)也已交付使用。
在你的数据挖掘中使用哪一种方法,用SAS软件包中什么方法来实现,这主要取决于你的数据集的特征和你要实现的目标。实际上这种选择也不一定是唯一的。好在SAS软件运行效率十分高,你不妨多试几种方法,从实践中选出最适合于你的方法和软件。
随着业界方法研究的进展,SAS会不断地向你提供实现它们的软件包,这将支持你数据挖掘工作可持续的发展。
Assess──模型和知识的综合解释和评价
从上述过程中将会得出一系列的分析结果、模式或模型。若能得出一个直接的结论当然很好。但更多的时候会得出对目标问题多侧面的描述。这时就要能很好的综合它们的影响规律性提供合理的决策支持信息。所谓合理,实际上往往是要你在所付出的代价和达到预期目标的可靠性的平衡上作出选择。假如在你的数据挖掘过程中,就预见到最后要进行这样的选择的话,那末你最好把这些平衡的指标尽可能的量化,以利你综合抉择。 你提供的决策支持信息适用性如何,这显然是十分重要的问题。除了在数据处理过程中SAS软件提供给你的许多检验参数外,评价的办法之一是直接使用你原来建立模型的样板数据来进行检验。假如这一关就通不过的话,那末你的决策支持信息的价值就不太大了。一般来说,在这一步应得到较好的评价。这说明你确实从这批数据样本中挖掘出了符合实际的规律性。
另一种办法是另外找一批数据,已知这些数据是反映客观实际的规律性的。这次的检验效果可能会比前一种差。差多少是要注意的。若是差到你所不能容忍程度,那就要考虑第一次构建的样本数据是否具有充分的代表性;或是模型本身不够完善。这时候可能要对前面的工作进行反思了。若这一步也得到了肯定的结果时,那你的数据挖掘应得到很好的评价了。
再一种办法是在实际运行的环境中取出新鲜数据进行检验。如在一个应用实例中,就进行了一个月的现场实际检验。
以上叙述的是数据挖掘的基本流程。如图所示这一过程可能是要反复进行的。在反复过程中,不断的趋近事物的本质,不断的优化你的问题的解决方案。在各个行业SAS大量的成功实践证明了这一方法的强大威力。SAS的SEMMA方法论也一定能帮助你在数据挖掘中取得成功。
SAS数据挖掘的集成软件工具-SAS/EM(Enterprise Miner)
利用SAS软件技术进行数据挖掘可以有三种方式:
使用SAS软件模块组合进行数据挖掘
将若干SAS软件模块联结成一个适合你的需要的综合应用软件
使用SAS数据挖掘的集成软件工具SAS/EM
在SAS数据挖掘的方法论──SEMMA的介绍中已经说明了可利用哪些SAS软件模块组合进行数据挖掘。这里将向你介绍SAS数据挖掘的集成软件工具SAS/EM。
SAS/EM是一个图形化界面,菜单驱动的,对用户非常友好且功能强大的数据挖掘集成软件。其中集成了:
数据获取工具
数据取样工具
数据筛选工具
数据变量转换工具
数据挖掘数据库
数据挖掘过程
多种形式的回归工具
为建立决策树的数据剖分工具
决策树浏览工具
人工神经元网络
数据挖掘的评价工具
可利用SAS/EM中具有明确代表意义的图形化的模块将这些数据挖掘的工具单元组成一个处理流程图,并依此来组织你的数据挖掘的过程。这一过程在任何时候均可根据具体情况的需要进行修改、更新并将适合你需要的模式存储起来,以便此后重新调出来使用。SAS/EM图形化的界面,可视化的操作,可导引即使是数理统计经验不太多的使用者也能按照SEMMA的原则成功的进行数据挖掘。对于有经验的专家,SAS/EM也可让你一展身手精细的调整分析处理过程。
这一强大的数据挖掘工具组合阵容,保证了可以支持企业级的数据挖掘的各个方面工作。
数据获取工具
在SAS/EM的这个数据获取工具中,你可以通过对话框指定要使用的数据集的名称,并指定要在数据挖掘中使用的数据变量。变量分为两类:区间变量(Interval Variable)和分类变量(Class Variable)。区间变量是指那些要进行统计处理的变量。对于这样一些变量,在数据输入阶段你就可以指定它们是否要作最大值、最小值、平均值、标准差等的处理。还可给出该变量是否有值的缺漏,缺漏的百分比是多少等。利用这些指定可对输入数据在获取伊始就进行了一次检查,并把结果告诉你,你可初步审视其质量如何。
区间变量以外的变量称之为分类变量。在数据输入阶段将会提供给你每个分类变量共有多少种值可供分类之用。
数据取样工具
对获取的数据,可再从中作取样操作。取样的方式是多种多样的,有:随机取样、等距取样、分层取样、从起始顺序取样和分类取样等方式。
随机取样 在采用随机取样方式时,数据集中的每一组观测值都有相同的被取样的概率。如按10%的比例对一个数据集进行随机取样,则每一组观测值都有10%的机会被取到。
等距取样 如按5%的比例对一个有100组观测值的数据集进行等距取样,则有:100 / 5 = 20,等距取样方式是取第20、40、60、80和第100等五组观测值。
分层取样 在这种取样操作时,首先将样本总体分成若干层次(或者说分成若干个子集)。在每个层次中的观测值都具有相同的被选用的概率,但对不同的层次你可设定不同的概率。这样的取样结果可能具有更好的代表性,进而使模型具有更好的拟合精度。
从起始顺序取样 这种取样方式是从输入数据集的起始处开始取样。取样的数量可以给定一个百分比,或者就直接给定选取观测值的组数。
分类取样 在前述几种取样方式中,取样的单位都是一组观测值。分类取样的单位是一类观测值。这里的分类是按观测值的某种属性进行区分。如按客户名称分类、按地址区域分类等。显然在同一类中可能会有多组观测值。分类取样的选取方式就是前面所述的几种方式,只是取样以类为单位。
设置多种形式的取样方式不仅给了你取样的灵活性,更重要的是从取样阶段你就能主动的考虑数据挖掘的目的性,强化了最后结论的效果。
数据筛选工具
通过数据筛选工具你可从观测值样本中筛选掉你不希望包括进来的观测值。对于分类变量可给定某一类的类值说明此类观测值是要排除于取样范围之外的。对于区间变量可指定其值大于或小于某值时的这些组观测值是要排除于取样范围之外的。 通过数据筛选使样本数据更适合你要数据挖掘的目标。
数据变量转换工具
利用此工具可将某一个数据进行某种转换操作,然后将转换后的值作为新的变量存放在样本数据中。转换的目的是为了使你的数据和将来要建立的模型拟合的更好。例如,原来的非线性模型线性化、加强变量的稳定性等。可进行取幂、对数、开方…等转换。当然,你亦可给定一个公式进行转换。
建立数据挖掘用的数据库
在进行数据挖掘分析模型的操作之前,要建立一个数据挖掘的数据库(DMDB),其中就放置此次要进行操作的数据。因为此后可能要进行许多复杂的数学运算,在这里建立一个专门的数据集将使你的工作更加有效率。在处理之前,可对你选进数据挖掘数据库的各个变量预先进行诸如最大、最小、平均、标准差…等处理。对一些要按其分类的变量的等级也先放入Meta Data之中,以利接下来的操作。总之在这个数据库中为数据挖掘建立一个良好的工作环境。
数据挖掘过程
在数据挖掘的过程中可以使用SAS广泛的数学方法,以及实现最新数学方法的环境。这给你提供了几乎无所不能的数据挖掘天地。限于篇幅这里主要介绍几种常用的工具。
多种形式的回归工具
在图形化工具中提供的回归操作中主要有线性回归和Logistic回归。在线性回归中有若干不同方法供你选择,诸如向前、向后的逐步回归等,还有多种回归运算结束的准则给你指定。
在Logistic回归过程中可拟合逻辑型的模型,其中响应变量可以是双值的或者是多值的。亦可使用逐步法选择模型,还可以进行回归诊断及计算预测值和残差值。
回归处理结束后,将会给你提供一份供讨论的详细的结果。内容包括:对回归参数的评价;对于模型拟合的统计结果;回归结果的标准输出:F-检验、均方差、自由度…等;回归运行的LOG;全部回归处理程序的代码;以及对此次回归记录文档资料。
为建立决策树的数据剖分工具
对数据集进行聚类、剖分建立决策树,是近来数据处理,进行决策支持常用的方法。在SAS/EM中亦支持这一功能。在建立决策树的过程中可有多种数据聚类、剖分的方法供你选择。
图形化界面的交互式操作,可分成六个层次:
对你在数据挖掘数据库中选定的数据集的操作
对数据集中的变量的处理
聚类、剖分时的基本选择项
聚类、剖分时的进一步操作选择项
模型的初步确定
结果的评价
聚类、剖分可以多种不同的方法进行,不能说哪种方法更"准确",这要看是否满足了你决策问题的需要。也许你应当试试不同方法所产生的结果。恰好SAS/EM不仅具有多种多样的处理方式的选择,而且具有相当高的"自动化"程度,使你能以极快的速度尝试多种方法,尽快得出你的最佳选择。
决策树浏览工具
你最后作出来满意的决策树可能是个"枝繁叶茂"的架构。SAS/EM给你提供了可视化的浏览工具。这一点很重要,一个复杂的决策树若难以观察,则会影响你实施决策时的效率,甚至是有效性。决策树浏览工具包括有:
决策树基本内容和统计值的汇总表
决策树的导航浏览器
决策树的图形显示
决策树的评价图表
人工神经元网络
人工神经元网络是近来使用越来越广的模型化方法,特别是对回归中难以处理的非线性关系问题,它往往能以更真实反映世界的能力使之得到更灵活的处理。在SAS/EM中有强有力的实现人工神经元网络模型的各种工具,使你免除了繁杂的数据处理,集中精力于模型本身的考虑。
在SAS/EM中的人工神经元网络应用功能可以处理线性模型;多层感知模型(MLP-Multilayer perceptron这是采用较多的缺省方式)和放射型功能(RBF-Radial basis function)。在交互式图形化界面上,在一个在线的关于SAS人工神经元网络问答的支持下,使你能高效的通过以下四个步骤建立人工神经元网络的模型:
数据准备
神经网络的定义
人工神经元网络的训练
生成预报模型
数据挖掘的评价工具
在SAS/EM的评价工具中,向你提供了一个通用的数据挖掘评价的架构,可以比较不同的模型效果;预报各种不同类型分析工具的结果。 在进行了各种比较和预报的评价之后,将给出一系列标准的图表,供你进行定量评价。可能你会有自己独特的评价准则,在SAS/EM的评价工具中,你还可以进行客户化的工作,对那些标准的评价图表按你的具体要求进行更改。这样一来,评价工作可能就会更有意义。
SAS/EM让你以可操作的规范性实现了前面所讲的SEMMA数据挖掘方法学。它所涵盖的技术深度和广度你是可以想见的。这对于各种不同类型的计算机用户来说都是非常适合的。如果让你自己规划这样一个系统,可能你很难想象得这样完整,更不要说你是否有这么多的时间和精力象SAS的数据挖掘专家这样去开发这样的工具。
XML“走进”数据库
张大佑 编译
摘自:计算机世界
---- 可扩展标记语言(XML,Extensible Markup Language)目前正在成为各种数据特别是文档的 首选格式。由于它具有标记不同字段(field)的能力,使得搜索变得更简单和动态化,从而把 企业准备扔进废纸篓的文件变成了进行数据挖掘的宝藏。XML把内容从演示格式中解放出 来,使材料可以多次重复使用。这样一来,同样的内容可以分别用于新闻发布、白皮书、宣 传册、演示和Web页面。对那些需要把不兼容的系统融合在一起的企业,XML可以充当公 共传输工具,以中性格式进行数据传输。此外,XML还可以处理各种数据,包括文本、图 像和声音,并且可以由用户进行扩展以处理任何特殊类型的数据。
----XML的特性使之成为在线和离线数据的共同语言。
----现在的问题是,怎样管理XML标记的数据。一种很有希 望的方法是用数据库对XML进行存储、检索和操作,即把XML标记的数据收入一个框架 中,在一种更容易管理、更系统化、更为人们所熟悉的环境中完成搜索、分析、更新和成果 输出工作。
----这里有两种不同的观点:纯粹派认为,只有以XML原始 的格式存储XML的数据库才能称为XML数据库;另一些人认为,只要能存入和检出XML, 且它本身又是一个数据库,那它就是一个XML数据库,而不必考虑数据是怎样存入的。我 们暂且把两派之争放在一边,凡内部不是以XML格式存储的XML数据库,叫做“XML- enabled数据库”;如果内部以XML格式存储数据,就称为“native-XML数据库”。
----使用现有的数据库类型和产品而不是以原始格式来存储 XML,是出自以下几种考虑:首先,普通的关系数据库和面向对象数据库已尽人皆知,而 native-XML数据库是新的;其次,人们熟知现有的关系数据库和面向对象数据库,也了解它 们的行为和性能,因此,他们不愿意转向native-XML数据库,因为其性能,特别是可伸缩 性尚未经过检验;最后,在企业看来,选择关系数据库和面向对象数据库是比较安全的,不 到迫不得已用不着冒险使用新的native-XML数据库。
----所幸的是,您用不着去冒险。现在已经有一些能够很好 地处理XML的XML-enabled数据库,并且是由久经考验的关系数据库和面向对象数据库担 此重任。这些数据库在收到XML后,将其分解为字段并按通常的方式存储它们,当检索XML 时,这些字段再被拼接成原状。
----设在麻省Reading的Xyvision企业解决方案公司研制的 Content@XML是一套内容管理系统,它可以在任何一种流行的关系数据库中存储XML文 件。其好处是可以开展基于内容的协同工作,进行多通道内容输出。一家技术出版商选用了 Content@XML,他们说XML将他们2周的工作压缩到几分钟,“该系统接受的是XML材 料,给出的却是你想要的任何格式的结果。”
----Lotus公司的Domino数据库也可以处理XML,而且其 XML Toolkit甚至可以让您像在native-XML数据库中一样创建和处理内容。
----在关系数据库中处理XML数据时,可用第三方中间件进 行转换,其中有一种产品称为XML-DBMS,这是一种基于Java Database Connectivity(JDBC) 的工具,可以在XML文档和数据库之间传输数据。
----不过,利用关系数据库和面向对象数据库存储XML也遭 到一些批评。例如,有人认为,XML最具吸引力的特性之一是其分层结构,而关系数据库 却将XML映射成关系表,从而将XML结构变成了平面的行和列。另外,遇到大型或复杂 文档时,在XML与数据库之间进行来回转换要耗费相当多的处理时间,从而降低了Web页 面的生成速度。
----目前,native-XML数据库已经开始出现,尽管人们还不 能完全信任它,但的确有一些native-XML数据库开始在实际应用中受到得青睐。另外,主 流的数据库厂商也可能在适当的时机推出自己的native-XML数据库产品。
---- 第一个,可能也是最有名的商用native-XML数据库是 位于美国加州的Software AG公司开发的Tamino。除了可以存储和访问XML外,Tamino 还具备多项功能,包括Open Database Connectivity、符合Unicode要求、HTTP通信及处理 非XML数据的能力。Gartner Group的一份报告指出:“Tamino特别适用于需要从多种不 同平台和格式整合信息并向业务伙伴或客户散发这些信息的机构。”
----据介绍,Tamino拥有直接XML检索和特殊检索的能力, 其查询语言强大而简短,可进入任意深度,使SQL相形见绌。
----其他native-XML数据库包括dbXML、eXcelon和 X
----Hive/DB,分别由美国的dbXML Group LLC公司、 eXcelon公司和荷兰的The Connection Factory公司研制。
----奇怪的是,对native-XML数据库的主要批评之一是性能 问题。有人预见到,当所搜寻的信息位于大文档的未尾时,由于缺乏其他机制,native-XML 数据库只能艰苦跋涉到最后,而关系数据库和面向对象数据库则可以将文档分成小块同时进 行搜索,速度当然要快得多。
----当然,上述困难并非无法克服,只要在存储时给各文档 分别加上索引就行了。Tamino就具有这种索引能力,从而弥补了大型文档搜索的不足,另 外,native-XML存储消除了不必要的转换操作。目前,Tamina有Windows NT、Windows 2000、Solaris和SCO Unix等版本,将来还要出Linux和一些大型机版本。
----目前,许多主流的数据库厂商都在把XML支持结合到其 产品中,或者提供可在其数据库中使用XML的工具。IBM提供了XML Extender for DB2, 以允许用户在DB2中存储XML文档,并提供一些新功能协助用户处理XML文档;Microsoft 的SQL Server 和也进行了XML扩充,据悉SQL将来要加入XML输出选项,用以向 其他系统传送信息。Oracle也拥有功能强大的XML索引引擎。
----有专家预计,这些数据库厂商不久将推出自己的native- XML数据库,以满足基于Web的电子商务对XML数据处理的需求。
----总之,XML的需求正在扩大,新的应用包括采用XML 标签的Internet搜索引擎、必须快速输出结果的电子商务系统、带XML标签的电子数据交 换、数据重复使用和内容个性化。作为处理上述应用的一环,XML数据库的需求也将快速 增长。
KDD-数据库中的知识发现
随着数据库技术的迅速发展以及数据库管理系统的广泛应用,人们积累的数据越来越多。激增的数据背后隐藏着许多重要的信息,人们希望能够对其进行更高层次的分析,以便更好地利用这些数据。目前的数据库系统可以高效地实现数据的录入、查询、统计等功能,但无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势。缺乏挖掘数据背后隐藏的知识的手段,导致了“数据爆炸但知识贫乏”的现象。
计算机技术的另一领域——人工智能自1956年诞生之后取得了重大进展。经历了博弈时期、自然语言理解、知识工程等阶段,目前的研究热点是机器学习。机器学习是用计算机模拟人类学习的一门科学,比较成熟的算法有神经网络、遗传算法等。
用数据库管理系统来存储数据,用机器学习的方法来分析数据,挖掘大量数据背后的知识,这两者的结合促成了数据库中的知识发现(KDD:Knowledge Discovery in Databases)的产生。实际上,数据库中的知识发现是一门交叉性学科,涉及到机器学习、模式识别、统计学、智能数据库、知识获取、数据可视化、高性能计算、专家系统等多个领域。从数据库中发现出来的知识可以用在信息管理、过程控制、科学研究、决策支持等许多方面。
1989年8月在美国底特律召开的第11届国际人工智能联合会议的专题讨论会上首次出现KDD这个术语。随后在1991年、1993年和1994年都举行KDD专题讨论会,汇集来自各个领域的研究人员和应用开发者,集中讨论数据统计、海量数据分析算法、知识表示、知识运用等问题。随着参与人员的不断增多,KDD国际会议发展成为年会。1998年在美国纽约举行的第四届知识发现与数据挖掘国际学术会议不仅进行了学术讨论,并且有30多家软件公司展示了他们的数据挖掘软件产品,不少软件已在北美、欧洲等国得到应用。在我国,许多单位也已开始进行数据挖掘技术的研究,但还没有看到数据挖掘技术在我国成功应用的案例。
Data Mining
Technologies, Techniques, Tools, and Trends
引言
什么是数据挖掘
数据挖掘是从大量的数据中抽取出潜在的、不为人知的有用信息、模式和趋势。
数据挖掘的目的:提高市场决策能力;检测异常模式;在过去的经验基础上预言未来趋势等。
数据挖掘不同的术语和定义:data mining, knowledge discovery, pattern discovery, data dredging, knowledge, data archeology.
数据挖掘支持技术
多技术的综合,Figure 1-2
数据挖掘的概念和技术
数据挖掘的结果:分类;序列分析;数据依赖分析;偏差检测
Figure 1-3
数据挖掘的方向和趋势
Figure 1-4
本书组织
Figure 1-6
数据挖掘的发展
Figure 1-10
Part I. Technologies for Data Mining
数据库系统
体系:Figure 2-21,Figure 2-22,Figure 2-23
数据仓库
数据库、数据仓库与数据挖掘的关系:Figure 3-10,Figure 3-11,Figure 3-12
支持数据挖掘的其他技术
统计推理:线性模型,非线性模型。线性回归用于预言;线性差别分析(linear discriminate ananlysis)技术用于分类;非线性技术用于估值;抽样
机器学习:active learning; learning from prior knowledge; learning incrementally。概念学习(concept learning);神经元网络;遗传算法;决策树;归纳逻辑设计(inductive logic programming)
可视化:可视化表达数据挖掘结果;将数据挖掘技术应用于可视化;使用可视化技术完善数据挖掘技术;使用可视化技术steer数据挖掘过程。
并行处理:数据挖掘算法 + 并行处理技术 = 并行数据挖掘算法
决策支持:Figure 4-6,Figure 4-7
数据挖掘的体系结构
综合技术体系结构:Figure5-1(标准接口和接口定义语言),Figure5-3
功能体系结构:Figure5-4,Figure5-5
系统体系结构:ODBC/CORBA Figure5-8,Figure5-9,三层体系结构Figure5-10,封装对象:Figure5-11
Part II. Techniques and Tools for Data Mining
数据挖掘过程
数据挖掘项目: 需求;合适的数据;工具;人员;资金。
例子
超市分析交易数据,安排货架上货物摆布,以提高销售
信用卡公司分析信用卡历史数据,判断哪些人有风险,哪些没有
调查局分析行为模式,判断哪些人对受保护的信息具有潜在威胁
药房分析医师的处方,判断哪些医师愿意购买他们的产品
保险公司分析以前的客户记录,决定哪些客户是潜在花费昂贵的
汽车公司分析不同地方人的购买模型,针对性地发送给客户喜欢的汽车的手册
人才中心分析不同客户的工作历史,发送客户潜在的感兴趣的工作信息
访问没有归类的竞争对手数据库,推断出潜在的归类信息
教育学院分析学生历史信息,决定哪些人愿意参加培训,发送手册给他们
核武器工厂分析历史核查信息记录,决定没有采用哪项预防措施将导致核灾难
广告公司分析人们购买模式,估计他们的收入和孩子数目,作为潜在的市场信息
调查局分析不同团体的旅游模式,决定不同团体之间的关联
医师分析病人历史和当前用药情况,不仅诊断用药而且预测潜在的问题
税务局分析不同团体的交所得税的记录,发现异常模型和趋势
调查局分析罪犯记录,推断哪些人可能会犯恐怖罪和大的谋杀罪
数据挖掘应用领域 Figure 6-1
数据挖掘的步骤:Figure 6-3,修剪结果:Figure 6-4;管理因素
挑战:Figure 6-5
用户接口方面:研究较少;可视化
数据挖掘的结果、方法和技术
数据挖掘应用步骤:Figure 7 – 1
数据挖掘的结果(任务,类型)
分类
Estimation: 例子,分析消费模型,估计个人收入和孩子数目
预言 例子,根据个人教育、当前工作、行业趋势,预言2005年工资
Affinity Grouping(关联规则,Correlation)
聚集
偏差分析deviation
异常检测 anomaly:fraud detection ; medical illness detection …
数据挖掘方法 Figure 7-3
自顶向下top-down:以假设开始
自下而上bottom-up:直接(supervised learning)-提问;间接
混合方法
数据挖掘技术和算法
market basket analysis:智能搜索,超市
决策树:分类
神经网络:聚集,偏差分析…
归纳逻辑程序
link analysis, automatic cluster detection techniques ,nearest neighbor techniques
遗传算法
模糊逻辑
约略集rough set
concept learning概念学习
简单的基于规则的推理
逻辑程序作为数据挖掘技术
演绎逻辑程序
归纳逻辑程序
ILP作为数据挖掘技术
ILP应用 Figure 8 –6
数据挖掘工具
数据挖掘工具分类 Figure 9-1
原型工具
新的功能模型
开发新的模型、框架:Stanford University; MITRE Corporation ; Hitachi Corporation ; Rutgers University
目的:综合数据挖掘和数据库管理
项目名称:Queryflocks (Stanford University,MITRE Corporation,Hitachi Corporation),开发支持数据挖掘查询方法和优化技术。
Rutgers University,数据挖掘查询语言
新的信息服务
挖掘不同类型的数据(多媒体)
Text数据挖掘:Queryflocks;Cheng and Ng ,University of Arizona;Feldman,Bar-Ilan University in Israel
Image数据挖掘:SKICAT,JPL(Jet Propulsion Lab);Clifton,MITRE Co.;University of British Columbia
WEB数据挖掘:University of Michigan ;University of Minnesota
Scalability
数据挖掘算法的可度量性:The Massive Digital Data System Project;Magnify Inc.;Thinking Machines Co.;SGI;IBM’s YorkTown Heights research laboratory
结果的可理解性
GTE Lab;Simon Fraser University;University of Massachusetts at Lowell
大规模的项目
IBM Quest project, Agarwal
Simon Fraser University’s DBMINER, Han
商业工具
Red Brick: DATAMIND
Lockheed Martin: RECON
IBM: INTELLIGENT MINER
Information Discovery: IDIS
Neo Vista: DECISION SERIES
Part III. Trends in Data Mining
挖掘分布式、异质、遗留数据库
分布式数据库:Figure 10-1,Figure 10-2
异质数据库的互操作:Figure 10-4
遗留数据库的迁移:Figure 10-5
挖掘分布式、异质、遗留数据库
分布式数据挖掘:Figure 10-6,Figure 10-9
异质数据库挖掘:Figure 10-10,Figure 10-11,Figure 10-12,Figure 10-13,Figure 10-14 合作数据挖掘,中间件 Figure 10-16
遗留数据库挖掘:Figure 10-17,Figure 10-18,系统重建Figure 10-19
多媒体数据挖掘
两种方法:抽取结构,挖掘结构数据;直接挖掘多媒体数据
多媒体数据库:体系结构;数据建模;MM-DBMS功能:数据操纵,事务管理,元数据管理;存储管理;一致性和完整性。
挖掘多媒体数据
Text挖掘
半结构,非结构;
转换成结构化数据,在结构化数据上挖掘(文本—关系数据库)Figure 11-10
数据挖掘与信息检索结合Figure 11-11
开发直接挖掘非结构化数据的工具Figure 11-12
Image 挖掘
Clifton 抽取元数据挖掘;Unusual pattern; classify, cluster, associate image
Video 挖掘
转化Figure 11-14;直接挖掘Figure 11-15
Audio 挖掘
与Video类似,Text转化Figure 11-16;直接挖掘Figure 11-17
挖掘综合类型
与异质数据库类似,MDP Multimedia Distributed Processor
先综合后挖掘Figure 11-18, 先挖掘后综合Figure 11-19
数据挖掘和WWW
Internet 数据库管理和数字图书馆
Web数据挖掘
分类:Figure 12-12
挖掘Web数据:Figure 12-6;Figure 12-7;Figure 12-8;Figure 12-9;Figure 12-10
挖掘访问模式:Figure 12-11
数据挖掘的安全和隐私问题
inference 问题
mining , warehouse , inference
隐私问题:Figure 13-7
数据挖掘的元数据
元数据
挖掘和元数据
元数据挖掘Figure 14-4
mining and repository Figure 14-5
多媒体数据和元数据Figure 14-6
Web数据挖掘和元数据Figure 14-7
中心容器Figure 14-8(数据库中的数据很难直接挖掘)
总结和方向
总结
Chap 1:引言
概念;结果,技术,方法;本书三层框架- 所涉及的技术,技术和工具,趋势
Part I :支持数据挖掘的技术
Chap 2:数据库系统
数据模型;数据库体系结构;数据库功能;数据库和数据挖掘的结合
Chap 3:数据仓库
数据仓库定义、技术、功能;开发数据仓库;数据仓库、数据库管理和数据挖掘的关系
Chap 4:其他支持的技术:统计、机器学习、可视化、并行处理、和决策支持
Chap 5:数据挖掘不同的体系结构:技术;功能;Client/Server
Part II :数据挖掘技术和工具
Chap 6:数据挖掘过程
例子(偏差分析/关联规则/分类等);数据挖掘的原因;数据挖掘步骤;用户接口方面
Chap 7:数据挖掘的结果(任务),方法和技术
结果-聚集/分类等;方法论-自顶而下/自下而上/混合;技术-决策树/神经网络/逻辑归纳
Chap 8:逻辑归纳inductive logic programming
演绎逻辑编程;逻辑归纳编程;ILP作为数据挖掘技术及其缺陷
Chap 9:数据挖掘工具
研究原型-新的功能模型/新的信息服务/结果可理解性/可度量性/大规模项目;商业工具
Part III :数据挖掘趋势
Chap 10:挖掘分布式、异质、遗留数据库
新的研究领域;问题;需要做的工作
Chap 11:多媒体数据挖掘
多媒体数据库简介;在多媒体数据上的数据挖掘 – 文本/图象/视频/音频数据;方向
Chap 12:Web数据挖掘
Web数据管理;Internet数据库和数字图书馆;WEB数据挖掘 – Internet数据库(构建数据仓库和多媒体数据挖掘)/用户浏览模式
Chap 13:数据挖掘的安全和隐私问题
推论问题inference problem;处理推论问题的方法;逻辑归纳和推论;隐私问题
Chap 14:数据挖掘的元数据
元数据简介;挖掘元数据;利用元数据挖掘数据
挑战
不完全和不精确的数据
标记数据,计算机处理,存储数据库,创建数据仓库,数据清洁,解决不确定性,格式化数据
不充分的工具和资源
数据挖掘工具不成熟
剪除结果和理解结果的能力
prune mining result,可视化,数据的可理解性
多语言挖掘 : 处理多种语言的工具
数据挖掘算法的可度量性
数据挖掘项目管理上的支持
Part III分布式,异质,遗留数据库/多媒体数据/WEB数据/安全和隐私问题/元数据挖掘
方向
数据理解
不完全和不精确的数据
多语言挖掘
多策略学习
可度量性Scalability (大规模数据)
更好的数据挖掘技术
数据挖掘理论 (艺术 – 理论)
技术综合
分布式,异质,和遗留数据库挖掘
多媒体数据挖掘
WEB挖掘
元数据挖掘
数据挖掘的安全和隐私
归纳和建议
数据挖掘是多技术的综合: 数据管理,机器学习,统计推理,高性能计算,决策支持,可视化
好的数据是数据挖掘的关键
数据挖掘研究处于初级阶段 (98) : 期望不同的方法论和OO设计和分析技术的应用
如 UML应用在数据挖掘上
实际数据挖掘应用的开发有助于对数据挖掘的理解
数据挖掘项目需要管理和交流
利用各种数据挖掘产品和原型的商业和研究的材料
数据挖掘是一个机遇,也是一个挑战
1 OLAP分析
OLAP是On-Line Analytical Process(在线分析处理)的首字母缩写。利用OLAP分析,分析人员、管理人员或执行人员能够针对同一个主题,从多个角度对数据进行分析,从而快速、交互地得出决策支持的分析结论。它的技术核心是"维"的概念,因此,OLAP也被称为多维数据分析。
OLAP分析只是将数据转化为了信息,提供了用户对某一个主题,从不同的角度来观察的机制,并没有将信息转化为知识,即没有在数据中发现规律,预测未来的发展趋势,属于数据仓库的一般应用。
OLAP分类
现在,业界存在四种方式的OLAP分析:DOLAP,ROLAP,MOLAP,HOLAP。
DOLAP
DOLAP即Desktop OLAP,是将OLAP分析要用到的数据,传输并存储到用户的客户端,这样用户的访问将不受网络瓶颈的制约,但操作的安全性和数据的安全性难以保障,并且存在管理性和维护性的问题。此种应用只是应用在小型的项目中。
MOLAP
MOLAP,即MultiDimension OLAP,将按照主题定义的OLAP分析所要的数据,生成并存储成多维数据库,形成"超立方体"的结构。生成的多维立方体已经计算生成了一些汇总值。当用户发出请求时,从多维立方体中取得数据,而不是从数据仓库中取得数据,这样对用户响应的时间快,但由于多维立方体的生成,造成了数据的存储空间增大。并且多维立方体中,不可能存储大量的细节数据,综合数据较多,所以分析的颗粒度不会太细。
ROLAP
ROLAP以关系型结构进行多维数据的表示和存储,而不生成多维立方体,只是存储数据模型与数据仓库数据之间的映射关系,真正的关系物理存储在数据仓库。在进行多维分析时,OLAP服务器根据定义的模型,将用户的分析需求,从数据仓库中取得数据,进行实时分析。这样增加了对用户的响应时间,但数据只存储在一次,相对MOLAP,节省了空间,并且分析可以到具体细节数据,即考察数据的颗粒度较小。当分析应用的灵活性较大,或进行多因素分析预测(如信用积分卡因素分析)时,应以ROLAP为主。
HOLAP
MOLAP,ROLAP各自存在不同的优缺点,HOLAP在它们中间提出了折中的解决方案。根据对用户经常用到的维度和测量值的分析,将它们生成MDDB,而与这些维度和测量值相关的详细数据,仍然以关系型数据的形式保存在数据仓库中,这样既解决了OLAP分析的速度问题、存储问题、也解决了对详细数据的分析问题。
SAS 提供的OLAP解决方案
SAS提供的OLAP解决方案包括:
1. HOLAP(MDDB SERVER); 2. MOLAP(MDDB SERVER); 3. ROLAP; 4. 前端表现工具(EIS,SAS/Enterprise Guide,Excel2000,WebEIS)。
我们在实际项目中,根据用户不同的需要和实际情况,可以选择不同的解决方案来满足用户的需求。
它们具有以下特点:
1.支持所有的操作系统平台; SERVER支持的操作系统包括VMS、MVS、UNIX、Windows NT等,OLAP 表现工具支持的操作系统包括Windows、Windows NT、UNIX;
2.一个版本适用于任一平台; 当一个OLAP模型建立、生成以后,它可以在任一平台上运行。这样IT人员可以充分利用现有的硬件资源,并解决了管理性和维护性的问题。当系统升级或更新时,也可节省由于升级更新而花费的人力、物力和费用;
3.支持OLE(Object Linking Embedding); SAS MDDB SERVER可以承担OLE SERVER的功能,并支持所有对OLE进行支持的前端表现工具厂家;
4.对WEB的支持 用户可以通过浏览器,进行OLAP分析,形成多维报表、图形等;
5.可以分析详细的数据 由于SAS MDDB SERVER对HOLAP的支持,用户分析的不仅仅是汇总的数据,也可以通过汇总的数据,分析到与之相关的明细数据。
SAS/MDDB SERVER
SAS/MDDB Server提供GUIs,IT人员可以迅速地建立、维护和优化一个MDDB。
在一个SAS MDDB中,数据存储在名为NWAY crossing的数据汇总结构当中。一个NWAY crossing是一个多维数据模型,代表MDDB创建过程中所有指定的crossing。所有的SAS MDDB都包含一个NWAY crossing。
除了NWAY crossing,IT人员还可以创建一个或多个summary crossings。用户可以使用简单的层次语句创建summary crossings。这些语句可以定义一个或多个其它基于NWAY crossing的汇总。这样,可以将多个MDDB联合,生成一个大的MDDB。
SAS/MDDB Server具有以下特点:
1. 自动决定哪些计算值,是事先生成,还是在用户提出请求时动态生成; 2. MDDB生成的过程,即LOG对每一步都有详细的描述:Appendix显示每一条统计、描述,数据的存储和生成方式等; 3. 只存储非空的数据和其数据汇总,并压缩存储稀松数据; 4. 可以将多个MDDB联合,生成一个大的MDDB,并且对要联合的MDDB的个数没有限制; 5. 对一个维中,level的个数没有限制; 6. 对测量值的个数没有限制; 7. 在一个MDDB中,可以存储8个统计值,在运行时,可以生成其他13个统计值; 8. 提供Proxy MDDB机制,对一个已经生成的MDDB,可以增量更新; 9. 从SAS DataSet中的数据生成MDDB时,速度优于一般的DBMS。
SAS ROLAP 分析
在数据的存储量不是很大,不要求分析的响应时间,并应用相对灵活的情况下,可以采用ROLAP的分析方法,即只是在SAS/EIS Metabase中建立模型,不生成MDDB。
1. 在SAS中,支持多种数据的存储,包括:SAS DATA SET; IBM UDB; IMS; VMS; ORACLE; Informix; Sybase; SQL Server; SAP; Red Brick;等
2. SAS与数据存储的连接方式,有以下三种:SAS View(在SAS中生成View,保存对数据的映射关系); SAS Liberary(将数据进入SAS Liberary中); ODBC(通过ODBC与其相连);
OLAP前端表现工具
EIS
SAS/EIS,提供一个免编程的开发环境,不仅使用简单,而且开发容易。
SAS/EIS为用户提供了以下"基本功能":
1. 应用交互式GUI窗口操作对等本地主机应用的访问; 2. 数据敏感钻入(data-sensitive drill down); 3. What-if分析; 4. 多维数据浏览和分析; 5. 异常数据报告(exception reporting); 6. 关键成功因子的图表显示及重叠表(grouped bar charts)。 7. SAS/EIS包括一系列业务报表对象,提供用于动态显示和交互式分析的多种表现方式。这些业务报表对象包括:
.Multidimensional Data Viewer-允许以用户选择的任意方式、任意角度浏览和分析数据。 .Multidimensional Report-允许用户定义,显示,打印多维报表。 .Organizational Chart-以图表方式显示有组织的数据。 .Comparison Report with horizontal bars-将文字和图表结合在一起,即时地以图表形式展示表格数据。 .Expanding Report-以图表形式提供全面的数据表现,帮助钻入到任意一层数据。 .Overlapping Bar Report-将不同的数据集展示在一起-可以清晰地了解到趋势或比较信息。 .Multicolumn Report-以表或图表的形式,在各个汇总级上进行数据汇总。
这些报表对象包括具有内置钻入功能,用于快速数据导航的多个层次。高度的灵活性、强大的面向对象快速应用开发以及完全自定义的应用本身,帮助您提高生产效率、减少开支、最大限度地利用企业的全部资源。
8. SAS/EIS还包括另外30多个预先编制的对象,帮助用户完成最常见的数据处理任务。 9. SAS/EIS帮助用户创建自定义EIS应用,这些应用具有:
.方差分析和异常数据报告-SAS/EIS提供一个定义、执行标准的行和列方差报表的工具。这些报表可以帮助将注意力集中到预期值与真实值之间的差距上。自动的、数据驱动钻入帮助业务分析员基于所制定的层次,逐层深入考察数据。SAS/EIS提供了异常数据报告和交通灯功能。用户可以指定颜色以突出异常数据或将数据划分为适当的、不同的范围。 .关键成功因子-提供一个面向对象的前端,开发和展示关键成功因子应用。 .直接访问业务图表-除了被用作一个应用开发接口,SAS/EIS还可以作为SAS系统与图表生成工具之间的一个直接连接。代替在其它EIS软件包中重新调用所选取的图表,用户可以创建新的应用,它将随着数据的变化自动生成新的图表-并同样简单地修改这一图表。 .预测--SAS/ETS可以为多个不同部门提供真正的自动预测。用户可以从多个角度了解当前的业务情况及未来的发展趋势。
10. 可以自定义OLAP应用,并将生成的报表、分析等,引入其他应用程序。
支持OLE DB的第三方前端表现工具
在SAS中的OLAP分析,前端可以通过支持OLE DB的第三方前端表现工具,如Excel 2000来呈现给用户。用户只要安装Open OLAP Server For Client(购买MDDB SERVER时,免费提供),即可利用Excel 2000等前端工具提供的友好界面。这也证明了SAS MDDB SERVER对OLE的支持,使SAS产品成为一个真正开放的产品。
SAS/Enterprise Guide
SAS/Enterprise Guide是SAS公司提供的界面友好、操作方便的前端表现工具。它的特点是: 1. Windows风格的界面; 2. 以项目来组织应用; 3. 提供Wizard提供用户简单、易操作地应用SAS语言; 4. 完全在线帮助; 5. 界面可定制; 6. 可将分析的结果,引出到其他系统,如MS Word,MS Powerpoint等; 7. 可将分析的结果存成HTML格式,发布到WEB; 8. 可将分析的结果,用E-mail发送; 9. 可将分析的结果生成报告; 10. 根据预先定制的时间表,运行SAS应用,并将结果发布到WEB上; 11. 运行平台:Win98,Win95,NT4,Windows2000; 12. 支持多种应用连接协议(如COM/DCOM)连接客户端.
WebEIS
WebEIS使用户通过Browser,进行OLAP分析成为可能。它是将在SAS MDDB SERVER中定义的OLAP应用,生成Applets,下载到Client端。当用户发出请求时,由Applets与MDDB SERVER交互,完成用户的Drill down,Drill up,Rotate,Slice等分析。它具有以下特点: 1. 在SERVER端统一数据管理,具有易管理性和易维护性; 2. Applets自动生成,无须编程; 3. 用户除可以完成Drill down,Drill up,Rotate,Slice等,还可以即时生成计算值; 4. 可以与SAS其他的产品,如WebAF等联合使用,如生成JavaBeans等;
IBM推出新型数据挖掘技术
IBM近日发布了一项新型的基于标准的数据挖掘技术——IBM DB2智能挖掘器积分服务(IBM DB2 Intelligent Miner Scoring Service),它可以帮助企业轻松地为自己的客户和供应商开发出个性化的解决方案。
作为DB2通用数据库的一个组件,IBM DB2 Intelligent Miner Scoring Service可以使企业依据既定的标准将自己的客户进行归类。以发放贷款的银行职员为例,利用该技术,他能够基于公共政策适时地对申请贷款的客户的信任度进行认定。而贷款申请完全可以通过电话或者互联网完成。
“预测模型”是在数据挖掘过程中开发出的信息模型。“挖掘模型”能够在不破坏企业生产系统的情况下进行动态更新。IBM DB2 Intelligent Miner Scoring Service使开发人员无须针对连接到低级专有应用编程接口(API)的模型编程,更不必了解复杂的数据格式,所以编程人员能很容易把挖掘模型重新汇编并链接到应用程序中去。
作为DB2的扩展,IBM DB2 Intelligent Miner Scoring Service直接将数据挖掘技术集成为相关的数据库管理系统,满足了应用程序开发、配置的快速增长,使应用程序速度更快。
IBM数据挖掘性能的核心是预测模型的行业标准——预测模型标记语言(PMML)。数据挖掘程序开发组(Data Mining Group)与数据挖掘软件行业和学术界的代表共同对PMML进行实验研究的结果表明,PMML能够让客户轻松对数据挖掘预测模型进行创造和共享。借助这种基于XML的汇编语言,不同的应用程序进行模型交换时,兼容障碍将不复存在。
DB2 Intelligent Miner Scoring Service为企业创造了一种专有的数学模型,可以帮助企业更好地鉴别客户的财政问题。
I M 使用简介
数据:
在进行任何的处理之前,我们先要创建一个指向一定数据的数据对象。也就是指定一个输入数据或数据输出在哪里。这个可以通过数据向导来实现。
数据种类分为两种:
数据库中的表/视图,通过选择DB2中的表来完成。
平面文件,通过指定一个有效的路径来定位文件,然后对文件中的记录定义相应的字段名。
数据预处理:
在运用数据挖掘的算法之前,我们可以对数据进行一定的处理,使算法的运用效果更明显。这些可以通过IM中的处理向导来实现。
具体预处理的内容有:
编码丢失值:就是指定一个或多个字段,对每个字段搜索丢失值,并给予一个值。例如:婚姻状态字段为空的话,我们可以给它一个 “未婚”的值。
编码无效值:就是对于一个字段的值,不是一个有效值的话,我们可以给它一个缺省的值。例如:对于婚姻字段,如果是“已婚”、“未婚”值之外的话,我们可以给它一个值。
成组记录:就是SQL中的Group的作用,通过Group,然后输出成组的字段和一些聚集表达式。
废弃带丢失值的记录:就是给出几个字段,当这些字段中有Null值时,这个记录就被丢弃了。
过滤记录:在向导中输入一些条件,只有当条件满足时记录才保留。
过滤使用值集合的记录:给出两个字段,只有当第一个字段的值在第二个字段中出现时,第一个字段所在的记录才别保留下来。
过滤字段:可以通过指定一些字段,然后选择对这些字段是保留下来,还是保留除这些字段以外的其他字段。
获取随机样本:通过指定要抽取的样本的比例,从原始数据中采样出一个较小的样本。
计算值:通过SQL语言来生成一些新的字段。不支持SQL中的列函数。
将记录复制到文件:通过指定一个数据库中的表,然后指定一个文件,就可以将表中的一些字段存入文件中了。
聚集值:使用它来产生输出数据,其中包含输入数据中的聚集值。可以同时提供多个聚集表达式和多个新字段名。
离散化成分位点:通过指定一个字段和分位点的个数,我们就可以把该字段的值分成相应的个数。
离散化使用范围:指定两个数据源,然后对第一个数据源中的一个字段进行离散化。在第二个数据源中,我们指定三个字段,分别作为间隔边界字段、标识字段和值字段。
连接数据源:就是通过指定两个数据源,然后我们对这两个数据源进行连接,可以指定进行连接的字段,最后就可以产生一个新的表了。
清除数据源:可以用来删除一个表或视图。
选取记录的主元字段:
映射值:指定两个数据源。比较第一个和第二个数据的值。当他们的值相同的时候,就将指定的映射值复制到输出数据中。
运行SQL语言:可以输入一个SQL语句,然后就可以在数据库服务器中运行,但是不要用这个函数来运行SELECT语句。
转化成小写或大写:该函数可以将指定的字段转换成大写或小写。
等等。
发掘算法:
在IM中提供了六类数据挖掘的算法,我们来分别看一下:
分类:IM提供了两种算法:决策树和神经元。在参数方面,我们需要指定输入字段和类标签。同时在神经元方法中可以指定内样本大小,外样本大小,最大遍数,准确率,错误率。在做好一个分类任务后。使用中分为三个阶段:训练阶段、测试阶段和应用阶段。
内外样本的意思是:若内样本为4,外样本为2的话,就是指在训练阶段使用开始的4个记录,然后跳过2个,再使用后面的4个,这样直到最后。而在验证阶段则刚好相反。
准确率是指:对训练集的分类的准确率。
错误率是指:对验证集的分类所可以容忍的最大错误率。
分群:IM提供了两种算法:神经元和演示图。在参数的设置上,主要需要设置:最大遍历数(对数据库的扫描次数)、最大分群数、活动字段(用于分群的字段)、补充字段(用于显示群上的一些信息的字段)。分群完成后,我们还需要对结果进行一定的理解。
关联:只有关联规则一个方法。参数的设置上有:事务字段(用于区别一个事务的字段)、项目字段(一个事务中包含的内容)、最小支持度(可以有系统来决定)、最小可信度、最大规则长度。
相似序列:目的是查找时间序列数据库中所有相似子序列的出现。例如寻找具有相似销售序列的不同商品。
序列字段
时间字段
值字段
沙滩服
一月
沙滩服
二月
在参数中我们就要给出序列字段、时间字段和值字段。
然后我们需要指定一些运行参数: 、间隔、窗口尺寸、匹配长度。
是表示相似性的参数: 越小,产生的序列的相似性就越好。
间隔表示:一个子序列可以被忽略的最大长度,即使它不满足 的要求。
匹配长度是指:匹配的子序列的长度占完整序列的总长度的比例。
序列模式:用于找出事务间的模式。参数方面有:事务组字段、事务字段、项目字段、最小支持度、最大模式长度。
事物组字段:就是客户的标识符,用于唯一的代表一个用户。
事务字段:用于表示日期或事务号,来表示用户的一次交易。
项目字段:就是一个事务的具体内容。
预测:IM提供了两种预测的算法:径向基函数和神经元。目的是预测一个字段的值,并显示此值和其他字段之间的关系。 在参数的设置上主要就是:活动字段(用做依据的字段)、预测字段(被预测估值的字段)。同时和分类一样,预测也分为三个阶段:训练阶段、测试阶段和应用阶段。
统计:
IM也提供了一些统计的方法:单变量曲线、双变量统计、线形回归、因子分析、主分量分析。
单变量曲线:查找一个精确描述一段时间上数据分布的算术函数。
双变量统计:计算附有说明的单变量或多变量统计。还可以计算分位点或极值并创建样本。
线形回归:使用线形回归来确定从属变量和一个或多个独立变量之间的最佳线形关系。
因子分析:找出许多变量之间的关系,这些关系用一些基本的、但又不可观测的随机分位点来表示。
主分量分析: 查找原始变量的标准化线形组合,可以使用此分析类型来总计数据,并识别变量的线形关系。使用主分量分析,可以减少用回归分析、分群和其它的分析方法时多元数据的变量数。
本文的工作获国家863计划支持,项目编号863-306-ZT02-05-1
2 蔡伟杰,硕士研究生,研究兴趣数据仓库和数据挖掘;张晓辉,硕士研究生,研究兴趣为数据仓库与数据采掘;朱建秋,博士研究生,研究兴趣为知识库,数据仓库和数据挖掘;朱扬勇,博士生导师,研究兴趣为数据仓库与数据采掘,多媒体技术
PAGE
PAGE 2