如何进一步提升基于 Apriori 的挖掘效率?

data miningdatabasedata structure更新于 2026/1/4 21:07:17

为了提高原始算法的效率,Apriori 算法已经设计了一些变体,具体如下 −

基于哈希的技术(将项集哈希到相应的桶中) − 基于哈希的技术可用于减小候选 k 项集 Ck 的大小(其中 k > 1)。例如,当扫描数据库中的每个事务以从 C1 中的候选 1 项集创建频繁 1 项集 L1 时,它可以为每个事务创建一些 2 项集,将它们哈希(即映射)到哈希表结构的多个桶中,并增加相应的桶数。

事务减少 −不包含某些频繁 k 项集的事务不可能包含某些频繁 (k + 1) 项集。因此,可以将此类事务标记或删除,不再考虑,因为后续扫描数据库查找 j 项集(其中 j > k)时不需要它。

分区 − 可以使用一种分区技术,该技术需要两次数据库扫描来挖掘频繁项集。它包含两个阶段:在第一阶段,算法将 D 的事务细分为 n 个不重叠的分区。如果 D 中事务的最小支持度阈值为 min_sup,则分区的最小支持度计数为 min_sup × 该分区中的事务数。

对于每个分区,都会发现分区内的所有频繁项集。这些项集被定义为局部频繁项集。该过程采用特定的数据结构,为每个项集记录包含该项集中项的事务的 TID。这使得它只需扫描一次数据库就能找到所有局部频繁 k 项集(k = 1, 2...)。

局部频繁项集可以或不可以与整个数据库 D 频繁相关。任何可能与 D 频繁相关的项集都必须作为频繁项集出现在部分分区中。因此,所有局部频繁项集都是略微与 D 相关的候选项集。来自所有分区的频繁项集集合构成了 D 的全局候选项集。在第二阶段,对 D 进行第二次扫描,评估每个候选项集的实际支持度以确定全局频繁项集。

抽样 − 抽样方法的基本思想是从给定数据 D 中选择一个随机样本 S,然后在 S 而不是 D 中搜索频繁项集。在这种方法中,它可以在准确性和效率之间做出一定的权衡。 S 的样本大小使得对 S 中频繁项集的搜索可以在主内存中完成,因此总体上只需要对 S 中的事务进行一次扫描。


相关文章