频繁项集算法:Apriori算法的C++实现

Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。

算法原理我一定不如 点击打开链接 说的明白,就只贴代码好了。

购物篮应该是放在数据库中,我把它写在文件D:/item.txt中。


有一点不同:

代码中用了以下映射:

totalID(项名-->整体编码的映射)

freID(整体编码-->频繁项编码的映射)

freID2item(频繁项编码-->项名的映射)

这样做的目的是,用频繁项编码代替频繁项的项名参与计算,当项名很长时,可以节省空间开销。


另外有以下对Apriori的改进算法,可以进一步节省空间开销:

PCY算法:

利用第一遍扫描中可能有大量空闲内存这一观察结果,设置一个哈希函数,将项哈希到不同桶中。如果某个桶中的计数值不低于支持度阈值,该桶成为频繁桶。那么非频繁桶中的项不可能为频繁项,后续扫描中可以不对其计数以节省空间开销。

多阶段算法:

在PCY的基础上,多做几次哈希,每次扫描中只有一个哈希函数。后续只对这样的项计数:它们在每次哈希中都被哈希到一个频繁桶。

多哈希算法:

同PCY的一样只做一次哈希扫描,但是有有多个哈希函数,。后续只对这样的项计数:每个哈希函数都把它哈希到一个频繁桶。


多阶段多哈希可以结合,即多个阶段,每个阶段多个哈希函数。但貌似阶段数和哈希函数个数要认真斟酌,过多或过少都会导致在在减少候选项(计数项)上效果不高。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值