在 Arules 中,return 个来自许多规则的最小支持项

in Arules, return the smallest support items from a lot of rules

我正在处理生成大量规则的庞大数据集。我只需要高升低支持规则,但我得到了超过 1500 万(这是在设置 min/maxlen 并清理我的源数据之后)

我现在要做的是创建一个几百万的头部,然后从所有规则中减去它。我希望最终剩下的只是桶底。

代码:

basket_rules2 <- apriori(ttk, parameter = list(sup = 0.03, conf = 0.25, target="rules", minlen=4, maxlen=4, maxtime=0), appearance = list(rhs = "Fail: Generator Boot-up", default ="lhs"))

rules <- sort(basket_rules, by = "sup")
head1 <- head(rules, 2000000)
head2 <- rules[ !(rules %in% head1), ]
> summary(head2)
>set of 0 rules

我也试过:

rules <- sort(basket_rules, by = "sup")
head1 <- head(rules, 2000000)
head2 <- rules[-head1,]
>Error in -head1 : invalid argument to unary operator

我在采样时使用了类似的语法,我不确定为什么这不起作用。我真正需要的是获得低支持 aprori 规则,我觉得我可能会让这种方式变得比它需要的更复杂。关于为什么我的代码不起作用,或者我如何获得真正低的 sup/conf 规则的任何建议?

希望我能正确理解你的问题。我认为你可以做到这一点

library(arules)
data(Groceries)

rules <- apriori(Groceries, parameter = list(support= 0.0002))

这会产生大约 200 万条规则。现在您可以使用 tail:

获得支持度最低的 100 条规则
low_support_rules <- tail(rules, by = "support", n = 100)

现在您可以使用提升对低支持度规则进行排序。