如何根据R推荐器实验室中的关联规则获取推荐器预测的LHS?



MichaelHahsler教授编写的令人敬畏的R包recommenderlab提供了一个基于从他的另一个R包arules派生的关联规则的推荐器模型。

改编自recommenderlab文档的最小示例代码可以在另一篇文章中找到。

学习到的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 预测规则?

从源代码中我们可以看到

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_measurelhs

head(unique(unlist(LIST(rhs(sort(model$rule_base[m[,i]], by=sort_measure)), decode=FALSE))), n)采用具有匹配 LHS 的所有规则,按度量对它们进行排序,然后返回具有最高度量值的n个唯一 RHS 项。

我猜您正在考虑聚合度量值,如果规则库中有多个具有相同 RHS 的匹配规则。我也考虑过这一点,但后来决定使用第一场比赛的策略。主要原因是创建关联规则/频繁项集的方式。您会发现每个较长的规则都有许多具有相同 RHS 的较短规则,因此通过加法聚合度量对我来说没有太大意义。

最新更新