转自http://hi.baidu.com/netganzhou/blog/item/4d8006002edaf9f708fa93a1.html
基于Hash技术改进的Apriori算法,也是采用两阶段挖掘的思想:第一阶段挖掘频繁项集,第二阶段挖掘频繁关联规则。 基于Hash技术来产生频繁项集,能够在一定程度上减少由调用aprioriGen方法生成候选频繁项集的开销。 Park等人研究发现,候选频繁2-项集生成的过程中,计算量比较大,引入散列(Hash)技术来解决这个问题,以改进Apriori算法。 同时,基于Hash技术生成候选频繁2-项集,能够扩展到生成候选频繁k-项集。对频繁关联规则的挖掘,与Apriori算法执行的过程是相同的。 基于Hash技术改进的Apriori算法,也是分为两步执行: 1、从事务数据库(D)中挖掘出所有频繁项集。 支持度大于最小支持度minSup的项集(Itemset)称为频集(Frequent Itemset)。 首先,挖掘频繁1-项集: 需要扫描事务数据库,挖掘出频繁1-项集。 其次,挖掘频繁2-项集: 这里主要是采用Hash技术产生候选频繁2-项集。 在挖掘频繁1-项集的过程中,也就是扫描事务数据库的时候,直接根据选择的Hash策略,将扫描到的事务直接组合成2-项集,并映射到对应的Hash桶中,通过测试Hash桶中的2-项集来产生候选频繁2-项集。具体做法为:设置测试标准参数 minSup * |D|,如果某个Hash桶中的2-项集计数小于 minSup * |D|,肯定不会是频繁2-项集,排除,然后根据Hash桶中的项集的支持计数来选择候选频繁2-项集。 然后,对k(k>2),递推挖掘: 与Apriori算法相同,采用递推的方式在k>2的条件下,来挖掘频繁k-项集(k>2),具体做法是: 在挖掘出候选频繁k-项集(Ck)之后,根据最小置信度minSup来筛选,得到频繁k-项集。 最后合并全部的频繁k-项集(k>0)。 挖掘频繁项集的算法描述如下: (1) L1 = find_frequent_1-itemsets(D); // 挖掘频繁1-项集,扫描事务数据库同时,将2-项集映射到Hash桶中 2、基于第1步挖掘到的频繁项集,继续挖掘出全部的频繁关联规则。 与Apriori算法第二步相同。 置信度大于给定最小置信度minConf的关联规则称为频繁关联规则(Frequent Association Rule)。在这一步,首先需要从频繁项集入手,首先挖掘出全部的关联规则(或者称候选关联规则),然后根据minConf来得到频繁关联规则。 挖掘频繁关联规则的算法描述如下: (1) 初始状态 : L = ∪ k Lk; AR = Φ; // L是频繁项集集合,AR是频繁关联规则集合 |