R arules 包:将规则子集合并为一个唯一的规则集
R arules package: Merge rules subsets into an unique rules set
我正在获取与 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
也应该来自 arules
包的 rules
类型。那么,有什么办法可以做到这一点吗?
提前致谢。
注意:抱歉,我无法获得可重现的示例,但这意味着需要大量代码。
您要保留唯一规则(如标题所示),还是要删除冗余规则?对于唯一规则,请使用 unique
,对于删除冗余规则,请查看 is.redundant
的示例。两者都应该适用于相当大的规则集。
基于@Michael Hahsler 的回应(部分解决方案),我开发了最终解决方案。即:
whole.rules<-whole.rules[!is.redundant(whole.rules)]
whole.rules<-remove.redundant.rules(whole.rules)
使用 is.redundant()
删除冗余规则,因此如果我有 A => B 和 B => A 我只保留一个取决于经典质量度量(在 remove.redundant.rules
中实现)。
我正在获取与 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
也应该来自 arules
包的 rules
类型。那么,有什么办法可以做到这一点吗?
提前致谢。
注意:抱歉,我无法获得可重现的示例,但这意味着需要大量代码。
您要保留唯一规则(如标题所示),还是要删除冗余规则?对于唯一规则,请使用 unique
,对于删除冗余规则,请查看 is.redundant
的示例。两者都应该适用于相当大的规则集。
基于@Michael Hahsler 的回应(部分解决方案),我开发了最终解决方案。即:
whole.rules<-whole.rules[!is.redundant(whole.rules)]
whole.rules<-remove.redundant.rules(whole.rules)
使用 is.redundant()
删除冗余规则,因此如果我有 A => B 和 B => A 我只保留一个取决于经典质量度量(在 remove.redundant.rules
中实现)。