毫升 | 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
Item | Tidset |
---|---|
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
Item | Tidset |
---|---|
{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
Item | Tidset |
---|---|
{Bread, Butter, Milk} | {T8, T9} |
{Bread, Butter, Jam} | {T1, T8} |
k = 4
Item | Tidset |
---|---|
{Bread, Butter, Milk, Jam} | {T8} |
我们在 k = 4 处停止,因为没有更多的 item-tidset 对可以组合。
由于最小支持 = 2,我们从给定的数据集中得出以下规则:-
Items Bought | Recommended Products |
---|---|
Bread | Butter |
Bread | Milk |
Bread | Jam |
Butter | Milk |
Butter | Coke |
Butter | Jam |
Bread and Butter | Milk |
Bread and Butter | Jam |
优于 Apriori 算法的优点:-
- 内存要求:由于 ECLAT 算法使用深度优先搜索方法,它使用的内存比 Apriori 算法少。
- 速度: ECLAT 算法通常比 Apriori 算法快。
- 计算次数: ECLAT 算法不涉及重复扫描数据以计算单个支持值。