【发布时间】:2018-11-27 17:30:43
【问题描述】:
Prof. Michael Hahsler 编写的出色 R 包 recommenderlab 提供了一个推荐模型,该模型基于从他的另一个 R 包 arules 派生的关联规则。
改编自recommenderlab 文档的最小示例代码可以在另一篇帖子here 中找到。
学习到的 AR 推荐模型可用于在给定用户 ID 的情况下进行预测/推荐。
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"
我了解到,预测基本上是首先从训练数据集中挖掘的规则集 (R) 中找到所有匹配的 LHS。然后推荐支持度/置信度/提升度得分最高的匹配规则中的 N 个唯一 RHS。
所以我的问题是如何获得匹配的 LHS 规则进行预测?
从source code我们可以看到
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?
【问题讨论】:
标签: r apriori arules recommenderlab