为什么在此实现中 Apriori 运行 比 FP-Growth 快?
Why does Apriori run faster than FP-Growth in this implementation?
我正在使用 Christian Borlget 的 FP-Growth and Apriori packages to find frequent item sets and association rules. According to his paper,fp-growth 在所有情况下都比 apriori 表现更好。
运行 我机器上的 FP-Growth,在 ~36MB(~500,000 行)csv 文件上,显示:
from fim import apriori, fpgrowth
s = time.time()
fp = fpgrowth(tracts, target='r', supp=0.0065, zmin=2, report="C,S") # tracts is a list of lists
e = time.time()
print(e - s)
41.10438871383667
而 Apriori 结果是:
s = time.time()
ap = apriori(tracts, target='r', supp=0.0065, zmin=2, report="C,S")
e = time.time()
print(e - s)
34.50810647010803
我在实施过程中遗漏了什么?
不能保证任何一个总是比另一个更好。
例如,如果没有项目满足最小支持度,Apriori 可以非常快。当你最长的项目集是 2 个项目集时,一个非常简单的版本就可以了。 Apriori 剪枝和 fptree 只有在您选择(更有趣!)更长的项目集时才开始发光,这可能需要选择较低的支持参数。
我正在使用 Christian Borlget 的 FP-Growth and Apriori packages to find frequent item sets and association rules. According to his paper,fp-growth 在所有情况下都比 apriori 表现更好。
运行 我机器上的 FP-Growth,在 ~36MB(~500,000 行)csv 文件上,显示:
from fim import apriori, fpgrowth
s = time.time()
fp = fpgrowth(tracts, target='r', supp=0.0065, zmin=2, report="C,S") # tracts is a list of lists
e = time.time()
print(e - s)
41.10438871383667
而 Apriori 结果是:
s = time.time()
ap = apriori(tracts, target='r', supp=0.0065, zmin=2, report="C,S")
e = time.time()
print(e - s)
34.50810647010803
我在实施过程中遗漏了什么?
不能保证任何一个总是比另一个更好。 例如,如果没有项目满足最小支持度,Apriori 可以非常快。当你最长的项目集是 2 个项目集时,一个非常简单的版本就可以了。 Apriori 剪枝和 fptree 只有在您选择(更有趣!)更长的项目集时才开始发光,这可能需要选择较低的支持参数。