2015-09-17 100 views
1

我的目标是制定有关诊断数据的重要规则。数据集限制尺寸

我预处理我的数据集中没有稀疏格式;我有116000个实例和28个属性。 我申请的Apriori算法WEKA所示(使用秧鸡资源管理器界面)

Apriori -N 20 -T 1 -C 0.8 -D 0.05 -U 1.0 -M 0.1 -M 0.1 -S -1.0 -c -1

算法似乎需要很长的时间才能完成。 目前超过三个小时即将结束。

是否正常?有一种方法可以加速算法(以其他方式预处理数据,或为Apriori选择其他参数)?或者weka不是这个维度的正确工具?

+0

检查此问题http://stackoverflow.com/questions/15692012/input-arff-file-for-weka-apriori – grubjesic

+0

不幸的是,Weka通常非常缓慢。尝试A)使用ELKI,SPMF或Christian Borgelt的C实现,而应该快得多,B)FPGrowth算法而不是Apriori。 –

回答

0

您可以对数据集进行二次采样或分区,并在每个分区或其中一些分区上运行Apriori算法,然后合并所获得的规则。根据算法(空间和时间计算复杂度),某些算法可能需要很长时间才能完成,并且这与几个因素(num实例,num attribs,attrib的tipe)成比例。除了Java之外,Weka并不是特别快,它不像其他编译语言那么快。

有时,由于所提到的压缩比,在数据集的更小的分区上运行几次算法会更快。复杂。

例如,如果你的算法需要时间成比例的实例的数目的平方,CN^2,会更快上的小10倍分区上运行的10倍,10C((N^2 )/(10^2))= 0.1c(N^2)

希望能有所帮助。

+0

谢谢,我会试试这种方式。这种方法可以降低复杂性,但可以更改度量值(支持,确认和提升)的值。这是正确的? – Claudia

+0

没错。但是要知道每个分区中有多少个实例,我希望可以将每个分区的集体支持,信心和提升结合起来,对于每个获得的规则,丢弃不太重要的规则。 – shirowww

0

像许多其他数据挖掘库一样,Weka只提供了两个最着名的算法:Apriori和FPGrowth。 Apriori是一种以效率低下而闻名的老算法。此外,Apriori和FPGrowth的Weka实现都很慢。

如果你想要更好的Java实现和更多算法,你可以检查SPMF open-source data mining library(我是创始人),它提供了最大的模式挖掘算法集合(超过110个算法)。对于项目集挖掘,它提供Apriori和FPGrowth,但也提供许多其他算法,如Eclat(2000)HMine(2005),LCM(FIMI 2004比赛中最快)以及FIN(2014),PrePost(2014) Prepost +(2015),可以比以前的算法更快。此外,它还提供了这些算法的多种变体,例如用于挖掘罕见项目集,相关项目集,高效用项目集,不确定数据中的项目集,关联规则,闭合模式,顺序模式,顺序规则等。

还有一些在网站上进行的性能评估显示SPMF实现比Weka for Apriori/FPGrowth更快。