Как получить LHS для прогнозирования по рекомендации, основанной на правилах ассоциации в R Recommenderlab?
Удивительный пакет R recommenderlab
написанный Michael Hahsler, предоставляет модель рекомендации, основанную на правилах ассоциации, полученных из его другого пакета R arules
,
Минимальный пример кода адаптирован из документации recommenderlab
можно найти в другом посте здесь.
Изученная модель рекомендации AR может использоваться для прогнозирования / рекомендации с учетом идентификатора пользователя.
pred <- predict(rec, dat[1:5,])
as(pred, "list")
[[1]]
[1] "whole milk" "rolls/buns" "tropical fruit"
[[2]]
[1] "whole milk"
[[3]]
character(0)
[[4]]
[1] "yogurt" "whole milk" "cream cheese " "soda"
[[5]]
[1] "whole milk"
Я понял, что прогноз в основном состоит в том, чтобы сначала найти все соответствующие LHS из набора правил (R), добытого из набора обучающих данных. А затем порекомендуйте N уникальных RHS соответствующих правил с наивысшей оценкой поддержки / доверия / подъема.
Итак, мой вопрос: как вы получаете соответствующие правила LHS для прогнозирования?
Из исходного кода мы можем видеть
m <- is.subset(lhs(model$rule_base), newdata@data)
for(i in 1:nrow(newdata)) {
recom <- head(unique(unlist(
LIST(rhs(sort(model$rule_base[m[,i]], by=sort_measure)),
decode=FALSE))), n)
reclist[[i]] <- if(!is.null(recom)) recom else integer(0)
}
Мне удалось получить доступ к rule_base
от обученной модели через
rule_base <- getModel(rec)$rule_base
но тут возникает другая проблема, почему head(unique(unlist(LIST(rhs(sort(model$rule_base[m[,i]], by=sort_measure)), decode=FALSE))), n)
но не первая группа rhs
а затем объединить sort_measure
и lhs
перед сортировкой?
1 ответ
head(unique(unlist(LIST(rhs(sort(model$rule_base[m[,i]], by=sort_measure)), decode=FALSE))), n)
принимает все правила с соответствующим LHS, сортирует их по мере, а затем возвращает n
уникальные изделия RHS с наивысшей мерой.
Я предполагаю, что вы думаете об агрегировании меры, если в базе правил есть несколько правил сопоставления с одинаковой RHS. Я тоже думал об этом, но затем решил использовать стратегию первого матча. Основной причиной было то, как создаются правила ассоциации / частые наборы элементов. Для каждого более длинного правила вы найдете много более коротких правил с одинаковой RHS, и, таким образом, агрегирование меры путем сложения не имело для меня особого смысла.