如何根据R recommenderlab中的关联规则推荐LHS进行预测?

时间:2018-06-18 20:07:36

标签: r apriori arules recommenderlab

Prof. Michael Hahsler编写的令人敬畏的R包recommenderlab提供了基于从他的另一个R包arules派生的关联规则的推荐者模型。

可以在另一篇文章here中找到从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"

我知道预测基本上是首先从训练数据集中挖掘的规则集(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 < /强>

1 个答案:

答案 0 :(得分:1)

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

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