R语言关联规则深入详解
在用R语言做关联规则分析之前,我们先了解下关联规则的相关定义和解释。
关联规则的用途是从数据背后发现事物之间可能存在的关联或者联系,是无监督的机器学习方法,用于知识发现,而非预测。
关联规则挖掘过程主要包含两个阶段:第一阶段从资料集合中找出所有的高频项目组,第二阶段再由这些高频项目组中产生关联规则。
接下来,我们了解下关联规则的两个主要参数:支持度和置信度。
用简化的方式来理解这两个指标,支持度是两个关联物品同时出现的概率,而置信度是当一物品出现,则另一个物品也出现的概率。
假如有一条规则:牛肉—>鸡肉,那么同时购买牛肉和鸡肉的顾客比例是3/7,而购买牛肉的顾客当中也购买了鸡肉的顾客比例是3/4。这两个比例参数是很重要的衡量指标,它们在关联规则中称作支持度(support)和置信度(confidence)。对于规则:牛肉—>鸡肉,它的支持度为3/7,表示在所有顾客当中有3/7同时购买牛肉和鸡肉,其反应了同时购买牛肉和鸡肉的顾客在所有顾客当中的覆盖范围;它的置信度为3/4,表示在买了牛肉的顾客当中有3/4的人买了鸡肉,其反应了可预测的程度,即顾客买了牛肉的话有多大可能性买鸡肉。
关联规则算法中最常用是Apriori算法。
下面我们用R来做个关联规则的算法实例。在R中有一个arules包,我们可以用数据集Groceries作为实例。
library(arules) data(Groceries)#加载数据集 inspect(Groceries)#查看数据内容
做完基础动作后,我们就需要求频繁项集,即满足最小支持度的关联关系数据子集数量。
freq=eclat(Groceries,parameter=list(support=0.05,maxlen=10)) inspect(freq)#查看频繁项集情况
'itemssupport
从结果来看,总共有31个频繁项集,其中有很多只有一个条目的内容,最小支持度可能太大了。
接下来我们选择小一点的支持度,利用Apriori函数建立模型
model<-apriori(Groceries,parameter=list(support=0.01,confidence=0.5)) summary(model)
接下来查看,具体的规则内容
inspect(model)
[2]{othervegetables,butter}=>{wholemilk}0.01148958
[3]{othervegetables,domesticeggs}=>{wholemilk}0.01230300
[4]{yogurt,whipped/sourcream}=>{wholemilk}0.01087951
[5]{othervegetables,whipped/sourcream}=>{wholemilk}0.01464159
[6]{pipfruit,othervegetables}=>{wholemilk}0.01352313
[7]{citrusfruit,rootvegetables}=>{othervegetables}0.01037112
[8]{tropicalfruit,rootvegetables}=>{othervegetables}0.01230300
[9]{tropicalfruit,rootvegetables}=>{wholemilk}0.01199797
[10]{tropicalfruit,yogurt}=>{wholemilk}0.01514997
[11]{rootvegetables,yogurt}=>{othervegetables}0.01291307
[12]{rootvegetables,yogurt}=>{wholemilk}0.01453991
[13]{rootvegetables,rolls/buns}=>{othervegetables}0.01220132
[14]{rootvegetables,rolls/buns}=>{wholemilk}0.01270971
[15]{othervegetables,yogurt}=>{wholemilk}0.02226741
confidencelift
[1]0.58235292.279125
[2]0.57360412.244885
[3]0.55251142.162336
[4]0.52450982.052747
[5]0.50704231.984385
[6]0.51750972.025351
[7]0.58620693.029608
[8]0.58454113.020999
[9]0.57004832.230969
[10]0.51736112.024770
[11]0.50000002.584078
[12]0.56299212.203354
[13]0.50209212.594890
[14]0.52301262.046888
[15]0.51288062.007235>
我们可以按照支持度对各关联规则进行排名后进行查看
inspect(sort(model,by="support")[1:10])
[2]{tropicalfruit,yogurt}=>{wholemilk}0.01514997
[3]{othervegetables,whipped/sourcream}=>{wholemilk}0.01464159
[4]{rootvegetables,yogurt}=>{wholemilk}0.01453991
[5]{pipfruit,othervegetables}=>{wholemilk}0.01352313
[6]{rootvegetables,yogurt}=>{othervegetables}0.01291307
[7]{rootvegetables,rolls/buns}=>{wholemilk}0.01270971
[8]{othervegetables,domesticeggs}=>{wholemilk}0.01230300
[9]{tropicalfruit,rootvegetables}=>{othervegetables}0.01230300
[10]{rootvegetables,rolls/buns}=>{othervegetables}0.01220132
confidencelift
[1]0.51288062.007235
[2]0.51736112.024770
[3]0.50704231.984385
[4]0.56299212.203354
[5]0.51750972.025351
[6]0.50000002.584078
[7]0.52301262.046888
[8]0.55251142.162336
[9]0.58454113.020999
[10]0.50209212.594890>
可以看到结果中,当购物篮中有othervegetables和yogurt两个物品时,也有wholemilk的支持度最好,达到0.02。
具体的关联规则情况我们还要根据业务的实际情况进行筛选,也可以在建立关联规则模型的过程中去掉那些明显无用的规则。
比如我们要求结果中,被关联项是wholemile同时lift值要大于2.2
inspect(subset(model,subset=rhs%in%"wholemilk"&lift>=2.2))
[2]{othervegetables,butter}=>{wholemilk}0.011489580.57360412.244885
[3]{tropicalfruit,rootvegetables}=>{wholemilk}0.011997970.57004832.230969
[4]{rootvegetables,yogurt}=>{wholemilk}0.014539910.56299212.203354>
再看结果中,只剩下4个lift值较高的关联规则。
lift=P(L,R)/(P(L)P(R))是一个类似相关系数的指标。lift=1时表示L和R独立。这个数越大,越表明L和R存在在一个购物篮中不是偶然现象。
相关的筛选规则的符合解释:
%in%是精确匹配
%pin%是部分匹配,也就是说只要itemlike'%A%'oritemlike'%B%'
%ain%是完全匹配,也就是说itemsethas'A'anditemsethas‘B'
同时可以通过条件运算符(&,|,!)添加support,confidence,lift的过滤条件。
到此这篇关于R语言关联规则深入详解的文章就介绍到这了,更多相关R语言关联规则内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。