Как получить LHS для предсказания рекомендателем на основе ассоциативных правил в R Recommenderlab?

Великолепный пакет R recommenderlab, написанный проф. Майкл Хаслер предлагает рекомендательную модель, основанную на правилах ассоциации, полученных из его другого пакета 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 перед сортировкой?


person Donny    schedule 18.06.2018    source источник


Ответы (1)


head(unique(unlist(LIST(rhs(sort(model$rule_base[m[,i]], by=sort_measure)), decode=FALSE))), n) берет все правила с совпадающими LHS, сортирует их по мере, а затем возвращает n уникальные элементы RHS с наивысшим показателем.

Я предполагаю, что вы думаете об агрегировании меры, если в базе правил есть несколько правил сопоставления с одной и той же RHS. Я тоже думал об этом, но потом решил использовать стратегию первого матча. Основная причина заключалась в том, как создаются правила ассоциации / частые наборы элементов. Для каждого более длинного правила вы найдете множество более коротких правил с той же правой правой частью, и поэтому агрегирование меры путем сложения не имело для меня особого смысла.

person Michael Hahsler    schedule 19.06.2018