关联分析(购物篮)与R语言

世界上的万事万物都有着千丝万缕的联系,我们要善于发现这种关联

关联分析要解决的主要问题是:一群用户购买了很多产品之后,哪些产品同时购买的几率比较高?买了A产品的同时买哪个产品的几率比较高?可能是由于最初关联分析主要是在超市应用比较广泛,所以又叫“购物篮分析”,英文简称为MBA,当然此MBA非彼MBA,意为Market Basket Analysis。

(1)普通问题:如果在研究的问题中,一个用户购买的所有产品假定是同时一次性购买的,分析的重点就是所有用户购买的产品之间关联性;
(2)序列问题:如果假定一个用户购买的产品的时间是不同的,而且分析时需要突出时间先后上的关联,如先买了什么,然后后买什么?那么这类问题称之为序列问题,它是关联问题的一种特殊情况。从某种意义上来说,序列问题也可以按照关联问题来操作

关联分析有三个非常重要的概念,那就是“三度”:支持度、可信度、提升度。

假设有10000个人购买了产品,其中购买A产品的人是1000个,购买B产品的人是2000个,AB同时购买的人是800个。

支持度指的是关联的产品(假定A产品和B产品关联)同时购买的人数占总人数的比例,即800/10000=8%,有8%的用户同时购买了A和B两个产品;

可信度指的是在购买了一个产品之后购买另外一个产品的可能性,例如购买了A产品之后购买B产品的可信度=800/1000=80%,即80%的用户在购买了A产品之后会购买B产品;

提升度就是在购买A产品这个条件下购买B产品的可能性与没有这个条件下购买B产品的可能性之比,没有任何条件下购买B产品可能性=2000/10000=20%,那么提升度=80%/20%=4。


很多知识性的内容由于格式的问题或者自己的ppt太麻烦,没往里添加,加一些R的代码吧。基于啊apriori 和eclat算法


library(arules)

data(Groceries)

library(arulesViz)

-------------------------------------------------------------------------
apriori算法案例:简易应用之筛选购全脂牛奶 的关联分析情况

rules = apriori(Groceries,parameter = list(support = 0.01,confidence = 0.2))

inspect(sort(rules,by="support")[1:6]) #按支持度查看前6条规则
inspect(sort(rules,by="confidence")[1:6]) #按置信度查看前6条规则
sub.rules=subset(rules, subset = rhs %in% "whole milk" &lift > 1.2) #也可以用subset做规则的筛选,取"右手边"含有whole milk且lift大于1.2的规则

itemFrequencyPlot(Groceries,support = 0.05,cex.names =0.8) #数据画频繁项的图

plot(rules, shading="order", control=list(main = "Two-key plot"))#见chart.1
plot(rules, method="grouped")#见chart.2
plot(rules, method="graph")#见chart.3


----------------------------------------------------------------

eclat算法案例:简易应用之筛选购全脂牛奶 的关联分析情况


fsets <- eclat(Groceries, parameter = list(support = 0.05),control = list(verbose=FALSE)) #提取频繁项集

itemFrequencyPlot(Groceries,support = 0.05,cex.names =0.8) #数据画频繁项的图

itemsetList <- LIST(items(fsets), decode = FALSE)

singleItems <- fsets[size(items(fsets)) == 1] #筛选单独项集

singleSupport <- quality(singleItems)$support #单独项集的支持度

names(singleSupport) <- unlist(LIST(items(singleItems), decode = FALSE)) #转换为列表格式的数据

allConfidence <- quality(fsets)$support / sapply(itemsetList, function(x)max(singleSupport[as.character(x)]))

quality(fsets) <- cbind(quality(fsets), allConfidence)

fsetsmilk <- subset(fsets, subset = items %pin% "whole milk")

inspect(sort(fsetsmilk[size(fsetsmilk)>1], by = "allConfidence")[1:3])

  

http://soledede.com/

 

大家可以加我个人微信号:scccdgf

 

 

或者关注soledede的微信公众号:soledede
微信公众号:

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值