R Prog- Market Basket Analysis - 如何在使用支持和信心循环时可视化产品推荐?

Posted

技术标签:

【中文标题】R Prog- Market Basket Analysis - 如何在使用支持和信心循环时可视化产品推荐?【英文标题】:R Prog- Market Basket Analysis - How to visualize product recommendations while using Support and Confidence Loop? 【发布时间】:2021-05-16 18:20:35 【问题描述】:
grid <- expand.grid(support = seq(0.05, 0.1, 0.01),
confidence = seq(0.05, 0.1, 0.01))

在此示例中,expand.grid 用于将支持指标从 0.05 增加到 0.10,增量为 0.01。置信度指标也是如此。 下面的代码 [来自 SO] 运行 apriori 算法以在满足上述支持和置信度指标时找到提升。

有没有办法可视化所有可能的升降机以帮助展示产品推荐? 谢谢

#SO solution to loop through support,confidence
library(dplyr)
res <- 
grid %>% 
group_by(support, confidence) %>% 
do(model = apriori(
tr,
parameter = list(support = .$support, confidence = .$confidence,maxlen=1)
)) %>% 
mutate(n_rules = length(model)) %>%
ungroup()

View(res$model)
warnings()

summary(res$model[res$confidence == 0.05 & res$support == 0.05][[1]])

【问题讨论】:

您的代码无法运行,因为tr 未定义。您还应该指定arules 包是必需的。 对于上下文,我还要补充一点,代码来自:***.com/a/43045512/5805670 @slamballais 绝对是,是的——这个链接被使用了。我应该被放在代码的第 2 行。 @AndrewGustar 我没有放完整的代码,但我已经定义了 tr 对象并且代码确实有效。我使用了datacamp.com/community/tutorials/market-basket-analysis-r 并将它与这个 SO 线程结合起来,以通过最小的支持和信心循环。 ***.com/a/43045512/5805670。我只是想知道在此之后如何将其可视化。 【参考方案1】:

假设您已经看过arulesViz standard plots,也许您想在每个模型上运行arules::inspect 并存储输出?然后,您可以根据需要创建自定义绘图。

library(arules)
id <- c("1","1","1","2","2","2","3","3","3")
obj <- c("a", "b", "j", "a", "g","c", "a","k","c")
df <- data.frame(id,obj)
tr <- as(split(df$obj, df$id), "transactions")

grid <- expand.grid(support = seq(0.05, 0.1, 0.01),
                    confidence = seq(0.05, 0.1, 0.01))

library(dplyr)
res <- 
  grid %>% 
  group_by(support, confidence) %>% 
  do(model = apriori(
    tr,
    parameter = list(support = .$support, confidence = .$confidence,maxlen=1)
  )) %>% 
  mutate(n_rules = length(model)) %>%
  ungroup()

一种选择是使用 purrr::map_dfr 创建一个包含所有 36 个模型的单个数据框

purrr::map_dfr(res$model, inspect)

或者,如果您正在寻找 arulesViz::plot,您可以通过将 plot 映射到 res$model 将其应用于所有 36 个模型。可以使用gridExtra 将 36 个地块放入一个更大的地块中。默认情况下这很忙,但是通过一些自定义它可能会满足您的需求。

library(arulesViz)
plot_list <- purrr::map(res$model, plot)
gridExtra::grid.arrange(grobs = plot_list)

【讨论】:

嗨@nniloc,谢谢。在保存检查部分规则的输出时,这将如何在 R 中完成?如果我查看文档,其中一个模型的输出看起来像这样mhahsler.github.io/arulesViz/README/inspectDT.html。当我尝试 plot_list 时,我得到“错误:无法将 gg/ggplot 对象转换为函数”,而 gridExtra 命令是“安排格罗布(...)中的错误:找不到对象'plot_list'”。 只是一个猜测,但也许你保存了一个名为 plot 的 ggplot 对象,有效地覆盖了 plot 函数?由于代码是从一堆不同的地方拼凑而成的,我将用完整的代码更新答案。 谢谢。我重新查看了代码,但找不到可能覆盖 plot 的 ggplot

以上是关于R Prog- Market Basket Analysis - 如何在使用支持和信心循环时可视化产品推荐?的主要内容,如果未能解决你的问题,请参考以下文章

什么是购物篮分析(Market Basket Analysis)

Apriori / Market Basket Analysis - 对特定长度项目集的限制分析

第四节 数据降维案列

降维实例之主成分分析

Apriori算法 - 没有得到python中的规则

视图 basket.views.basket_remove 没有返回 HttpResponse 对象。它返回 None 而不是