Alors que head()
peut être utilisé pour extraire les n premières règles, certains éléments RHS peuvent apparaître plusieurs fois. J'aimerais trouver les n premiers articles RHS uniques ainsi que la règle la plus élevée pour chacun de ces articles.Comment utiliser arules pour identifier les n éléments recommandés et leurs règles?
J'ai écrit un code qui accomplit cela mais il fonctionne très lentement, vraisemblablement en raison de l'utilisation de la fonction 'sous-ensemble', qui est très inefficace. Mon code I itére sur les éléments uniques de RHS, trouve le sous-ensemble des règles qui s'y rapportent, et renvoie la règle supérieure unique de l'élément. Est-ce une façon efficace ou efficiente de le faire? Y a-t-il un meilleur moyen?
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([email protected]@itemInfo$labels[[email protected]@[email protected]+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)
Mais bien sûr! Je vous remercie. – MCornejo