【问题标题】:R arules package: Merge rules subsets into an unique rules setR arules 包:将规则子集合并到唯一的规则集中
【发布时间】:2018-01-18 11:34:45
【问题描述】:

我正在使用 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 都来自arules 包的rules 类型。我的计划是做这样的事情:

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 类型。那么,有没有办法做到这一点?

提前致谢。

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

【问题讨论】:

    标签: r merge arules


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      根据@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 中实现)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多