📜  数据分析中的多阶段算法

📅  最后修改于: 2021-08-29 12:03:36             🧑  作者: Mango

在本文中,我们将详细讨论数据分析中的多阶段算法。我们还将介绍多级算法的工作。

多级算法:
多级算法是PCY算法的改进版本,它使用某些连续的哈希表来减少候选对的数量。两种算法的矛盾之处在于,多级需要两次以上的遍历才能发现频繁对。

多级算法的工作:

  • 第一遍:
    多级的第一遍与PCY的第一遍相同。经过该过程之后,频繁的存储桶将通过位图进行标识和封装,这与PCY中的相同。相反,多级的第二遍不计算候选对。相反,它使用另一个哈希函数将可访问的主存储器用于另一个哈希表。毕竟,从第一个哈希表获得的所有位图都占用了可访问主内存的1/32,而第二个哈希表的存储桶与第一个哈希表的存储桶差不多。
  • 第二遍:
    在多阶段的第二阶段,我们再次遍历篮筐。不想再次计算项目。多阶段算法使用补充哈希表来减少候选对的数量。

    但是,由于我们在第二遍和第三遍都需要它,因此我们必须保留有关哪些项目频繁出现的信息。在第二遍中,我们将毫无疑问的项目对哈希到第二个哈希表的存储桶中。

    在第二遍中,您将看到只有在PCY的第二遍中将对计算为偶数时才对它们进行哈希处理,并且当且仅当i和j经常一起出现时,它才会对{i,j}进行哈希处理,并且然后在第一次通过时将该对散列到一个频繁的存储桶中。

    结果,第二个哈希表中计数的总和应显着小于第一遍的总和。结果是,尽管第二个哈希表的存储桶数仅比第一个哈希表的存储桶数多31/32,但我们预计第二个哈希表中的频繁存储桶比第一个哈希表要少得多。

  • 最终通行证:
    在第二遍之后,第二哈希表也被封装为位图,并且该位图存储在主存储器中。这两个位图合起来只占可访问主存储器的不到1/16,因此在第三遍时仍需要大量空间来对候选对进行计数。

    当且仅当–下,一对{i,j}在C2中

    1. i和j都出现在频繁项列表中。
    2. 对{i,j}被散列并转移到创建的第一个散列表的频繁存储区。
    3. 对{i,j}被散列并转移到创建的第二个散列表的频繁存储桶中。
  • 第三个约束是多级和PCY之间的差异:
    显而易见,在多阶段算法中,可以在第一个和最后一个之间包含任意数量的遍。有一个限制因素,每个通道必须保留每个先前通道的位图。在适当的时候,主存储器中没有足够的空间来进行计数。这并不影响我们申请多少次通行,坦率的成对对每次都会哈希一个频繁的存储桶,因此没有办法规避对它们的计数。