您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 数据挖掘导论第6章-关联分析
关联分析:基本概念和算法第6章关联分析:基本概念和算法定义:关联分析(associationanalysis)关联分析用于发现隐藏在大型数据集中的令人感兴趣的联系,所发现的模式通常用关联规则或频繁项集的形式表示。关联分析可以应用于生物信息学、医疗诊断、网页挖掘、科学数据分析等RulesDiscovered:{Diaper}--{Beer}TIDItems1Bread,Milk2Bread,Diaper,Beer,Eggs3Milk,Diaper,Beer,Coke4Bread,Milk,Diaper,Beer5Bread,Milk,Diaper,Coke定义:频繁项集(FrequentItemset)项集(Itemset)–包含0个或多个项的集合例子:{Milk,Bread,Diaper}–k-项集如果一个项集包含k个项支持度计数(Supportcount)()–包含特定项集的事务个数–例如:({Milk,Bread,Diaper})=2支持度(Support)–包含项集的事务数与总事务数的比值–例如:s({Milk,Bread,Diaper})=2/5频繁项集(FrequentItemset)–满足最小支持度阈值(minsup)的所有项集TIDItems1Bread,Milk2Bread,Diaper,Beer,Eggs3Milk,Diaper,Beer,Coke4Bread,Milk,Diaper,Beer5Bread,Milk,Diaper,Coke定义:关联规则(AssociationRule)Example:Beer}Diaper,Milk{4.052|T|)BeerDiaper,,Milk(s67.032)Diaper,Milk()BeerDiaper,Milk,(c关联规则–关联规则是形如XY的蕴含表达式,其中X和Y是不相交的项集–例子:{Milk,Diaper}{Beer}关联规则的强度–支持度Support(s)确定项集的频繁程度–置信度Confidence(c)确定Y在包含X的事务中出现的频繁程度TIDItems1Bread,Milk2Bread,Diaper,Beer,Eggs3Milk,Diaper,Beer,Coke4Bread,Milk,Diaper,Beer5Bread,Milk,Diaper,Coke关联规则挖掘问题关联规则挖掘问题:给定事务的集合T,关联规则发现是指找出支持度大于等于minsup并且置信度大于等于minconf的所有规则,minsup和minconf是对应的支持度和置信度阈值挖掘关联规则的一种原始方法是:Brute-forceapproach:–计算每个可能规则的支持度和置信度–这种方法计算代价过高,因为可以从数据集提取的规则的数量达指数级–从包含d个项的数据集提取的可能规则的总数R=3d-2d+1+1,如果d等于6,则R=602挖掘关联规则(MiningAssociationRules)大多数关联规则挖掘算法通常采用的一种策略是,将关联规则挖掘任务分解为如下两个主要的子任务:1.频繁项集产生(FrequentItemsetGeneration)–其目标是发现满足最小支持度阈值的所有项集,这些项集称作频繁项集。2.规则的产生(RuleGeneration)–其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则(strongrule)。频繁项集产生(FrequentItemsetGeneration)nullABACADAEBCBDBECDCEDEABCDEABCABDABEACDACEADEBCDBCEBDECDEABCDABCEABDEACDEBCDEABCDE格结构(latticestructure)频繁项集产生(FrequentItemsetGeneration)Brute-force方法:–把格结构中每个项集作为候选项集–将每个候选项集和每个事务进行比较,确定每个候选项集的支持度计数。–时间复杂度~O(NMw),这种方法的开销可能非常大。TIDItems1Bread,Milk2Bread,Diaper,Beer,Eggs3Milk,Diaper,Beer,Coke4Bread,Milk,Diaper,Beer5Bread,Milk,Diaper,CokeNTransactionsListofCandidatesMw降低产生频繁项集计算复杂度的方法减少候选项集的数量(M)–先验(apriori)原理减少比较的次数(NM)–替代将每个候选项集与每个事务相匹配,可以使用更高级的数据结构,或存储候选项集或压缩数据集,来减少比较次数先验原理(Aprioriprinciple)先验原理:–如果一个项集是频繁的,则它的所有子集一定也是频繁的相反,如果一个项集是非频繁的,则它的所有超集也一定是非频繁的:–这种基于支持度度量修剪指数搜索空间的策略称为基于支持度的剪枝(support-basedpruning)–这种剪枝策略依赖于支持度度量的一个关键性质,即一个项集的支持度决不会超过它的子集的支持度。这个性质也称为支持度度量的反单调性(anti-monotone)。非频繁项集nullABACADAEBCBDBECDCEDEABCDEABCABDABEACDACEADEBCDBCEBDECDEABCDABCEABDEACDEBCDEABCDE例子nullABACADAEBCBDBECDCEDEABCDEABCABDABEACDACEADEBCDBCEBDECDEABCDABCEABDEACDEBCDEABCDE被剪枝的超集Apriori算法的频繁项集产生TIDItems1Bread,Milk2Bread,Diaper,Beer,Eggs3Milk,Diaper,Beer,Coke4Bread,Milk,Diaper,Beer5Bread,Milk,Diaper,CokeApriori算法的频繁项集产生ItemCountBread4Coke2Milk4Beer3Diaper4Eggs1ItemsetCount{Bread,Milk}3{Bread,Beer}2{Bread,Diaper}3{Milk,Beer}2{Milk,Diaper}3{Beer,Diaper}3ItemsetCount{Bread,Milk,Diaper}3Items(1-itemsets)Pairs(2-itemsets)Triplets(3-itemsets)支持度阈值=60%最小支持度计数=3枚举所有项集将产生6C1+6C2+6C3=41个候选而使用先验原理,将较少为6+6+1=13Apriori算法Apriori算法Apriori算法的频繁项集产生的部分有两个重要的特点:–它是一个逐层算法。即从频繁1-项集到最长的频繁项集,它每次遍历项集格中的一层–它使用产生-测试策略来发现频繁项集。在每次迭代,新的候选项集由前一次迭代发现的频繁项集产生,然后对每个候选的支持度进行计数,并与最小支持度阈值进行比较。–该算法需要的总迭代次数是kmax+1,其中kmax是频繁项集的最大长度候选的产生与剪枝(构造apriori-gen函数)蛮力方法–蛮力方法把所有的k-项集都看作可能的候选,然后使用候选剪枝除去不必要的候选–第k层产生的候选项集的数目为–虽然候选产生是相当简单的,但是候选剪枝的开销极大,因为必须考察的项集数量太大。–设每一个候选项集所需的计算量为O(k),这种方法的总复杂度为dkdkddOkCO11)2()(kdC候选的产生与剪枝ItemCountBread4Coke2Milk4Beer3Diaper4Eggs1ItemsetCount{Bread,Milk}3{Bread,Beer}2{Bread,Diaper}3{Milk,Beer}2{Milk,Diaper}3{Beer,Diaper}3ItemsetCount{Bread,Milk,Diaper}3Items(1-itemsets)Pairs(2-itemsets)Triplets(3-itemsets)支持度阈值=60%最小支持度计数=3枚举所有项集将产生6C1+6C2+6C3=41个候选而使用先验原理,将较少为6+6+1=13候选的产生与剪枝–这种方法用其他频繁项来扩展每个频繁(k-1)-项集–这种方法将产生个候选k-项集,其中|Fj|表示频繁j-项集的个数。这种方法总复杂度是–这种方法是完全的,因为每一个频繁k-项集都是由一个频繁(k-1)-项集和一个频繁1-项集组成的。因此,所有的频繁k-项集是这种方法所产生的候选k-项集的一部分。–然而,这种方法很难避免重复地产生候选项集。如:{面包,尿布,牛奶}不仅可以由合并项集{面包,尿布}和{牛奶}得到,而且还可以由合并{面包,牛奶}和{尿布}得到,或由合并{尿布,牛奶}和{面包}得到。|)||(|11FFOk方法11FFkkkFFkO|)|||(11候选的产生与剪枝候选的产生与剪枝–避免产生重复的候选项集的一种方法是确保每个频繁项集中的项以字典序存储,每个频繁(k-1)-项集X只用字典序比X中所有的项都大的频繁项进行扩展如:项集{面包,尿布}可以用项集{牛奶}扩展,因为“牛奶”(milk)在字典序下比“面包”(Bread)和“尿布”(Diapers)都大。–尽管这种方法比蛮力方法有明显改进,但是仍然产生大量不必要的候选。例如,通过合并{啤酒,尿布}和{牛奶}而得到的候选是不必要的。因为它的子集{啤酒,牛奶}是非频繁的。候选的产生与剪枝–这种方法合并一对频繁(k-1)-项集,仅当它们的前k-2个项都相同。如频繁项集{面包,尿布}和{面包,牛奶}合并,形成了候选3-项集{面包,尿布,牛奶}。算法不会合并项集{啤酒,尿布}和{尿布,牛奶},因为它们的第一个项不相同。–然而,由于每个候选都由一对频繁(k-1)-项集合并而成,因此,需要附加的候选剪枝步骤来确保该候选的其余k-2个子集是频繁的。方法11kkFF候选的产生与剪枝支持度计数支持度计数过程确定在apriori-gen函数的候选项剪枝步骤保留下来的每个候选项集出现的频繁程度。计算支持度的主要方法:–一种方法是将每个事务与所有的候选项集进行比较,并且更新包含在事务中的候选项集的支持度计数。这种方法是计算昂贵的,尤其当事务和候选项集的数目都很大时。–另一种方法是枚举每个事务所包含的项集,并且利用它们更新对应的候选项集的支持度。TIDItems1Bread,Milk2Bread,Diaper,Beer,Eggs3Milk,Diaper,Beer,Coke4Bread,Milk,Diaper,Beer5Bread,Milk,Diaper,CokeNTransactionsHashStructurekBuckets枚举事务t的所有包含3个项的子集12356Transaction,t2356135625613356126155623625563123125126135136156235236256356Subsetsof3itemsLevel1Level2Level3635产生Hash树2345671451361244571254581593453563576893673681,4,72,5,83,6,9HashfunctionHash函数h(p)=pmod3假设有15个候选3-项集:{145},{124},{457},{125},{458},{159},{136},{234},{567},{345},{356},{357},{689},{367},{368}Hash树结构1591451363453673683563576892345671244571254581,4,72,5,83,6,9HashFunctionCandidateHashTreeHashon1,4or7Hash树结构1591451363453673683563
本文标题:数据挖掘导论第6章-关联分析
链接地址:https://www.777doc.com/doc-1655488 .html