频繁项集最佳算法和库

时间:2016-06-08 13:23:04

标签: performance machine-learning weka apriori

我几天前开始从事机器学习项目,我遇到以下情况:

我有一个行程数据库(行程是一组目的地,作为行程的一部分一起选择),我想确定一个目的地是否将被选为其他选定目的地的旅行的一部分。这是一个例子,假设A,B,C,D是目的地:

A, B -> C
A, D, C -> B

我认为这是一个推荐系统问题,我研究了解决方案的技术。

我尝试使用WEKA的Apriori和FPGrowth但我无法生成结果,因为我有91个项目和12,000个事务(因此,这是一个包含91列和12,000行,TRUE和FALSE值的ARFF文件)和该程序永远不会结束,也不会消耗超过5 GB的RAM(我等待30小时的算法在Core i7 last gen和12GB RAM PC上运行)。此外,我没有看到任何选项只选择值为TRUE的规则作为暗示(我需要这个,因为我想知道是否有人会前往X,因为其他人前往Y. / p>

那么,有没有其他技术或方法可以用来实现我期待的结果?我希望输出一个带有“规则”的文件或“暗示”另一组项目的项目集,以及“推荐”的概率。

示例:

A, B -> C ; 90% 
verbose: "People who travel to Rome and Florence travel to Milan with a probability (or other measure) of 90%"

谢谢!

2 个答案:

答案 0 :(得分:1)

实施Apriori算法的某些事情似乎并不合适。尝试使用Apriori算法的另一种实现或检查当前的实现。出于声明的目的,在目的地之间生成关联规则是Apriori或更快的FP-Growth算法就好了。也许这有助于大致理解:R - association rules - apriori

答案 1 :(得分:0)

实际上,Weka中的实现效率很低。您可以查看 SPMF data mining library in Java, ,它可以为模式挖掘提供高效的算法实现。它实际上有超过100种算法,包括Apriori,FPGrowth和许多其他算法。我建议使用 FPGrowth ,它非常快且内存效率很高。但你也可以检查其他算法。顺便说一下,我是图书馆的创始人。