2017-10-16 6 views
1

Während head() verwendet werden kann, um die Top-n-Regeln zu extrahieren, werden einige RHS-Elemente möglicherweise mehrmals angezeigt. Ich würde gerne die Top n einzigartige RHS Artikel sowie die Top-Regel für jeden dieser Artikel finden.Wie arules verwendet werden, um die wichtigsten empfohlenen Elemente und ihre Regeln zu identifizieren?

Ich habe Code geschrieben, der dies erreicht, aber es läuft sehr langsam, vermutlich aufgrund der Verwendung von "Teilmenge" -Funktion, die sehr ineffizient ist. Mein Code I iteriert über die eindeutigen Elemente von RHS, findet die Teilmenge der damit verbundenen Regeln und gibt die einzelne oberste Regel des Elements zurück. Ist das ein effektiver oder effizienter Weg? Gibt es einen besseren Weg?

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) 

Antwort

2

Wie wäre es damit?

Es gibt für jede rhs die oberen (ersten nach dem Sortieren) Regeln zurück.

+0

Aber natürlich! Vielen Dank. – MCornejo

Verwandte Themen