- 1、本文档共156页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2(课件)关联规则挖掘与序列模式挖掘(AprioriAprioriTidAprioriHyridFP-TreeAprioriAll)详解
上述算法中利用频繁序列Lk-1生成候选k-序列Ck的过程说明如下: (1)连接 对于Lk-1中任意两个序列s1和s2,如果s1与s2的前k-2项相同,即s1=e1,e2,…,ek-2,f1,s2=e1,e2,…,ek-2,f2,则合并序列s1和s2,得到候选k-序列e1,e2,…,ek-2,f1,f2和e1,e2,…,ek-2,f2,f1。即: insert into Ck select p.itemset1, p.itemset2,…, p.itemsetk-1,q.itemsetk-1 from Lk-1 p,Lk-1 q where p.itemset1=q.itemset1 and p.itemset2=q.itemset2 and … and p.itemsetk-2=q.itemsetk-2 (2)剪枝 剪枝的原则:一个候选k-序列,如果它的(k-1)-序列有一个是非频繁的,则删除它。由Ck剪枝产生Lk的过程如下: for (所有c∈Ck的序列) for (所有c的(k-1)-序列s) if (s不属于Lk-1) 从Ck中删除c; Ck ? Lk; //由Ck剪枝后得到Lk 【例3】以表6.6所示的序列数据库S1为例,给出ApriorAll算法的执行过程,这里I={1,2,3,4,5},每个数字表示一个项。假设min_sup=2。 客户号 客户序列 s1 {1,5},{2},{3},{4} s2 {1},{3},{4},{3,5} s3 {1},{2},{3},{4} s4 {1},{3},{5} s5 {4},{5} 一个转换后的序列数据库S1 ① 先求出L1,由其产生L2的过程如图6.2所示,实际上这个过程不需要剪枝,因为C2中每个2-序列的所有子序列一定属于L1。 产生L2的过程 ② 由L2连接并剪枝产生C3,扫描序列数据库S1,删除小于min_sup的序列得到L3,其过程如图6.3所示。 产生L3的过程 ③ 由L3连接并剪枝产生C4,扫描序列数据库S1,删除小于min_sup的序列得到L4,其过程如图6.4所示。 产生L4的过程 ④ L4中只有一个序列,由它产生的C5为空,L5也为空。算法结束。 5. 最大化阶段 在频繁序列模式集合中找出最大频繁序列模式集合。 由于在产生频繁模式阶段发现了所有频繁模式集合L,下面的过程可用来发现最大序列。设最长序列的长度为n,则: for (k=n;k1;k--) for (每个k-序列sk) 从L中删除sk的所有子序列; 【例4】对于表6.5所示的序列数据库S1,从前面的过程看到,产生的所有频繁序列集合: L={1,2,3,4,5,1,2,1,3,1,4,1,5,2,3,2,4,3,4,3,5,4,5,1,2,3,1,2,4,1,3,4,1,3,5,2,3,4,1,2,3,4} 删除子序列得到最大序列的过程如下: 由于最长的序列是4,因此所有4-序列都是最大序列,这里只有1,2,3,4是最大序列。 对于4-序列1,2,3,4,从L中删除它的3-子序列1,2,3、1,2,4、1,3,4、2,3,4,2-子序列1,2、1,3、1,4、2,3、2,4、3,4和1-子序列1、2、3、4,剩下的3-序列1,3,5是最大序列。 对于3-序列1,3,5,从L中删除它的2-子序列1,5、3,5和1-子序列5,剩下的2-序列4,5是最大序列。 到此,L中已没有可以再删除的子序列了,得到的序列模式如下表所示。 序列模式 计数 1,2,3,4 2 1,3,5 2 4,5 2 当求出所有序列模式集合L后,可以采用类似Apriori算法生成所有的强关联规则。生成所有的强关联规则RuleGen(L,min_conf)算法如下: 输入:所有序列模式集合L,最小置信度阈值min_conf 输出:强关联规则集合R 方法:其过程描述如下: R=Φ; for (对于L中每个频繁序列β) for (对于β的每个子序列α) { conf=β.sup_count/α.sup_count; if (conf≥min_conf) R=R∪{α→β}; //产生一条新规则α→β } return R; 例如,假设有一个频繁3-序列{D},{B,F},{A},其支持度计数为2,它的一个子序列{D},{B,F}的支持度计数也为2。 若置信度阈值min_conf=75%,则: {D},{B,F}→{D},{B,F},{A} 是一条强关联规则,因为它的置信度=2/2=100%。 * 连接后 C3= {{A,B,C},{A,C,E},{B,C,E}},不对,使用字典序避免重复的候选。 支持
文档评论(0)