DM 频繁项集挖掘算法

文章详细比较了Apriori、FP-growth和ECLAT三种频繁项集挖掘算法的实验过程和性能差异,发现FP-growth在大型数据集上表现出最优性能,Apriori次之,ECLAT居中,主要取决于数据扫描次数和生成候选项集的需求。
摘要由CSDN通过智能技术生成

实验过程说明

直接运行 FPMining.py 文件,数据集位于根目录 data 文件夹下。

实验结果:

在这里插入图片描述

在多次运行代码后,发现算法执行时间的长短顺序如下:
Apriori算法执行时间最长,FP-growth算法执行时间最短,ECLAT算法执行时间位于前两者之间,且更接近后者。即:FP-growth算法和 ECLAT算法的时间性能相对较好,Apriori算法稍差。而FP-growth算法相对优于 ECLAT算法。


算法分析

说明

  1. Apriori算法:

    • 基于候选项生成和剪枝
    • 算法首先扫描数据集,生成频繁1项集,然后通过组合频繁k-1项集生成候选k项集,并通过扫描数据集计算候选项集的支持度,再根据最小支持度进行剪枝,得到频繁k项集。重复这个过程直到无法生成更多频繁项集为止。
    • 优点:能够找到所有的频繁项集
    • 缺点:在生成候选项集和计算支持度时需要多次扫描数据集,当数据集较大时,性能会受到影响。
  2. FP-growth算法:

    • 基于FP树
    • 算法首先构建一个FP树,其中每个节点表示一个项集,节点之间通过链表连接具有相同项的节点。然后通过递归地构建条件FP树,找到频繁项集。
    • 优点:只需要对数据集进行两次扫描,一次用于构建FP树,一次用于挖掘频繁项集,因此在大型数据集上具有较高的效率。
  3. ECLAT算法:

    • 基于垂直数据格式
    • 算法将数据集重新组织为一种垂直格式,其中每个项与包含它的事务列表相关联。然后通过递归地计算交集,找到频繁项集。
    • 优点:在计算交集时具有高效性,因为使用了位向量和位运算。
    • 缺点:需要对项集进行多次递归操作,当数据集较大时,性能可能会受到影响。

性能差异

  • 从上述算法实现原理中可以看出:

    • 在小型数据集上,三种算法的性能差异可能不明显,且差异主要取决于实现的优化程度。
    • 在大型数据集上,FP-growth算法通常具有最高的性能,因为它只需要两次扫描数据集,并且不需要生成候选项集。
    • Apriori算法在大型数据集上的性能相对较差,因为需要多次扫描数据集并生成大量的候选项集。
    • ECLAT算法在性能上介于AprioriFP-growth之间,它具有较好的交集计算性能,但可能需要多次递归操作。
  • 实验结果中可以看出:实际实验情况符合上述分析。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值