📜  毫升 | ECLAT 算法

📅  最后修改于: 2022-05-13 01:54:48.578000             🧑  作者: Mango

毫升 | ECLAT 算法

先决条件:先验算法

ECLAT 算法代表Equivalence Class Clustering 和自下而上的 Lattice Traversal 。它是关联规则挖掘的一种流行方法。它是 Apriori 算法的更高效和可扩展的版本。 Apriori 算法在水平方向上工作,模仿图的广度优先搜索,而 ECLAT 算法在垂直方向上工作,就像图的深度优先搜索一样。 ECLAT 算法的这种垂直方法使其成为比 Apriori 算法更快的算法。

算法如何工作? :
其基本思想是使用 Transaction Id Sets(tidsets) 交集来计算候选者的支持值,避免生成前缀树中不存在的子集。在函数的第一次调用中,所有单个项目都与它们的 tidset 一起使用。然后递归调用该函数,并且在每次递归调用中,验证每个 item-tidset 对并与其他 item-tidset 对组合。这个过程一直持续到没有候选项目-tidset 对可以组合。

现在让我们通过一个示例来理解上述内容:-

考虑以下交易记录:-

上面给出的数据是一个布尔矩阵,其中对于每个单元格 (i, j),该值表示第 j 个项目是否包含在第 i 个事务中。 1 表示真,0 表示假。

我们现在第一次调用该函数,并以表格方式排列每个项目及其 tidset:-

k = 1,最小支持度 = 2

ItemTidset
Bread{T1, T4, T5, T7, T8, T9}
Butter{T1, T2, T3, T4, T6, T8, T9}
Milk{T3, T5, T6, T7, T8, T9}
Coke{T2, T4}
Jam{T1, T8}

我们现在递归调用该函数,直到没有更多的 item-tidset 对可以组合:-

k = 2

ItemTidset
{Bread, Butter}{T1, T4, T8, T9}
{Bread, Milk}{T5, T7, T8, T9}
{Bread, Coke}{T4}
{Bread, Jam}{T1, T8}
{Butter, Milk}{T3, T6, T8, T9}
{Butter, Coke}{T2, T4}
{Butter, Jam}{T1, T8}
{Milk, Jam}{T8}

k = 3

ItemTidset
{Bread, Butter, Milk}{T8, T9}
{Bread, Butter, Jam}{T1, T8}

k = 4

ItemTidset
{Bread, Butter, Milk, Jam}{T8}

我们在 k = 4 处停止,因为没有更多的 item-tidset 对可以组合。

由于最小支持 = 2,我们从给定的数据集中得出以下规则:-

Items BoughtRecommended Products
BreadButter
BreadMilk
BreadJam
ButterMilk
ButterCoke
ButterJam
Bread and ButterMilk
Bread and ButterJam

优于 Apriori 算法的优点:-

  1. 内存要求:由于 ECLAT 算法使用深度优先搜索方法,它使用的内存比 Apriori 算法少。
  2. 速度: ECLAT 算法通常比 Apriori 算法快。
  3. 计算次数: ECLAT 算法不涉及重复扫描数据以计算单个支持值。