Content #
Apriori 的基本的逻辑其实不复杂,我把它称为“连坐算法”。我们的目标是去掉过多的组合,如果按个去统计有价值的组合,那么在所有组合中有关联性的组合会有如下逻辑:
-
如果一个组合是频繁组合,则它所有的非空子集也是频繁组合——连坐,一家子都是明星组合,任何跳出来两个人也都是明星组合;
-
如果一个非空组合是非频繁组合,则其所有的父集也是非频繁组合——连坐,如果有一个人不是明星,他和谁组合都不会是明星组合。
例如,如果 123 是频繁组合,则 12、13、23 也是频繁组合;若 12 是非频繁组合,则 123 也是非频繁组合,即其他数据集里只要含 12 都可直接判定其为非频繁组合。这种方法能够帮我们去掉很多没有必要测试的组合。这样我们再去分析余下组合的支持度和置信度,就可以得到我们的最终要的规则了。
Apriori 算法的优点是可以产生相对较小的候选集,而它的缺点是要重复扫描数据库,且扫描的次数由最大频繁项目集中项目数决定,因此 Apriori 适用于最大频繁项目集相对较小的数据集中。后续的 FP-growth 算法修正了这些问题。