我正在使用orangecontrib.associate.fpgrowth
进行关联规则挖掘。基于几个实验,似乎产品数量增加到1000以上,然后运行时间呈指数增长。但是,我不确定它是否属实。对性能影响最大的算法和/或参数的复杂性是否有任何近似值(如产品数量?总交易数量?还是别的什么?
答案 0 :(得分:-1)
关联规则生成算法一般"爆炸"蛮快。特别是规则从项目集操作,我认为类似于枚举powerset(2 n )。我自己无法进一步阐述理论上的复杂性,但我认为给定支持/置信度/平均值的运行时间。交易规模阈值与其他地方的阈值相当:
let pages = urls.reduce(
(page,url)=>
page.src(url,size),
,new Pageres({})
);
return pages
.dest(dest)
.run()
.then((result) => {
console.log("done");
return result
})
.catch((error) => {
console.log("error", error);
throw error;
});
输出:
import time
import numpy as np
from orangecontrib.associate.fpgrowth import frequent_itemsets,\
association_rules
for n_trans in (100, 1000, 10000):
for n_items in (10, 100, 1000):
X = np.random.random((n_trans, n_items)) > .8
t_start = time.clock()
itemsets = dict(frequent_itemsets(X, .05))
n_itemsets = len(itemsets)
t_itemsets = time.clock() - t_start
t_start = time.clock()
rules = list(association_rules(itemsets, .01))
n_rules = len(rules)
t_rules = time.clock() - t_start
print('{:5d} {:4d} {:5.1f} ({:7d}) {:4.1f} ({:7d})'.format(
n_trans, n_items, t_itemsets, n_itemsets, t_rules, n_rules))