数据挖掘导论__第6章_关联分析_2017PPT文件格式下载.ppt
《数据挖掘导论__第6章_关联分析_2017PPT文件格式下载.ppt》由会员分享,可在线阅读,更多相关《数据挖掘导论__第6章_关联分析_2017PPT文件格式下载.ppt(110页珍藏版)》请在冰豆网上搜索。
频繁项集(FrequentItemset),项集(Itemset)包含0个或多个项的集合例子:
Milk,Bread,Diaperk-项集如果一个项集包含k个项支持度计数(Supportcount)()包含特定项集的事务个数例如:
(Milk,Bread,Diaper)=2支持度(Support)包含项集的事务数与总事务数的比值例如:
s(Milk,Bread,Diaper)=2/5频繁项集(FrequentItemset)满足最小支持度阈值(minsup)的所有项集,定义:
关联规则(AssociationRule),Example:
关联规则关联规则是形如XY的蕴含表达式,其中X和Y是不相交的项集例子:
Milk,DiaperBeer关联规则的强度支持度Support(s)确定项集的频繁程度置信度Confidence(c)确定Y在包含X的事务中出现的频繁程度,关联规则发现,关联规则发现:
给定事务的集合T,关联规则发现是指找出支持度大于等于minsup并且置信度大于等于minconf的所有规则,minsup和minconf是对应的支持度和置信度阈值关联规则发现的一种原始方法是:
Brute-forceapproach:
计算每个可能规则的支持度和置信度这种方法计算代价过高,因为可以从数据集提取的规则的数量达指数级从包含d个项的数据集提取的可能规则的总数R=3d-2d+1+1,如果d等于6,则R=602,挖掘关联规则(MiningAssociationRules)的策略,大多数关联规则挖掘算法通常采用的一种策略是,将关联规则挖掘任务分解为如下两个主要的子任务:
频繁项集产生(FrequentItemsetGeneration)其目标是发现满足最小支持度阈值的所有项集,这些项集称作频繁项集。
规则的产生(RuleGeneration)其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则(strongrule)。
6.2频繁项集的产生,6.1问题定义6.2频繁项集的产生,频繁项集产生(FrequentItemsetGeneration),格结构(latticestructure)格结构用来枚举所有可能项集,频繁项集产生(FrequentItemsetGeneration),Brute-force方法:
把格结构中每个项集作为候选项集将每个候选项集和每个事务进行比较,确定每个候选项集的支持度计数。
时间复杂度O(NMw),这种方法的开销可能非常大。
降低产生频繁项集计算复杂度的方法,减少候选项集的数量(M)先验(apriori)原理减少比较的次数(NM)替代将每个候选项集与每个事务相匹配,可以使用更高级的数据结构,或存储候选项集或压缩数据集,来减少比较次数,6.2频繁项集的产生,6.2.1先验原理,先验原理(Aprioriprinciple),先验原理:
如果一个项集是频繁的,则它的所有子集一定也是频繁的,先验原理(Aprioriprinciple),先验原理:
如果一个项集是频繁的,则它的所有子集一定也是频繁的相反,如果一个项集是非频繁的,则它的所有超集也一定是非频繁的:
这种基于支持度度量修剪指数搜索空间的策略称为基于支持度的剪枝(support-basedpruning)这种剪枝策略依赖于支持度度量的一个关键性质,即一个项集的支持度决不会超过它的子集的支持度。
这个性质也称为支持度度量的反单调性(anti-monotone)。
例子,被剪枝的超集,6.2频繁项集的产生,6.2.1先验原理6.2.2Apriori算法的频繁项集产生,Apriori算法的频繁项集产生,Apriori算法的频繁项集产生,Items(1-itemsets),Pairs(2-itemsets),Triplets(3-itemsets),支持度阈值=60%最小支持度计数=3,枚举所有项集将产生个候选而使用先验原理,将较少为=13,Apriori算法,Apriori算法,Apriori算法的频繁项集产生的部分有两个重要的特点:
它是一个逐层算法。
即从频繁1-项集到最长的频繁项集,它每次遍历项集格中的一层它使用产生-测试策略来发现频繁项集。
在每次迭代,新的候选项集由前一次迭代发现的频繁项集产生,然后对每个候选的支持度进行计数,并与最小支持度阈值进行比较。
该算法需要的总迭代次数是kmax+1,其中kmax是频繁项集的最大长度,6.2频繁项集的产生,6.2.1先验原理6.2.2Apriori算法的频繁项集产生6.2.3候选的产生与剪枝,候选的产生与剪枝(构造apriori-gen函数),候选项集的产生与剪枝(构造apriori-gen函数)包含2个步骤:
候选项集的产生:
由频繁(k-1)-项集产生新的候选k-项集候选项集的剪枝:
采用基于支持度的剪枝,删除一些候选k-项集,候选的产生与剪枝(构造apriori-gen函数),蛮力方法蛮力方法把所有的k-项集都看作可能的候选,然后使用候选剪枝除去不必要的候选第k层产生的候选项集的数目为。
(d为项的总数)虽然候选产生是相当简单的,但是候选剪枝的开销极大,因为必须考察的项集数量太大。
设每一个候选项集所需的计算量为O(k),这种方法的总复杂度为,候选的产生与剪枝,Items(1-itemsets),Pairs(2-itemsets),Triplets(3-itemsets),支持度阈值=60%最小支持度计数=3,枚举所有项集将产生6C1+6C2+6C3=41个候选而使用先验原理,将较少为6+6+1=13,候选的产生与剪枝(Fk-1XF1方法),这种方法用其他频繁项来扩展每个频繁(k-1)-项集这种方法将产生个候选k-项集,其中|Fj|表示频繁j-项集的个数。
这种方法总复杂度是这种方法是完全的,因为每一个频繁k-项集都是由一个频繁(k-1)-项集和一个频繁1-项集组成的。
因此,所有的频繁k-项集是这种方法所产生的候选k-项集的一部分。
然而,这种方法很难避免重复地产生候选项集。
如:
面包,尿布,牛奶不仅可以由合并项集面包,尿布和牛奶得到,而且还可以由合并面包,牛奶和尿布得到,或由合并尿布,牛奶和面包得到。
候选的产生与剪枝(Fk-1XF1方法),候选的产生与剪枝(Fk-1XF1方法),避免产生重复的候选项集的一种方法是确保每个频繁项集中的项以字典序存储,每个频繁(k-1)-项集X只用字典序比X中所有的项都大的频繁项进行扩展如:
项集面包,尿布可以用项集牛奶扩展,因为“牛奶”(milk)在字典序下比“面包”(Bread)和“尿布”(Diapers)都大。
尽管这种方法比蛮力方法有明显改进,但是仍然产生大量不必要的候选。
例如,通过合并啤酒,尿布和牛奶而得到的候选是不必要的。
因为它的子集啤酒,牛奶是非频繁的。
【每个K-项集,它的每一个项必须至少在k-1个(k-1)项集中出现,否则,这个K-项集是非频繁项集】,候选的产生与剪枝(Fk-1XFk-1方法),这种方法合并一对频繁(k-1)-项集,仅当它们的前k-2个项都相同。
如频繁项集面包,尿布和面包,牛奶合并,形成了候选3-项集面包,尿布,牛奶。
算法不会合并项集啤酒,尿布和尿布,牛奶,因为它们的第一个项不相同。
然而,由于每个候选都由一对频繁(k-1)-项集合并而成,因此,需要附加的候选剪枝步骤来确保该候选的其余k-2个子集是频繁的。
候选的产生与剪枝(Fk-1XFk-1方法),6.2频繁项集的产生,6.2.1先验原理6.2.2Apriori算法的频繁项集产生6.2.3候选的产生与剪枝6.2.4支持度计数,支持度计数,支持度计数过程确定在apriori-gen函数的候选项剪枝步骤保留下来的每个候选项集出现的频繁程度。
计算支持度的主要方法:
一种方法是将每个事务与所有的候选项集进行比较,并且更新包含在事务中的候选项集的支持度计数。
这种方法是计算昂贵的,尤其当事务和候选项集的数目都很大时。
另一种方法是枚举每个事务所包含的项集,并且利用它们更新对应的候选项集的支持度。
枚举事务t的所有包含3个项的子集,产生Hash树,Hash函数h(p)=pmod3假设有15个候选3-项集:
145,124,457,125,458,159,136,234,567,345,356,357,689,367,368,Hash树结构,1,4,7,2,5,8,3,6,9,HashFunction,CandidateHashTree,Hashon1,4or7,Hash树结构,1,4,7,2,5,8,3,6,9,HashFunction,CandidateHashTree,Hashon2,5or8,Hash树结构,1,4,7,2,5,8,3,6,9,HashFunction,CandidateHashTree,Hashon3,6or9,使用Hash树进行支持度计数,transaction,使用Hash树进行支持度计数,159,136,345,transaction,使用Hash树进行支持度计数,159,136,345,transaction,15个项集中的9个与事务进行比较,存放在被访问的叶结点中的候选项集与事务进行比较,如果候选项集是该事务的子集,则增加它的支持度计数。
在该例子中,访问了9个叶子结点中的5个。
15个项集中的9个与事务进行比较,6.2频繁项集的产生,6.2.1先验原理6.2.2Apriori算法的频繁项集产生6.2.3候选的产生与剪枝6.2.4支持度计数6.2.5计算复杂度,计算复杂度,支持度阈值降低支持度阈值通常将导致更多的项集是频繁的。
计算复杂度增加随着支持度阈值的降低,频繁项集的最大长度将增加,导致算法需要扫描数据集的次数也将增多项数随着项数的增加,需要更多的空间来存储项的支持度计数。
如果频繁项集的数目也随着数据项数增加而增长,则由于算法产生的候选项集更多,计算量和I/O开销将增加事务数由于Apriori算法反复扫描数据集,因此它的运行时间随着事务数增加而增加事务的平均宽度频繁项集的最大长度随事务平均宽度增加而增加随着事务宽度的增加,事务中将包含更多的项集,这将增加支持度计数时Hash树的遍历次数,6.3规则的产生,6.1问题定义6.2频繁项集的产生6.3规则的产生,规则产生,忽略那些前件或后件为空的规则,每个频繁k-项集能够产生多达2k-2个关联规则关联规则的提取:
将一个项集Y划分成两个非空的子集X和Y-X,使得XYX满足置信度阈值。
如果A,B,C,D是频繁项集,候选项集为:
ABCD,ABDC,ACDB,BCDA,ABCD,BACD,CABD,DABCABCD,ACBD,ADBC,BCAD,BDAC,CDAB,这样的规则必然已经满足支持度阈值,因为它们是由频繁项集产生的。
规则产生,怎样有效的从频繁项集中产生关联规则?
一般,计算关联规则的置信度并不需要再次扫描事务数据集。
规则A,B,CD的置信度为(ABCD)/(ABC)。
因为这两个项集的支持度计数已经在频繁项集产生时得到,因此不必再扫描整个数据集如果规则XY-X不满足置信度阈值,则形如XY-X的规则一定也不满足置信度阈值,其中X是X的子集。
例如:
c(ABCD)c(ABCD)c(ABCD)因为(A