前面介绍过的Apriori算法和FP-growth算法都是从TID项集格式(即{TID:itemset})的事务集中挖掘频繁模式,其中TID是事务标识符,而itemset是事务TID中购买的商品。这种数据格式称为水平
数据格式
。或者,数据也可以用项-TID集格式(即{item:TID_set})表示,其中item是项的名称,而TIDb_set是包含item的事务的标识符集合。这种格式称为
垂直数据格式。

        下面我们介绍使用垂直数据格式有效挖掘频繁项集,它是等价类变换(Equivalence CLAss Transformation,Eclat
)算法的要点。


        先举例说明使用垂直数据格式挖掘频繁项集。


        考虑表1的事务数据库D的水平数据格式。扫描一次该数据集就可以把它转换成表2所生死的垂直数据格式。


                                                           表1





                                                         表2    
 表1事务数据库D的垂直数据格式





       
通过取每对频繁项的TID集的交,可以在该数据集上进行挖掘。设最小支持度计数为2。由于表2的每个项都是频繁的,因此总共进行10次交运算,导致8个非空2项集,如表3所示。注意,项集{I1,I4}和{I3,I5}都只包含一个事务,因此它们都不属于频繁2项集的集合。


                表3    垂直数据格式的2项集               

       
根据先验性质,一个给定的3项集是候选3项集,仅当它的每一个2项集子集都是频繁的。这里候选产生过程将仅产生两个3项集:{I1,I2,I3},{I1,I2,I5}。通过取这些候选3项集任意对应2项集的TID集的交,得到表4,其中只有两个频繁3项集:{I1,I2,I3:2}和{I1,I2,I5:2}


                                                                    表4  
 垂直数据格式的3项集




       Eclat算法最大的特点便是倒排思想
,也就是生成一个统计每一个项在哪些事务中出现过的倒排表,表中的每一行由项和它对应的TID集组成,TID集即包含此项目的所有事务的集合。

         Eclat算法挖掘频繁项集的过程如下:

        (1)通过扫描一次数据集,把水平格式的数据转换成垂直格式;

        (2)项集的支持度计数简单地等于项集的TID集的长度;


        (3)从k=1开始,可以根据先验性质,使用频繁k项集来构造候选(k+1)项集;

        (4)通过取频繁k项集的TID集的交,计算对应的(k+1)项集的TID集。


        (5)重复该过程,每次k增加1,直到不能再找到频繁项集或候选项集。


        Eclat算法产生候选项集的理论基础是:频繁K-项集可以通过或运算生成候选的K+1-项集,频繁K-项集中的项是按照字典序排列,并且进行或运算的频繁K-项集的前K-1个项是完全相同的。


       
Eclat算法除了在产生候选(k+1)项集时利用先验性质外,另一个优点是不需要扫描数据库来确定(k+1)项集的支持度(k>=1),这是因为每个k项集的TID集携带了计算支持度的完整信息。然而,TID集可能很长,需要大量的内存空间,长集合的交运算还需要大量的计算时间。





参考文献:《数据挖掘概念与技术(原书第3版)》

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信