关联规则ECLAT算法

Eclat算法

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

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

举个例子

假设数据集如下所示:

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

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

表一

TIDitems
1A,B,C
2A,B
3A
4A,C
5B,C,D
6A,B

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

表二

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

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

通过倒排表格计算频率

itemfreq(频率)
A5
B4
C3
D1

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

itemfreq(频率)
A5
B4
C3

根据算法思想:由频繁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,6
B1,2,5,6

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

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

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

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

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

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

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

则频繁2项集为

itemfreq(频率)
{A,B}3

依次类推求频繁3项集:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值