R arules包:将规则子集合并到唯一的规则集

时间:2018-01-18 11:34:46

标签: r merge arules

我正在使用R中的arules包获得关联规则。我有很多规则,我正在尝试删除多余的规则。我为了得到它而遵循的程序基于矩阵并总结了哪些规则是其他规则的子集。如果我将此过程(我们称之为remove.redundant.rules())应用于整个规则集,则不允许R存储一个非常大的矩阵,所以我决定通过小批量删除冗余规则然后应用一般过程结果集。 (那是计划)。

当我做批次时,我会做这样的事情:

for(batch in seq(1,length(rules),by=batch_size)){
  rules_batch<-rules[batch:((batch+batch_size)-1)]
  pruned_batch<-remove.redundant.rules(rules_batch)
}

我获得length(rules)/batch_size个规则子集。每个pruned_batch来自rules个包的arules个类型。我的计划是做这样的事情:

whole.rules<-arules::rules() #That's just pseudocode
for(batch in seq(1,length(rules),by=batch.size)){
    rules.batch<-rules[batch:((batch+batch.size)-1)]
    pruned.batch<-remove.redundant.rules(rules.batch)
    whole.rules<-rbind(whole.rules,pruned.batch) #That's just pseudocode
}
whole.rules<-remove.redundant.rules(whole.rules)

现在,whole.rules也应来自rules包的arules类型。那么,有没有办法做到这一点?

提前致谢。

注意:抱歉,我无法获得可重现的示例,但这意味着很多代码。

2 个答案:

答案 0 :(得分:0)

是否要保留唯一规则(如标题中所示),还是要删除冗余规则?对于唯一规则,请使用unique并删除冗余规则,查看is.redundant的示例。两者都适用于相当大的规则集。

答案 1 :(得分:0)

基于@Michael Hahsler的回应(部分解决方案),我已经开发出了最终的解决方案。那就是:

whole.rules<-whole.rules[!is.redundant(whole.rules)]
whole.rules<-remove.redundant.rules(whole.rules)

删除is.redundant()的冗余规则,如果我有A =&gt; B和B =&gt;我只保留一个取决于经典质量测量(在remove.redundant.rules中实现)。