A-Priori算法步骤:
1. A-Priori算法的第一遍扫描:第一遍扫描中,要建立两张表。如有必要,第一张表要将项的名称转换为1到n之间的整数。另一张表则是一个计数数组,第i个数组元素是上述第i个项的出现次数。这些所有项的计数值的初始值都是0.
2. A-Priori算法两遍扫描之间的处理:第一遍扫描之后,我们检查所有项的计数值,以确定哪些项构成单元素频繁项集。对于A-Priori的第二遍扫描,我们只会给频繁项重新编号,编号范围是1到m。此时的表格是一个下标为1到n 的数组,如果第i项不频繁,则对于的第i个数组元素为0,否则为1到m之间的一个唯一整数。我们应将此表格称为频繁项表格
3. A-Priori算法的第二遍扫描:在第二遍扫描中,我们对两个频繁项组成的所有项对计数。技术细节如下:
(1) 对每个购物篮,在频繁项集表中检查哪些项是频繁的;
(2) 通过一个双重循环生成所有的频繁项对;
(3) 对每个频繁项对,在存储计数值的数据结构中对应的计数值上加1;
最后,在第二遍扫描结束时,检查计数值结构以确定哪些项对是频繁项对。
PCY算法:
PCY算法利用A-Priori算法第一遍扫描计数时不需要的内存空间来创建一张哈希表存储项对,并统计哈希到每个桶的项对的个数,超过阈值的为频繁桶;
在第二遍扫描中,只需对哈希到频繁桶的频繁项进行计数处理。这样,每个频繁桶内代表的频繁项集比较少,计算量就大大降低了。