购物篮关联规则分析

浏览: 1817

                                                                      

通过本节,我们将会学习到:

  1. 关联规则的数据处理

  2. 关联规则分析

  3. 关联规则分析的可视化

概述

前几期我们学习到如何用R实现协同过滤推荐系统,而作为推荐系统的分支之一,关联规则分析也常用于探索性数据分析。无论是耳熟能详的啤酒尿布的故事,还是亚马逊王国的商品推荐,都在阐释着Aprior算法在商场购物篮分析中有这举足轻重的地位。

读取数据

从github<https://github.com/nupur1492/RProjects/tree/master/MarketBasketAnalysis>中读取groceries.csv数据。Member_number:购物者ID;Date:购物时间;ItemDescription:购买物品条目。
df_groceries <- read.csv("groceries.csv",header = TRUE,stringsAsFactors = FALSE)

数据清洗和操作

    我们使用Apriori算法,要求的格式必须是“basket”格式:第一列为每个购物者的唯一编码,第二列是一系列购物条目列表,由逗号,空格或等其他分割。格式如下:



   由于我们的数据结构并不满足要求,因此必须进行数据清洗和变换操作。首先对Member_number进行排序并转换为数值变量。
df_groceries$Member_number<- gsub("^[0-9]+\\t","",df_groceries$Member_number)
df_sorted <- df_groceries[order(df_groceries$Member_number),]
df_sorted$Member_number <- as.numeric(df_sorted$Member_number)
    我们运用plyr包中的ddply函数转换数据框为我们想要的“basket”格式,使相同ID的多列合并为一列。完成转换后,我们删除不需要的date列和Member_number列。
library(plyr)df_itemlist <- ddply(df_groceries,c("Member_number","Date"),                     function(df1)paste(df1$itemDescription,collapse = ","))
df_itemlist$Date <- NULL
df_itemlist$Member_number <- NULL
colnames(df_itemlist) <- c("itemList")
write.csv(df_itemlist,"ItemList.csv", row.names = TRUE)

发现关联规则

    我们用R实现关联规则,使用的是arules包读取转换格式数据并进行规则发现。运用read.transactions()读取itemlist数据,使转换为basket数据格式。rm.duplicates 删除重复数据;format= "basket",(row 1:交易ID,row 2:商品条目列表),sep 规定条目分割字符;cols规定交易ID所占的列数为1。我们删除@labels中的引号。   
library(arules)txn <- read.transactions(file = "ItemList.csv",rm.duplicates = TRUE,format = "basket",sep = ",",cols = 1)
txn@itemInfo$labels <- gsub("\"","",txn@itemInfo$labels)
最后,通过设置最小支持度和可信度,实现apriori算法。
basket_rules <- apriori(txn,parameter = list(sup = 0.01,conf = 0.5,target = "rules"))

关联规则可视化

为了实现关联规则的可视化,我们可以运用inspect()函数。(注意前提是不能与tm包冲突,在使用前先解绑tm包)。
if(sessionInfo()['basePkgs']=="tm"|sessionInfo()['otherPkgs']=="tm"){
       detach(package:tm,unload = TRUE)}inspect(basket_rules)

                                             

#转换为数据框查看
da_basket <- as(basket_rules,"data.frame")
View(da_basket)
#查看前五的商品
itemFrequencyPlot(txn, topN = 5)

                                        

也可通过arulesViz包来可视化关联规则图形。具体可以查看下面这片文章:

Association Rule Learning and the Apriori Algorithm<http://www.r-bloggers.com/association-rule-learning-and-the-apriori-algorithm/>

推荐 0
本文由 余文华 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册