数据挖掘中频繁项集发现的新方法
1. 问题背景与现有算法分析
在数据挖掘领域,挖掘频繁项集是一个重要的任务。当处理数据库时,为了跟踪包含特定项集的事务数量,需要在主内存中分配计数器。然而,如果在读取数据库时检查的项集数量过多,可能会导致主内存无法容纳所有计数器,或者花费过多精力维护那些最终支持度低于阈值的项集。
现有的算法通常采用迭代的方式解决这个问题。它们每次只在主内存中保留集合的一个子集。具体来说,在每个迭代中,计算支持度的项集的基数是固定的。在知道每个项集的支持度后,执行剪枝阶段,去除那些支持度低于阈值的项集。在下一次迭代中,确定基数增加的项集的支持度。这些项集(称为候选集)是从上次迭代中找到的大项集识别出来的。部分算法在每次迭代时还需要对数据库进行一次读取,这决定了每次迭代中执行的 I/O 操作数量,而 I/O 操作从执行时间的角度来看是最昂贵的。
2. 新方法与 Seq 算法介绍
为了提高效率,提出了一种新的方法来识别所有大项集。该方法基于这样的观察:每次迭代中在主内存中维护的集合可以任意选择。项集按字典序排序,第一次迭代保留以字典序中最后一个项开头的项集,后续迭代按降序保留以其他项开头的项集,目的是提高候选项集生成的效率,并减少更新其支持度所需的主内存访问次数。
基于此方法提出了 Seq 算法。Seq 算法在第一步不是构建项集,而是构建项的序列。它具有以下优点:
- 减少 I/O 执行时间 :只对数据库进行一次读取。
- 适用于大型数据库 :特别适用于非常大维度的数据库和高分辨率的搜索,其中最小支持度定义在非常低的水平。
超级会员免费看
订阅专栏 解锁全文
1570

被折叠的 条评论
为什么被折叠?



