如何使用arules来识别top n推荐项目及其规则?
Posted
技术标签:
【中文标题】如何使用arules来识别top n推荐项目及其规则?【英文标题】:How to use arules to identify top n recommended items and their rules? 【发布时间】:2017-10-16 14:10:57 【问题描述】:虽然head()
可用于提取前 n 条规则,但某些 RHS 项可能会出现多次。我想找到前 n 个唯一 RHS 项目以及每个此类项目的***规则。
我已经编写了完成此操作的代码,但运行速度很慢,大概是由于使用了“子集”函数,效率非常低。我的代码 I 遍历 RHS 的唯一项,找到与其相关的规则子集,并返回该项的单个***规则。这是一种有效或高效的方法吗?有没有更好的办法?
library(arules)
data("Groceries")
rules = apriori(Groceries,
parameter = list(supp = 0.01, conf = 0.1, target = "rules"),
appearance = list(lhs=c("whole milk", "root vegetables"), default="rhs"))
rules = sort(rules, by=c("confidence", "lift", "support"))
rhs.unique = unique(rules@rhs@itemInfo$labels[rules@rhs@data@i+1]) #Already sorted by top items.
#Function that returns the top rule for a particular RHS item in a set of rules.
top_item_rule = function(item, rules=NULL)
rules = subset(rules, rhs %in% item)
rules = sort(rules, by=c("confidence", "lift", "support"))
head(rules, n=1)
n = 3
toprules = lapply(rhs.unique[1:n], top_item_rule, rules)
toprules = do.call(c, args=toprules)
【问题讨论】:
【参考方案1】:这个怎么样?
rules <- sort(rules, by=c("confidence", "lift", "support"))
rules[!duplicated(rhs(rules))]
它为每个 rhs 返回顶部(排序后的第一个)规则。
【讨论】:
以上是关于如何使用arules来识别top n推荐项目及其规则?的主要内容,如果未能解决你的问题,请参考以下文章