Herstellung Ich versuche Empfehlung mit arules
Paketarules Paket - Fehler: Index außerhalb der Grenzen für Empfehlungen
Ich habe machen diese Daten
Data
Client product N Date
1 A Banana 1 01/01/2016
2 A Tomato 1 01/01/2016
3 A Tuna 1 01/01/2016
4 B Orange 2 01/01/2016
5 B Tomato 3 02/01/2016
6 C Kiwi 11 08/01/2016
Next ich diesen Code verwendet
trans = as(split(Data$product, Data$Client), "transactions")
Sales<- as(trans, "data.frame")
rules = apriori(trans, parameter = list(support = 0.001, confidence = 0.005))
rules.sorted <- sort(rules, by="lift")
# find redundant rules
subset.matrix <- is.subset(rules.sorted, rules.sorted)
subset.matrix[lower.tri(subset.matrix, diag=T)] <- NA
redundant <- colSums(subset.matrix, na.rm=T) >= 1
which(redundant)
rules.pruned <- rules.sorted[!redundant]
inspect(rules.pruned)
rules = rules.pruned
Ich bekomme folgende Regeln:
lhs rhs support confidence lift
1 {Tuna} => {Banana} 0.3333333 1.0000000 3.0
2 {Orange} => {Tomato} 0.3333333 1.0000000 1.5
3 {Tuna} => {Tomato} 0.3333333 1.0000000 1.5
4 {Banana} => {Tomato} 0.3333333 1.0000000 1.5
5 {} => {Kiwi} 0.3333333 0.3333333 1.0
6 {} => {Orange} 0.3333333 0.3333333 1.0
7 {} => {Tuna} 0.3333333 0.3333333 1.0
8 {} => {Banana} 0.3333333 0.3333333 1.0
9 {} => {Tomato} 0.6666667 0.6666667 1.0
aber jetzt für alle Kunden, ich möchte 3 Produkte empfehlen:
for (i in 1:3) {
reco=function(x){
rulesMatchLHS = is.subset([email protected],x)
suitableRules = rulesMatchLHS & !(is.subset([email protected],x))
order.rules = sort(rules[suitableRules], by = "lift")
LIST([email protected])[[i]]
}
NewS <- sapply(1:length(trans), function(x) reco(trans[x]))
NewS <- as.data.frame(NewS)
Sales <-cbind(Sales,NewS)
}
Dieser Code erzeugt den Fehler
Error in LIST([email protected])[[i]] : subscript out of bounds
Ich denke, dass das passiert, weil ich nicht für alle Benutzer Empfehlung hatte , aber ich möchte, dass der Code fortfährt und in diesem Fall "keinen Vorschlag" gibt.
Was ist der beste Weg, das zu tun?
thks, es funktioniert :) – Kardu
Wissen Sie, wann Recommenderlab mit Association Rules arbeiten wird? Weil normalerweise verwende ich recommenderlab mit Einzelteil zum Einzelteil und Benutzer zum Benutzer und ist groß, wenn ich Vereinigungsregeln auch benutzen kann. – Kardu
@Kardu: Die Entwicklungsversion auf github (https://github.com/mhahsler/recommenderlab) funktioniert bereits . Ich werde in der nächsten Woche eine neue Version auf CRAN bringen. –