关联分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于关联分析的研究综述
引言
从信息处理的角度,人们更希望计算机帮助我们分析数据、理解数据,帮助我们基于丰富的数据作出决策,做人力所不能及的事情。于是,数据挖掘——从大量数据中用非平凡的方法发现有用的知识——就成了一种自然的需求,它的主要目的便是从庞大的数据库中寻找出有价值的隐藏事件,找出其中的知识,并根据不同的问题建立不同的模型,以提供决策时的依据,数据挖掘对组织及决策行为将有相当大的帮助。
数据挖掘又称数据库中的知识发现(Knowledge Discovery in Databases),知识发现的一般步骤为:数据抽取,数据清理,数据设计,算法设计,算法运行,结果分析。
1.数据挖掘
数据挖掘的核心步骤是算法的设计阶段,一个好的算法(速度快、伸缩性好、结果容易使用且符合用户的特定需求)是影响数据挖掘效率的最重要因素。数据挖掘是一个循环过程,如果用户对结果不满意,可对数据库进行重新挖掘。
从数据库中发掘的规则可以有以下几种:特征规则、区分规则、聚类规则、关联规则和进化规则等。关联规则是比较新的一种,它的形式简洁,易于解释和理解并可有效捕捉数据间的重要关系。
2.关联规则
关联规则挖掘最相关的三个重要的研究领域是:统计学(Statistics),机器学习(Machine Learning)(或称人工智能,Artificial Intelligent)及数据库(Database)。关联规则挖掘与统计学和机器学习的共同特点是:都是从数据集中发现知识。
2.1基本概念
Agrawal等人于1993年首先提出了挖掘顾客交易数据库中项集间的关联规则问题,是数据挖掘的一个重要研究领域。它反映出一个事物与其它事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其它事物预测到。具体描述为:设I={i1,i2,…,im}是二进制文字的集合,其中的元素称为项(item)。记任务相关的数据D为交易T(transaction)的集合,这里交易T是项的集合,并且T⊆I。每个交易都有一个唯一的标识,如交易号,记作TID。设X是一个I中项的集合,如果X⊆T,
那么称交易T包含X。
2.2关联规则挖掘的算法
Agrawal等人在1993年设计了一个基本算法,提出了挖掘关联规则的一个重要方法—这是一个基于两阶段频繁项集思想的方法,将关联规则挖掘算法的设计可以分解为两个子问题:
1)找到所有支持度大于最小支持度的项集(Itemset),这些项集称为频繁项集(Frequent Itemset)。
2)使用第1步找到的频繁项集产生期望的规则。
第一个问题是算法设计的核心问题,它的效率高低是影响算法的关键,从庞大的数据库中找出所有符合大于或等于最小支持度的频繁项集,往往是相当艰巨且耗时的过程,但频繁项集被确定以后,要产生相对应的关联规则就容易且直接了,第2步只在生成的频繁项集中创建相应规则的枚举过程,无需复杂的计算,目前所谓的算法设计问题主要是围绕如何生成频繁集展开的。
2.2.1经典频集方法
为了生成所有频繁项集,Agrawal等人在1993年设计了Apriori算法,使用了递推的方法。
首先产生频繁1-项集L1,然后是频繁2-项集L2,直到有某个r值使得Lr为空,这时算法停止。这里在第k次循环中,过程先产生候选k-项集的集合Ck,Ck中的每一个项集是对两个只有一个项不同的属于Lk-1的频繁项集做一个(k-2)-连接来产生的。Ck中的项集是用来产生频繁项集的候选集,最后的频繁项集Lk必须是Ck的一个子集。Ck中的每个元素需在交易数据库中进行验证来决定其是否加入Lk,这里的验证过程是算法性能的一个瓶颈。这个方法要求多次扫描可能很大的交易数据库,即如果频繁项集最多包含10个项,那么就需要扫描交易数据库10遍,这需要很大的I/O负载。
2.2.2 FP-tree算法
Han等人提出FP-tree算法,此算法是不产生候选项集作法的代表,因为不用产生候选项集,只需扫描数据库两次,因此节省了大量I/O的时间,整体的效能大幅提升,而且已运用在实际的产品中。
FP-tree算法和上述算法最主要的差别在于:FP-tree算法不用产生候选项集,且将数据库压缩在FP-tree的结构中,改进了扫描多次数据库的高成本。我们利用例子来说明FP -tree算法。它的最小支持度设为2,其作法可分为两个阶段。
第一个阶段为构建FP-tree结构,需扫描数据库两次,第一次扫描数据库将每个支持度大于或等于最小支持度的项目(频繁1-项集)找出,并根据其支持度值大小和在数据库出现的先后次序作排序。并使得每一项通过一个节点链指向它在树中的出现。第二次扫描过滤掉数据库中不足最小支持度的项目并依据排序表的频繁1-项集的次序得到每笔记录中包含频繁项的模式,同时构建FP-tree结构。
FP-tree构造如下:首先,创建树的根节点,用“root”标记,读入经过排序处理的每笔记录的第一个项时,检查root下的子树是否存在此项目节点,若此项目不存在,则在root 下新增此项目节点(Ni);如果此项目存在,则将此节Nj支持度加l。之后的项目读入时,检查Nk(Nk为Ni或Nj)下的子树是否存在此项目节点,如果不存在,就在Nk下新增一个项目节点,如果存在,则将此节点支持度加1,以此类推做完每笔频繁项集中的所有项目。
2.2.3 FPL算法
E C.Tseng及Hsu Tseng提出FPL(Frequent Pattern List)算法以改进FP-tree算法,FPL 主要是将数据库中的交易数据做适当的处理后储存在一线性串行数据结构中,并在此线性串行结构上执行简单的运算,即可有效找出所有频繁项集模式,因为FPL算法利用简单的线性串行数据结构,不需产生候选项集,只需扫描数据库两次,且不管是稀疏数据库或是密集数据库均能有效找出所有的频繁项集模式,因此克服了FP-tree的缺点。
FPL算法扫描数据库两次,第一次扫描数据库将每个支持度值大于或等于最小支持度的频繁1-项集找出,并依照支持度大小和在数据库出现的先后次序作排序,第二次扫描以过滤掉记录中不足最小支持度的项目并根据己排序好的项目次序得到每笔记录的包含频繁项的模式,这一步与FP-tree算法一致。
此后FPL执行以下两个阶段。第一个阶段是构建频繁项目线性串行。根据表2-5将频繁项依支持大小建立成FPL串行,并将表2-3中的每笔记录建构成0、1二元数据表(DB-BIT),作法是根据FPL串行节点顺序与表2-3的数据做比较即可得到每笔记录,记录Ti之某位数据若为0(1)表示相对的频繁数据项目未出现(出现)在此记录中,最后将DB-BIT 中的所有记录挂至适当的FPL串行节点上。
第二个阶段是从此串行结构中挖掘所有的频繁项集模式。首先检查串行最右边节点(Ni),这也与FP-tree算法相似,从支持度最小的项开始挖掘。在此要找出所有包含Ni项目的频繁项集模式,计算出现在Ni节点上的其它各项出现次数(Bit count),接着忽略Ni以及所有Bit count小于最小支持度的项产生Ni项目的频繁1-项集模式:I5:2(代表项目I5在数据库中出现二次),接下来处理Bit count值大于或等于最小支持度的节点(Nb(b=l,2,…