关联规则ECLAT算法

    科技2025-12-22  19

    Eclat算法

    Eclat算法是一种基于集合交集的深度优先搜索算法,它适用于具有局部性增强特性的顺序执行和并行执行。

    与fp-growth 和apriori算法不同,Eclat算法加入了倒排的思想,具体就是将事务数据中的项作为key,每个项对应的事务ID作为value。

    举个例子

    假设数据集如下所示:

    假设支持度为50%,置信度为70%

    则最小支持度为:50%×6(TID个数)=3

    表一

    TIDitems1A,B,C2A,B3A4A,C5B,C,D6A,B

    Eclat算法的倒排思想,将表格变为:

    表二

    item(items中的单个元素)Tids(TID的合集)A1,2,3,4,6B1,2,5,6C1,4,5D5

    通过转换后的倒排表可以加快频繁集生成速度。 其算法思想是 由频繁k项集求交集,生成候选k+1项集 。对候选k+1项集做裁剪,生成频繁k+1项集,再求交集生成候选k+2项集。如此迭代,直到项集归一。 根据上述数据的情况,我们先计算频繁1项集:

    通过倒排表格计算频率

    itemfreq(频率)A5B4C3D1

    去除小于最小支持度的item,则频繁1项集为:

    itemfreq(频率)A5B4C3

    根据算法思想:由频繁k项集求交集,生成候选k+1项集 。对候选k+1项集做裁剪,生成频繁k+1项集

    在一次扫描数据库后得到每个1项集的支持度, 而候选k项集的支持度就是在对k-1项集进行交集操作后得到的该k项集Tidset中元素的个数。设项集X, 其Tidset为T (X) ,项集Y, 其Tidset为T (Y) , 则X的支持度计数为|T (X) |;Y的支持度计数为|T (Y) |;由项集X和Y可以组成一个新的项集Z, 则Z的支持度计数为|T (X∩Y) | 摘自:Eclat算法的分析及改进 在中国知网查看:https://kns.cnki.net/KXReader/Detail?TIMESTAMP=637377711556093750&DBCODE=CJFD&TABLEName=CJFD2010&FileName=JSJC201023012&RESULT=1&SIGN=nsRsq9PWYElYKG40xJWphpMtntA%3d

    求频繁2项集步骤如下

    频繁1项集元素排列为{A,B}、{A,C}、{B,C}

    **{A,B}**的项集参照表二(倒排表格)

    item(items中的单个元素)Tids(TID的合集)A1,2,3,4,6B1,2,5,6

    其中TID:1,2,6共同存在,则{A,B}出现次数为3,满足最小支持度3。

    **{A,C}**的项集参照表二(倒排表格)

    item(items中的单个元素)Tids(TID的合集)A1,2,3,4,6C1,4,5

    其中TID:1,4共同存在,则{A,C}出现次数为2,不满足最小支持度3。

    **{B,C}**的项集参照表二(倒排表格)

    item(items中的单个元素)Tids(TID的合集)B1,2,5,6C1,4,5

    其中TID:1,5共同存在,则{B,C}出现次数为2,不满足最小支持度3。

    则频繁2项集为

    itemfreq(频率){A,B}3

    依次类推求频繁3项集:

    但本题中,频繁2项集的元素就只有两个,不构成3项集,则不存在。

    Processed: 0.023, SQL: 10