先给大家介绍一个啤酒与尿布的故事。沃尔玛在观察消费者购物行为时发现,男性顾客在购买婴儿尿片时,常常会顺便搭配几瓶啤酒,于是尝试推出将啤酒和尿布摆在一起的促销手段,结果尿布和啤酒的销量都大幅增加。

做着类似业务的医药电商受到启发,是否也可以从自己的历史订单中提取到类似于“啤酒-尿布”的频繁模式,进行联合销售,并找到对应的“奶爸群体”,实现个性化推荐呢?

今天我们来解决第一个问题,利用apriori算法对订单数据做关联分析,找到其中类似于“啤酒-尿布”的频繁模式。

依然沿用之前做用户分析的订单数据,仅保留订单号和商品名,25万+行,涉及16379条订单和9692个商品,仅凭观察是很难发现关联模式的。
基于购物篮分析的关联销售
在R里进行关联分析。

  • 简单描述
    如果我们想知道那些在订单中出现频率比较高的商品,比如每20人下单,至少1人会买的商品,就有这7种,这些most popular goods,也是我们在后面关联分析的重要关注对象。

基于购物篮分析的关联销售

  • 关联规则挖掘
    参数需要自己设计。support:组合占整体的比重,值越大符合条件的规则越少;confidence:置信水平:衡量结果的可靠性,值越大条件越宽松规则数越少;minlen:规则最小长度,即规则所含商品数,啤酒-尿布就是长度为2的规则。

rules1 <- apriori(goodsdata2,
parameter = list(support = 0.004, confidence = 0.2, minlen = 2))
summary(rules1)
inspect(rules1)
rules1.sort = sort ( rules1, by=“support” )

  • 结果分析

    参数按上面取值可得到58条规则,按支持度排序后如图,容易发现:
    买了感康 复方氨酚烷胺片的,很可能会顺带买一批999 感冒灵颗粒;
    江中 健胃消食片的成人版和小儿版往往被同时购买。
    对于只买过=>左边商品的客户,就可考虑把=>右边的商品推荐给他。
    基于购物篮分析的关联销售
    或者画个关联图,LHS所示的商品,购买对应RHS的可能性,用红点的大小表示,关系最为显著的江中健胃消食片成人版、小儿版和999感冒灵,不妨考虑打包联合销售。
    基于购物篮分析的关联销售
    参考代码:

l#转化为特定格式
goodsdata2 <- read.transactions(‘goods.csv’,
sep=",",
format=“single”,
cols=c(2,3))
#出现概率在5%以上的商品
itemFrequencyPlot(goodsdata2, support=0.05)
#出现概率top10
itemFrequencyPlot(goodsdata2, topN=10, horiz=T)
#订单商品的分布情况,效果很差
image(sample(goodsdata2,100))
#关联规则挖掘
rules1 <- apriori(goodsdata2,
parameter = list(support = 0.004, confidence = 0.2, minlen = 2))
summary(rules1)
inspect(rules1)
#规则排序
rules1.sort = sort ( rules1, by=“support” )
#搜索含特定商品的规则
gk.rules <- subset(rules1, items %in% c(“感康 复方氨酚烷胺片”))
gk.rhs.rules <- subset(rules1, rhs %in% c(“感康 复方氨酚烷胺片”))
#导出规则
rules.df <- as(rules1.sort,“data.frame”)
write.csv(rules.df,“rules.csv”)
#规则可视化
library(grid);library(arulesViz)
plot(rules1,
control=list(jitter=2),
shading = “lift”) #三个度
plot(rules1, method=“grouped”) #商品关联关系

相关文章: