Великолепный пакет 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
перед сортировкой?