数据关联分析.pptx
《数据关联分析.pptx》由会员分享,可在线阅读,更多相关《数据关联分析.pptx(75页珍藏版)》请在三一办公上搜索。
1、,第7章 数据关联分析,7.1,基 本 概 念,7.2,频繁项集产生,7.3,规则产生,7.4,频繁项集的紧凑表示,7.5,产生频繁项集的其他方法,7.6,FP-growth算法,7.7,关 联 评 估,1,7.1,基本概念,关联分析(association analysis)用于发现隐藏在大型数据集中的令人感兴趣的联系,所发现的模式通常用关联规则(association rule)或频繁项集的形式表示。关于关联规则的几个概念:项集:项目的集合,包含k个项的项集称为k-项集;支持度(support):数据库中含有这个项集的所有项目在事务集中所占的比例。置信度(confidence):出现项集A
2、的事务集D中,项集B出现的概率。频繁项集:支持度大于或等于min_sup的项集。,2,关联规则挖掘的两个步骤:频繁项集产生(支持度测试)。其目标是发现满足最小支持度阈值的所有项集,即频繁项集。规则产生(置信度测试)。其目标是从上一步发现的频繁项集中提取所有高置信度(大于等于最小置信度阈值)的关联规则,即强关联规则。在上述两个步骤中,第一步骤是关键,它将影响整个关联规则挖掘算法的效率。因此,关联规则挖掘算法的核心是频繁项集产生。,7.1,基本概念,3,格结构(lattice structure)常常被用来枚举所有可能的项集。图中显示的是I=a,b,c,d,e的项集格。包含k个项的数据集最多产生2
3、k-1 个频繁项集,不包括空集。,7.2,频繁项集产生,4,发现频繁项集的一种原始方法是确定格结构中每个候选项集的支持度计数。这必须比较每个候选项集与每个事务。如候选项集包含在事务中,则候选项集的支持度计数增加。如,由于项集 Milk,Bread 出现在事务1,4,5中,其支持度计数将增加3次。这种比较开销大。,7.2,频繁项集产生,5,7.2.1,先验原理,先验原理是减少候选项集的数量(M)的方法之一。其基本思想是:如果一个项集是频繁的,则它的所有子集一定也是频繁的。例如,假定 c,d,e是频繁项集,显然任何包含项集c,d,e的事务一定包含它的子集c,d,c,e,d,e,c,d和e。这样,如
4、果c,d,e是频繁的,则它的所有子集一定也是频繁的。反之,如项集是非频繁的,则它的所有超集也一定是非频繁的。,7.2,频繁项集产生,6,7.2.1,先验原理,如图所示,一旦发现a,b是非频繁的,则整个包含a,b超集的子图可以被立即剪枝。这种基于支持度度量修剪指数搜索空间的策略称为基于支持度的剪枝。,7.2,频繁项集产生,7,7.2.2,Apriori算法的频繁项集产生,Apriori算法是一种最具影响力的挖掘布尔关联规则频繁项集的算法。Apriori的命名由来是因为使用了频繁项集性质的先验知识,即Apriori性质。Apriori性质的内容是:频繁项集的所有非空子集也必须是频繁的。该性质通过减
5、少搜索空间来提高频繁项集逐层产生的效率。Apriori算法利用Apriori性质,通过逐层搜索的迭代方法,将k-项集用于探索(k+1)-项集,来穷尽数据集中的所有频繁项集。,7.2,频繁项集产生,8,7.2.2,Apriori算法的频繁项集产生,特点:它是一个逐层算法,即从频繁1-项集到最长的频繁项集,它每次遍历项集格中的一层。先找到频繁1-项集集合Ll,然后用Ll找到频繁2-项集集合L2,接着用L2找L3,直到找不到频繁k-项集,找每个Lk需要一次数据库扫描;它使用产生-测试策略来发现频繁项集。在每次迭代之后,新的候选项集由前一次迭代发现的频繁项集产生,然后对每个候选的支持度进行计数,并与最
6、小支持度阈值进行比较。该算法需要的总迭代次数是kmax+1,其中kmax是频繁项集的最大长度。,7.2,频繁项集产生,9,7.2.2,Apriori算法的频繁项集产生,Apriori算法的主要步骤由连接步和剪枝步组成。连接步。为找出Lk,通过Lk-1与自身连接产生候选k-项集的集合,记作Ck。设l1和l2是Lk-1中的项集。lij表示li的第j项。假定事务或项集中的项按字典次序排序,使得li1li2.lik-1。执行连接Lk-1 Lk-1;其中Lk-1的元素是可连接的,如它们前(k-2)个项相同,即Lk-1的元素l1和l2是可连接的,如(l11=l21)(l12=l22).(l1k-2l2k-
7、2)(l1k-1l2k-1)。条件l1k-1l2k-1是简单地确保不产生重复。连接l1和l2产生的结果项集是l11,l12,.l1k-1,l2k-1。,7.2,频繁项集产生,10,7.2.2,Apriori算法的频繁项集产生,剪枝步。Ck是Lk的超集,即Ck的成员可以是频繁的,也可以不是频繁的,但所有频繁k-项集都包含在Ck中。扫描数据库,确定Ck中每个候选的支持度计数,从而确定Lk(即根据定义,计数值不小于最小支持度计数的所有候选都是频繁的,从而属于Lk)。然而,Ck可能很大,因此所涉及的计算量就很大。为了压缩Ck,可以用Apriori性质,即非频繁的(k-1)-项集都不是频繁k-项集的子集
8、,如候选k-项集的(k-1)-子集不在Lk-1中,则该候选也不可能是频繁的,从而从Ck中删除。这种子集测试可使用所有频繁项集的散列树快速完成。,7.2,频繁项集产生,11,7.2.2,Apriori算法的频繁项集产生,下面举一个具体例子。该例基于表中的AllElectronics的事务数据库D。该数据库有9个事务,假定事务中的项按字典次序存放。,7.2,频繁项集产生,12,7.2.2,Apriori算法的频繁项集产生,使用图来解释Apriori算法发现D中的频繁项集。,7.2,频繁项集产生,13,7.2.2,Apriori算法的频繁项集产生,挖掘布尔关联规则发现频繁项集的Apriori算法如下
9、。算法:Apriori。使用逐层迭代方法基于候选产生找出频繁项集。输入:事务数据库D;最小支持度阈值min_sup。输出:D中的频繁项集L。方法:L1=find_frequent_1_itemsets(D);for(k=2;Lk-1;k+)Ck=apriori_gen(Lk-1);for each 事务tD/扫描D,进行计数 Ct=subset(Ck,t);/得到t的子集,它们是候选 for each 候选cCt c.count+;Lk=cCk|c.countmin_sup;return L=k Lk;,7.2,频繁项集产生,14,7.2.2,Apriori算法的频繁项集产生,procedur
10、e apriori_gen(Lk-1:frequent(k-1)-itemsets)for each 项集l1 Lk-1 for each 项集l2 Lk-1 if(l11=l21).(l1k-2l2k-2)(l1k-1l2k-2)then c=l1 l2;/连接步:产生候选 if has_infrequent_subset(c,Lk-1)then delete c;/剪枝步:删除非频繁的候选 else add c to Ck;return Ck;procedure has_infrequent_subset(c:candidate k-itemsets;Lk-1:frequent(k-1)-
11、itemsets)/使用Apriori知识for each(k-1)-subset s of c if s Lk-1 then return TRUE;return FALSE;,7.2,频繁项集产生,15,7.2.3,支持度计数,支持度计数用以确定在apriori-gen函数的候选项剪枝步骤保留下来的每个候选项集出现的频繁程度。计算支持度的主要方法有两种:一是将每个事务与所有候选项集进行比较,并且更新包含在事务中的候选项集的支持度计数。这种方法的计算成本很高,尤其当事务和候选项集的数目都很大时。或枚举每个事务包含的项集,并利用其更新对应的候选项集的支持度。,7.2,频繁项集产生,16,7.2
12、.3,支持度计数,如图显示的是枚举事务t中所有3-项集的系统的方法。假定每个项集中的项都以递增的字典次序排列,则项集可以这样枚举:先指定最小项,其后跟随较大的项。,7.2,频繁项集产生,17,7.2.3,支持度计数,如,给定t=1,2,3,5,6,所有3-项集一定以项1、2或3开始。不必构造以5或6开始的3-项集。图中第一层的前缀结构描述了指定包含在事务t中的3-项集的第一项的方法。如1 2 3 5 6的3-项集,以1开始,后随两个取自集合2,3,5,6的项。确定第一项后,第二层的前缀结构表示选择第二项的方法。如:1 2 3 5 6表示以1,2为前缀,后随项3、5或6的项集。最后,第三层的前缀
13、结构显示了事务t包含的所有的3-项集。如,以1,2为前缀的3-项集是1,2,3,1,2,5和1,2,6;而以2,3为前缀的3-项集是2,3,5和2,3,6。,7.2,频繁项集产生,18,7.2.3,支持度计数,在Apriori算法中,候选项集划分为不同的桶,并存放在Hash树中。在支持度计数期间,包含在事务中的项集也散列到相应的桶中。这种方法不是将事务中的每个项集与所有的候选项集进行比较,而是将它与同一桶内候选项集进行匹配。,7.2,频繁项集产生,19,7.2.3,支持度计数,上图是一棵Hash树结构的例子。树的每个内部结点都使用Hash函数h(p)=p mod 3来确定应当沿着当前结点的哪个
14、分支向下。如,项1,4和7应当散列到相同的分支(即最左分支),因为除以3之后它们都具有相同的余数。所有的候选项集都存放在Hash树的叶结点中。图中显示的Hash树包含15个候选3-项集,即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,分布在9个叶结点中。,7.2,频繁项集产生,20,7.2.3,支持度计数,考虑一个事务t=1,2,3,5,6。为了更新候选项集的支持度计数,必须这样遍历Hash树:所有包含属于事务t的候选3-项集的叶结点至少访问一次。例如,在根结点
15、散列项1之后,散列事务的项2,3和5。项2和5散列到中间子女,而3散列到右子女,如图所示。继续该过程,直至到达Hash树的叶结点。,7.2,频繁项集产生,21,7.2.4,计算复杂度,Apriori算法的计算复杂度受如下因素影响:支持度阈值。支持度阈值影响频繁项集数量。项数(维数)。随着项数的增加,需要更多的空间来存储项的支持度计数。如频繁项集的数目也随着数据项数增加而增长,则由于算法产生的候选项集更多,计算量和I/O开销将增加。事务数。算法反复扫描数据集,运行时间随着事务数增加而增加。事务的平均宽度。对于密集数据集,事务的平均宽度可能很大,这将影响Apriori算法的复杂度。,7.2,频繁项
16、集产生,22,7.2.4,计算复杂度,7.2,频繁项集产生,23,因为由频繁项集的项组成的关联规则的支持度大于等于最小支持度阈值,所以规则产生过程就是在由频繁项集的项组成的所有关联规则中,找出所有置信度大于等于最小置信度阈值的强关联规则。计算关联规则的置信度并不需要再次扫描事务数据库。每个频繁k-项集能产生最多2k-2个关联规则。,7.3,规则产生,24,7.3.1,基本步骤,规则产生的基本步骤如下:(1)对于每个频繁项集l,产生l的所有非空子集;(2)对于l的每个非空子集s,如果则输出规则“”。其中min_conf是最小置信度阈值。,7.3,规则产生,25,7.3.1,基本步骤,例如,All
17、Electronics事务数据库,包含频繁项集X=I1,I2,I5,可由X产生6个候选关联规则,即X的非空子集:I1,I2,I1,I5,I2,I5,I1,I2和I5。结果关联规则如下,每个都列出置信度。如果最小置信度阈值为70,则只有2、3和最后一个规则可以输出,因为只有这些是强的。,7.3,规则产生,26,7.3.1,Apriori算法中规则的产生,Apriori算法使用一种逐层方法来产生关联规则,其中每层对应于规则后件中的项数。首先,提取规则后件只含一个项的所有高置信度规则,其次使用这些规则来产生新的候选规则。,7.3,规则产生,27,7.3.1,Apriori算法中规则的产生,例如,ac
18、db和abdc是两个高置信度的规则,则通过合并这两个规则的后件产生候选规则adbc。图中显示了由频繁项集产生关联规则的格结构。如果格中的任意结点具有低置信度,则可立即剪掉该结点生成的整个子图。假设规则bcda具有低置信度,则可以丢弃后件包含a的所有规则,包括cdab,bdac,bcad和dabc等。Apriori算法中规则产生过程与频繁项集产生过程类似,二者唯一的不同是,在规则产生时,不必再次扫描数据集计算候选规则的置信度,而使用频繁项集产生时计算的支持度计数来确定规则的置信度。,7.3,规则产生,28,实践中,由事务数据集产生的频繁项集的数量可能非常大。因此,从中识别出可以推导出其他所有的频
19、繁项集的、较小的、具有代表性的项集是非常有用的。下面介绍两种具有代表性的项集:最大频繁项集闭频繁项集,7.4,频繁项集的紧凑表示,29,7.4.1,最大频繁项集,最大频繁项集:直接超集都不是频繁的。,7.4,频繁项集的紧凑表示,30,7.4.1,最大频繁项集,上图所示是项集格。格中的项集分为两组:频繁项集和非频繁项集。虚线表示频繁项集的边界。位于边界上方的每个项集都是频繁的,而位于边界下方的项集(阴影结点)都是非频繁的。在边界附近结点中,a,d,a,c,e和b,c,d,e都是最大频繁项集,因为它们的直接超集都是非频繁的。如,项集a,d是最大频繁的,因为它的所有直接超集a,b,d,a,c,d和a
20、,d,e都是非频繁的;相反,项集a,c不是最大的,因为它的一个直接超集a,c,e是频繁的。最大频繁项集有效地提供了频繁项集的紧凑表示。最大频繁项集形成了可导出所有频繁项集的最小的项集的集合。,7.4,频繁项集的紧凑表示,31,7.4.2,闭频繁项集,闭项集:直接超集都不具有和它相同的支持度计数。闭频繁项集:支持度大于或等于最小支持度阈值的闭项集。,7.4,频繁项集的紧凑表示,32,7.4.2,闭频繁项集,闭频繁项集示例如上图。为了更好地解释每个项集的支持度计数,格中每个结点(项集)都标出了与它相关联的事务的ID。例如,由于结点b,c与事务ID 1,2和3相关联,因此它的支持度计数为3。从给定的
21、事务可以看出,包含b的每个事务也包含c,因此,由于b和b,c的支持度是相同的,所以b不是闭项集。同样,由于c出现在所有包含a和d的事务中,所以项集a,d不是闭的。另一方面,b,c是闭项集,因为它的支持度计数与它的任何超集都不同。,7.4,频繁项集的紧凑表示,33,Apriori算法通过使用先验原理对指数搜索空间进行剪枝,成功地处理了频繁项集产生的组合爆炸问题。虽然显著提高了性能,但该算法还是会导致不可低估的I/O开销,因为它需要多次扫描事务数据集。此外,对于稠密数据集,由于事务数据宽度的增加,Apriori算法的性能显著降低。为了克服这些局限性和提高Apriori算法的效率,已开发了一些替代方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 关联 分析
链接地址:https://www.31ppt.com/p-4540939.html