【问题标题】:How to get the LHS for prediction by recommender based on association rules in R recommenderlab?如何根据R推荐器实验室中的关联规则获得推荐器预测的LHS?
【发布时间】: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_measurelhs

【问题讨论】:

    标签: r apriori arules recommenderlab


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多