数据挖掘课后作业5
4(实现项目)使用你熟悉的程序设计语言(如C++或Java),实现本章介绍的三种频繁项集挖掘算法:(1)Apriori[AS94B],(2)FP增长[HPY00]和(3)ECLAT[Zak00](使用垂直数据格式挖掘)
在各种类型的大型数据集上比较每种算法的性能
写一个报告,分析在哪些情况下(如数据大小、数据分布、最小支持阀度值设置和模式的稠密度),某种算法比其他算法好,并陈述理由
三种算法的比较1、对与项集较大,频繁项集较分散,是一个稀疏型的数据集,性能为Apriori>FP-growth>Eclat2、对与数据集的项集较小,数据非常稠密的数据集,性能为:FP-growth>Apriori>Eclat各算法采用的数据表示模式及挖掘策略不同
采用优化措施后的Apriori算法,对于非稠密数据己经具有较高的效率,其性能甚至优于FP-growth算法;但由于其采用的是广度优先的挖掘策略,对稠密数据效率仍较差
而Eclat算法采用的纵向表示法,对数据集较小的稠密数据,效率相对较高;但对于数据集较大的稀疏数据,效率较低,FP一树浓缩了数据库的主要信息,分而治之的挖掘策略也使挖掘问题的复杂程度有所降低
答:(1)Apriori算法的实现:使用Java语言实现Apriori算法,AprioriAlgorithm类包含了频繁项集的挖掘过程和频繁关联规则的挖掘过程;ProperSubsetCombination辅助类用于计算一个频繁项集的真子集,采用组合原理,基于数值编码原理实现的组合求解集合的真子集
Apriori算法的核心实现类为AprioriAlgorithm,实现的Java代码如下所示:(一)核心类packageorg
shirdrn
datamining
association;importjava
HashMap;importjava