数据挖掘之关联分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关联规则挖掘算法研究报告

摘要:数据挖掘是一个多学科交叉融合而形成的新兴的学科,它利用各种分析工具在海量数据中发现模型和数据间的关系。而在大规模事务数据库中,挖掘关联规则是数据挖掘领域的一个非常重要的研究课题。文中介绍了关联规则挖掘的研究情况,描述了经典Apriori算法的实现,并对该算法进行了分析和评价,指出了其不足和原因。并对FP树挖掘最大频繁项集的算法描述,并得到结论:数据库中潜在的最大频繁模式越多,运行时间越长。

关键词:数据挖掘;关联规则;频繁项集

简单地说,数据挖掘(data mining)是揭示存在于数据里的模式及数据间的关系的学科,它强调对大量观测到的数据库的处理。它是涉及数据库管理,人工智能,机器学习,模式识别,及数据可视化等学科的边缘学科。用统计的观点看,它可以看成是通过计算机对大量的复杂数据集的自动探索性分析。数据挖掘也就是通过某种方法,利用历史数据,在条件集合和结果集合之间建立一个致信度比较高的模型。而关联规则挖掘发现大量数据中项集之间有趣的关联或相关联系,它在数据挖掘中是一个重要的课题,最近几年已被业界所广泛研究。关联规则挖掘的一个典型例子是购物篮分析。关联规则研究有助于发现交易数据库中不同商品(项)之间的联系,找出顾客购买行为模式,如购买了某一商品对购买其他商品的影响。分析结果可以应用于商品货架布局、货存安排以及根据购买模式对用户进行分类。

1 关联规则的意义

世间万物的事情发生多多少少会有一些关联。一件事情的发生,很可能是

也会引起另外一件事情的发生。或者说,这两件事情很多时候很大程度上会一起发生的。那么人们通过发现这个关联的规则,可以由一件事情的发生来,来推测另外一件事情的发生,从而更好地了解和掌握事物的发展,动向等等。这就是数据挖掘中,寻找关联规则的基本意义。

数据挖掘技术中的关联规则挖掘是通过计算机自动从一大对真实数据中发现这样的关联规则出来。对于计算机而言,它需要知道所有的事情发生情况,并且把相应的事情合并成一个事务,通过对各个事务的扫描,来确定事情的关联规则。

2 关联规则的基本概念

设I={i1, i2,…, im}是项的集合,其中的元素称为项(item)。记D为事务(transaction)T的集合,这里事务T是项的集合,并且T⊆I 。对应每一个事务有唯一的标识,如事务号,记作TID。设X是一个I中项的集合,如果

X⊆T,那么称事务T包含X[1]。

一个关联规则是形如X⇒Y的蕴涵式,这里X⊂I, Y⊂I,并且X⋂Y=Φ。规则X⇒Y在事务数据库D中的支持度(support)是事务集中包含X和Y的事务数与所有事务数之比,记为support(X⇒Y),即support(X⇒Y)= P(X ⋃ Y),规则X⇒Y在事务集中的可信度(confidence)是指包含X和Y的事务数与包含X的交易数之比,记为confidence(X⇒Y),即confidence(X⇒Y)= P(X|Y),给定一个事务集D,挖掘关联规则问题就是寻找支持度和可信度分别大于用户给定的最小支持度(minsupp)和最小可信度(minconf)的关联规则。

3 Apriori算法介绍

3.1关联规则的挖掘可以分成两个步骤:

a. 根据最小的支持度,在大量事务寻找高频率出现的频繁项集(Itemset)。

b. 根据最小的置信度,找到的频繁项集产生关联规则。

其中第二个步骤比较容易,一般经过第一步的筛选后的频繁项集都不会很多,通过子集产生法就可以产生关联规则。第一个步骤是需要在大量的事务数据集中寻找高频率出现的项集Itemset,所以就需要一个比较高效的搜索查找方法。Rakesh Agrawal等在1993年提出了第一步搜索频繁项集的经典Apriori算法

[12,13]。通过遍历一大堆事务数据中,从一个一个的单个项开始记数,每次遍历完所有的事务后,裁减掉支持度记数少于用户给定的支持度的项,然后逐步扩展到多项事务。最后保留下来的频繁项集,通过子集产生法来产生关联规则,然后去掉其中置信度低于用户指定的最低置信度的关联规则,最后剩下的就是满足用户需要的关联规则。Apriori算法的特点就是在于从单项开始,每次剪

裁一点,利用它的Apriori性质,有效避免了对很多不可能的项的搜索过程[2]。

3.2 Apriori性质

频繁项集的所有非空子集都必须也是频繁的。如果项集I不满足最小支持度阈值s,则I不是频繁的,即P(I) < s。如果项A添加到I,则结果项集(I ∪A)不可能比I更频繁出现。因此,(I,A)也不是频繁的,即P(I ∪A) < s。因此,Apriori性质主要是用于搜索频繁项集的时候对候选式的筛选过程。Apriori算法中利用Apriori性质,能够比较好地避免盲目的搜索,提高频繁

项集的查找效率。

3.3算法伪码

算法Apriori是使用逐层迭代找出频繁项集

输入:事务数据库D;最小支持度阈值。

输出:D中的频繁项集L。

3.3基于Apriori算法的数据挖掘应用实例

数据库样本

当前是列出我们实验中用到的一个候选项集:

{1 4 5}, {1 2 4}, {4 5 7}, {1 2 5}, {4 5 8}, {1 5 9}, {1 3 6}, {2 3 4}, {5 6 7}, {3 4 5}, {3 5 6}, {3 5 7}, {6 8 9}, {3 6 7}, {3 6 8}。2.3.2Apriori算法的实现过程

首先设置散列函数,和叶子大小限制。

根据以上限制,先根据首项形成初步的散列树,见下图:

图:生成候选的散列树(原始版本)

接着根据第二项形成优化后的散列树,结果见下图:

图:生成候选的散列树(中间过程)

按照以上过程,按照项的顺序,我们可以将树的分裂做到最后一项,最终结果见下图:

相关文档
最新文档