R语言数据挖掘(3)——关联分析
一、基本概念
1.支持度(support)
支持度是指在所有项集中{X,Y}出现的可能性,即项集中同时含有X和Y的概率
support(X→Y)=P(X,Y)
通过最小阈值的设定,剔除频率较低的无意义规则。满足
support(Z)>=minsup
的项集Z,称为频繁项集 。
2.置信度(confidence)
置信度表示在关联规则的先决条件X发生的条件下,关联结果Y发生的概率,即在含有X的情况下含有Y的条件概率
confidence(X-Y)=P(Y|X)
置信度衡量了关联规则在“质量”上的可靠性。同样采用最小阈值选出满足confidence(Z)>=mincon的强关联规则
3.提升度(lift)
提升度为Y自身出现的概率P(Y)与含有X的情况下含有Y的条件概率P(Y|X)之比。其值越大(>1),表面X对Y的提升成都
二、R中的实现
1.Packages
arules:用于关联规则的数字化生成,提供Apropri和Eclat两种快速挖掘频繁项集和关联规则的实现函数
2.apriori函数
Apriori算法
Apriori原理是说如果某个项集是频繁的,那么它的所有子集势必也是频繁的。这个原理从表面上看没什么大用,但是反过来,如果一个项集是非频繁项集,那么它所对应的超集就全都是非频繁项集。
Apriori算法的两个输入参数分别是最小支持度和数据集。该算法首先生成所有单个物品的项集列表,遍历之后去掉不满足最小支持度要求的项集;接下来对剩下的集合进行组合生成包含两个元素的项集,去掉不满足最小支持度的项集;重复该过程直到去掉所有不满足最小支持度的项集。
对应的,采用可信度来量化关联规则。如果某条规则不满足最小可信度要求,那么该规则的所有子集也就不满足最小可信度要求,据此我们可以减少需要测试的规则数目,简化问题。
寻找关联规则的思想是:从一个频繁项集开始,创建一个规则列表,首先将规则的右边限定为一个元素,对这些规则进行测试,接下来合并剩下的规则来创建一个新的规则列表,规则的右边限定为两个元素,就这样一步一步实现。
apriori(data,parameter=NULL,appearance=NULL,control=NULL)
parameter:设置支持度,置信度,每个项集所含项数的最大值和最小值,输出结果
默认support=0.1,confidence=0.8,maxlen=10,minlen=1,target=“rules”/"frequent itemsets"
3.Elact函数
Eclat算法见笔记。
eclat(data,parameter=NULL,cotrol=NULL)
parameter中target不能设置为rules,即eclat不能生成关联规则,同时maxlen默认为5.
三、案例应用
1.初探
rules0 = apriori(Groceries,parameter = list(support=0.001,confidence = 0.5))
> rules0
> inspect(rules0[1:10])
(lhs:先决条件X;rhs:关联结果Y)
首先,apriori()的结果是rule型数据。通过inspect()函数可以看到support,confidence,lift,count四个指标。而结果的排序和这几个数值大小没有明显关系。
接下来对生成的规则进行强度控制。常用方法是通过提高支持度和/或置信度来实现。通过apriori()函数重新计算更高支持度和置信度下的规则。
2.若通过单一的支持度或者置信度或者提升度控制,可以使用
rules.sorted_sup = sort(rules0, by = "support") 即通过排序进行控制。
通过提升度筛选一般是最可靠的方法。
五、关联关系可视化
关联关系可视化通过arulesViz包进行
plot(rules0,measure = c("support","confidence"),shading="lift")
plot(rules,interactive = T)
plot(rules0,measure = c("support","confidence"),shading="order") Two - key 图制作。颜色深浅表示商品数量
plot(rules0,method="grouped")
plot(rules0,method = "paracord")
plot(rules0,method = "graph")
规则与规则往往容易变得混乱,因此是比较可行的是使用非常小的规则集。
