什么是支持计数?
支持计数是确定每个候选项目集出现频率的过程,这些候选项目集在 Apriori-Gen 函数的候选剪枝步骤中幸存下来。
一种执行此操作的方法是将每个事务与每个候选项目集进行比较,并刷新事务中包含的候选者的支持计数。这种方法在计算上代价很高,尤其是在事务和候选项目集都很多的情况下。
第二种方法是枚举每个事务中包含的项目集,并需要它们刷新其特定候选项目集的支持计数。考虑一个包含五个项目的事务 t,{I、2、3、5 和 6}。此事务中包含 (5 3) = 10 个大小为 3 的项目集。
各种项目集可能对应于正在分析的候选 3-项目集,在这种情况下,它们的支撑计数会递增。存在 t 的不同子集,它们不对应于可以忽略的一些候选者。
一种系统地枚举 t 中包含的 3-项目集的方法。考虑到每个项目集都以改进的字典序维护其项目,可以通过首先定义最小的项目,然后定义更高的项目来枚举项目集。
例如,给定 t:{1、2、3、5 和 6},t 中包含的所有 3-项目集都应以项目 1、2 或 3 开头。创建以项目 5 或 6 开头的 3-项目集是不适用的,因为 t 中有两个项目的标签高于或等于 5。
前缀架构显示了如何一致地枚举事务中包含的项目集,即通过逐个定义其项目,从最左边的项目到最右边的项目。
它可以确定每个枚举的 3-项目集是否与现有的候选项目集相关。如果它连接了一个候选者,那么相关候选者的支持计数就会递增。
在 Apriori 算法中,候选项目集被分成多个桶并保存在哈希树中。在支持计数期间,每个事务中包含的项目集也将其哈希到其合适的桶中。与其将事务中的每个项目集与每个候选项目集进行比较,不如仅将其与属于相同桶的候选项目集进行比较。
树的每个内部节点都需要以下哈希函数 h(p):p mod 3,以确定接下来必须遵循当前节点的哪个分支。例如,项目 1、4 和 7 被哈希到相同的分支(即最左边的分支),因为它们在将数字除以 3 后具有相同的余数。所有候选项目集都保存在哈希树的叶节点中。