Apriori 算法的 Java 代码实现,结构清晰,逻辑也蛮顺的,适合拿来学习关联规则挖掘的基本流程。ArrayList+HashMap组合拳搞定事务存储和频繁项集,嗯,挺经典的做法。

事务数据库的读取用的是一个readTable方法,从 TXT 里按行读,每行按空格分,操作也不复杂。整个流程是:先拿最小项集(单个元素)开始,算支持度,剪一剪,符合的就进频繁项集,继续组合更大的项集,直到挖不出新货为止。

剪枝部分用的pruning方法,也挺直接,就是看哪个候选集支持度低就干掉哪个。支持度和置信度两个参数是关键,你可以手动设,比如min_support = 0.2这种。规则生成用的是强关联规则逻辑,像{A} → {B}这种,算一下support({A,B}) / support({A}),达标了就留下。

不过啊,如果你数据量一大,这玩意效率就下来了。建议你可以考虑用位向量存事务、搞点并行优化,甚至上Spark跑也行,是做零售、用户行为挖掘这种,还是挺能派上用场的。

另外,我这边整理了一些不错的相关文章,你可以一起看看:Apriori 算法详解Java 实现细节,还有个图形化工具版的也挺方便:关联规则可视化

如果你刚好在做数据挖掘相关项目,这份代码蛮适合拿来改改跑跑,理解一下Apriori的核心思路还是挺有的。