【R语言 数据挖掘】R语言如何做关联规则?
一、前言提到数据挖掘,我们第一反应就是之前听到的啤酒和尿不湿的故事,该故事就是典型的数据挖掘中的关联规则。购物篮分析区别于传统的线性回归的主要区别为,关联分析针对离散数据;下面我们利用R语言的arules包及Apriori算法对商品交易数据进行关联规则挖掘,二、常见关联规则:关联规则:牛奶=>鸡蛋【支持度=2%,置信度=60%】支持度:分析中的全部事务的2%同时购买了牛奶和鸡蛋,需设定域值,
一、前言
提到数据挖掘,我们第一反应就是之前听到的啤酒和尿不湿的故事,该故事就是典型的数据挖掘中的关联规则。购物篮分析区别于传统的线性回归的主要区别为,关联分析针对离散数据;下面我们利用R语言的arules包及Apriori算法对商品交易数据进行关联规则挖掘,
二、常见关联规则:
- 关联规则:牛奶=>鸡蛋【支持度=2%,置信度=60%】
- 支持度:分析中的全部事务的2%同时购买了牛奶和鸡蛋,需设定域值,来限定规则的产生;
- 置信度:购买了牛奶的筒子有60%也购买了鸡蛋,需设定域值,来限定规则的产生;
- 最小支持度阈值和最小置信度阈值:由挖掘者或领域专家设定。
三、与关联分析相关的专业术语包括:
- 项集:项(商品)的集合
- k-项集:k个项组成的项集
- 频繁项集:满足最小支持度的项集,频繁k-项集一般记为Lk
- 强关联规则:满足最小支持度阈值和最小置信度阈值的规则
四、算法步骤(两步法)
- 第一步先找出所有的频繁项集;
- 第二步再由频繁项集产生强关联规则
五、R语言实现过程
######以arules包中的数据集Groceries为例。
#####1、加载arules包,获取数据集。
library(arules)
data(Groceries)
#####2、eclat算法求频繁项集。
freq_sets <- eclat(Groceries,parameter=list(support=0.05,maxlen=5))#求频集
inspect(freq_sets[1:10])#查看频繁项集的前十项
inspect(sort(freq_sets,by="support")[1:10]) #根据支持度对求得的频繁项集排序并查看,结果如图。
结果解读:第一个项集表示,如果有100个人去买东西,那么可能有25个人会买“whole milk”,可能有19个人会买“other vegetables”,等等。
#####3、apriori算法求关联规则。
rules=apriori(Groceries,parameter=list(support=0.01,confidence=0.3))
inspect(sort(rules,by="support")[1:10])#查看前十条关联规则
结果解读:第一条规则,support=0.0748表示“other vegetables”与“whole milk”同时购买的概率为0.0748;confidence=0.3868表示购买了“other vegetables”的同时,还购买“whole milk”的概率为0.3868,lift=1.51>1.00表明购买“other vegetables”对于提升购买“whole milk”的作用度为1.51.
注:lift是判断关联规则是否可靠的一个指标,lift=1说明两个条件没有任何关联;lift<1说明两个条件是相斥的;一般在数据挖掘中选择当提升度大于3时,才承认挖掘出的关联规则是有价值的。
#####4、根据需求条件求关联规则子集。
x=subset(rules,subset=rhs%in%"whole milk"&lift>=1.2)#求rhs为“whole milk”且作用度大于1.2的规则。
inspect(sort(x,by="support")[1:8])
#####5、关联规则可视化
Library(arulesViz,quietly=TRUE)
plot(rules,method="Graph")
更多推荐
所有评论(0)