基于Hash技术改进Apriori算法

 转自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) C2 = Hash桶中满足支持计数的2-项集; // 生成候选频繁2-项集
(3) L2 = 根据C2支持度生成频繁2-项集; // 生成频繁2-项集
(4) for (k=3;Lk-1 ≠Φ ;k++) {
(5)         Ck = apriori_gen(Lk-1 ,min_sup); // 调用apriori_gen方法生成候选频繁k-项集
(6)          for each transaction t ∈ D {    // 扫描事务数据库D
(7)                  Ct = subset(Ck,t);
(8)                  for each candidate c ∈ Ct
(9)                         c.count++; //   统计候选频繁k-项集的计数
(10)           }
(11)           Lk ={c ∈ Ck|c.count≥min_sup} // 满足最小支持度的k-项集即为频繁k-项集
(12) }
(13) return L= ∪ k Lk; // 合并频繁k-项集(k>0)

2、基于第1步挖掘到的频繁项集,继续挖掘出全部的频繁关联规则。

与Apriori算法第二步相同。

置信度大于给定最小置信度minConf的关联规则称为频繁关联规则(Frequent Association Rule)。在这一步,首先需要从频繁项集入手,首先挖掘出全部的关联规则(或者称候选关联规则),然后根据minConf来得到频繁关联规则。

挖掘频繁关联规则的算法描述如下:

(1) 初始状态 : L = ∪ k Lk; AR = Φ; // L是频繁项集集合,AR是频繁关联规则集合
(2) for all λk (λk是L的元素,是一个k-频繁项集,大小为n){
(3)           for all αk (αk是λk 的非空真子集){
(4)                   if(αk → βm的置信度>= minConf) { // 这里,m + k = n,其中αk → βm是一个关联规则
(5)                          AR = AR ∪ (αk → βm);
(6)                   }
(7)           }
(8)    }
(9) return AR;


  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值