Apriori 算法的 Java 代码实现,结构清晰,逻辑也蛮顺的,适合拿来学习关联规则挖掘的基本流程。ArrayList
+HashMap
组合拳搞定事务存储和频繁项集,嗯,挺经典的做法。
事务数据库的读取用的是一个readTable
方法,从 TXT 里按行读,每行按空格分,操作也不复杂。整个流程是:先拿最小项集(单个元素)开始,算支持度,剪一剪,符合的就进频繁项集,继续组合更大的项集,直到挖不出新货为止。
剪枝部分用的pruning
方法,也挺直接,就是看哪个候选集支持度低就干掉哪个。支持度和置信度两个参数是关键,你可以手动设,比如min_support = 0.2
这种。规则生成用的是强关联规则逻辑,像{A} → {B}
这种,算一下support({A,B}) / support({A})
,达标了就留下。
不过啊,如果你数据量一大,这玩意效率就下来了。建议你可以考虑用位向量存事务、搞点并行优化,甚至上Spark
跑也行,是做零售、用户行为挖掘这种,还是挺能派上用场的。
另外,我这边整理了一些不错的相关文章,你可以一起看看:Apriori 算法详解、Java 实现细节,还有个图形化工具版的也挺方便:关联规则可视化。
如果你刚好在做数据挖掘相关项目,这份代码蛮适合拿来改改跑跑,理解一下Apriori
的核心思路还是挺有的。