【问题标题】:Dataset limit dimension数据集限制维度
【发布时间】:2015-12-14 07:02:06
【问题描述】:

我的目标是制定关于诊断数据的重要规则。

我以 arff no sparse 格式预处理我的数据集;我有 116000 个实例和 28 个属性。 我像这样在 weka 中应用 Apriori 算法(使用 weka explorer 界面)

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 不是这个维度的正确工具?

【问题讨论】:

  • 不幸的是,Weka 通常很慢。尝试 A)使用 ELKI、SPMF 或 Christian Borgelt 的 C 实现,这应该更快,B)FPGrowth 算法而不是 Apriori。

标签: weka data-mining apriori


【解决方案1】:

您可以对数据集进行二次采样或分区,并对每个分区或其中一些分区运行 Apriori 算法,然后组合获得的规则。

某些算法可能需要很长时间才能完成,这与几个因素(实例数、属性数、属性提示)成正比,具体取决于算法(空间和时间计算复杂度)。 Weka 不是特别快,除了是 Java,它也没有其他编译语言那么快。

有时,由于提到的比较,在数据集的小得多的分区上运行多次算法会更快。复杂性。

例如,如果您的算法所花费的时间与实例数的平方成正比,cN^2,那么在小 10 倍的分区上运行速度会快 10 倍, 10c((N^2)/(10^2))=0.1c(N^2)

希望有所帮助。

【讨论】:

  • 谢谢 我会尝试这种方式。这种方法降低了复杂性,但改变了指标的值(支持、信心和提升)。对吗?
  • 没错。但是知道每个分区中有多少实例,您可以结合集体支持、信心和提升,我希望,对于每条获得的规则,丢弃不太重要的规则。
【解决方案2】:

与许多其他数据挖掘库一样,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 的实现快得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2022-11-13
    • 2018-03-25
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多