Apriori算法实现

一、简介

Apriori算法是一种经典的频繁项集挖掘算法,广泛用于数据挖掘领域。它主要用于关联规则学习,即在数据集中发现哪些项目经常一起出现。典型的应用场景如超市购物分析,通过Apriori算法可以揭示“购买面包的人往往也会购买牛奶”这样的关联规则。

二、Apriori算法原理

Apriori算法的核心思想基于频繁项集的特性:如果一个项集是频繁的,那么它的所有子集也必然是频繁的;反之,若项集是非频繁的,则它的所有超集也必然非频繁,这一特性称为Apriori性质

三、Apriori算法流程

  1. 初始化:设定最小支持度阈值(minsup)和最小置信度阈值(minconf),从单项集开始构建候选集。
  2. 生成频繁项集:通过多次迭代逐步增加项集大小,生成满足条件的频繁项集。
  3. 生成关联规则:对每个频繁项集,生成符合最小置信度的所有可能关联规则。

四、Apriori算法实现细节

  1. 数据结构
  2. minsupminconf:定义最小支持度和置信度。
  3. IdentityHashMap ruleMap:存储关联规则。
  4. String[] transSet:输入事务集。
  5. int itemCounts:项集总数。
  6. TreeSet[] frequencySet:存储不同大小的频繁项集。
  7. TreeSet maxFrequency:最大频繁项集。
  8. TreeSet candidate:候选项集。
  9. TreeSet[] candidateSet:不同大小的候选项集。
  10. 初始化
  11. 在构造方法中初始化数据结构,根据输入事务集统计所有可能的单项集。
  12. 生成候选项集
  13. counts()方法:统计所有可能的单项集。
  14. item1_gen()方法:生成满足最小支持度的频繁单项集。
  15. count_sup(String x)方法:计算某项集的支持度。
  16. candidate_gen(int k)方法:生成大小为k+1的候选项集。

五、具体实现

  1. 统计单项集
  2. 遍历事务集中的每一项,将每个元素添加到候选集candidate中。