R语言使用Apriori规则完成关联挖掘
说明关联挖掘常被用于发现隐藏在事务数据集间的一些有意义的关联,算法首先找到所有频繁项集,然后从这些频繁项集中生成强规则。Apriori是最为著名的关联规则挖掘技术。该算法先找到频繁个体项集,然后再通过广度优先搜索策略生成更大的频繁项集,直至算法最后再也找不到新的频繁集而结束。 操作载入Groceries,在arules包中使用Apriori算法进行关联分析。 data("Groceries") summary("Groceries") Length Class Mode 1 character character
调用itemFrequencyPlot函数检验项集的相关项集频繁度: itemFrequencyPlot(Groceries,support = 0.1,cex.names = 0.8,topN = 5)
使用apriori函数找到支持度超过0.01,置信度在0.5以上的关联规 rules = apriori(Groceries,parameter = list(supp = 0.001,conf = 0.5,target = "rules"))
summary(rules)
set of 5668 rules
rule length distribution (lhs + rhs):sizes
2 3 4 5 6
11 1461 3211 939 46
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.00 3.00 4.00 3.92 4.00 6.00
summary of quality measures:
support confidence lift
Min. :0.001017 Min. :0.5000 Min. : 1.957
1st Qu.:0.001118 1st Qu.:0.5455 1st Qu.: 2.464
Median :0.001322 Median :0.6000 Median : 2.899
Mean :0.001668 Mean :0.6250 Mean : 3.262
3rd Qu.:0.001729 3rd Qu.:0.6842 3rd Qu.: 3.691
Max. :0.022267 Max. :1.0000 Max. :18.996
mining info:
data ntransactions support confidence
Groceries 9835 0.001 0.5
查看前面一部分规则: inspect(head(rules))
lhs rhs support confidence lift
[1] {honey} => {whole milk} 0.001118454 0.7333333 2.870009
[2] {tidbits} => {rolls/buns} 0.001220132 0.5217391 2.836542
[3] {cocoa drinks} => {whole milk} 0.001321810 0.5909091 2.312611
[4] {pudding powder} => {whole milk} 0.001321810 0.5652174 2.212062
[5] {cooking chocolate} => {whole milk} 0.001321810 0.5200000 2.035097
[6] {cereals} => {whole milk} 0.003660397 0.6428571 2.515917
根据置信度对规则进行排序并查看前面的部分规则: rules = sort(rules,by = "confidence",decreasing = TRUE)
inspect(head(rules))
lhs rhs support confidence lift
[1] {rice,sugar} => {whole milk} 0.001220132 1 3.913649
[2] {canned fish,hygiene articles} => {whole milk} 0.001118454 1 3.913649
[3] {root vegetables,butter,rice} => {whole milk} 0.001016777 1 3.913649
[4] {root vegetables,whipped/sour cream,flour} => {whole milk} 0.001728521 1 3.913649
[5] {butter,soft cheese,domestic eggs} => {whole milk} 0.001016777 1 3.913649
[6] {citrus fruit,root vegetables,soft cheese} => {other vegetables} 0.001016777 1 5.168156
原理关联规则挖掘的目的是找出事务数据库中项集间的关联。典型的,关联规则挖掘的过程包括找到大于最小支持度的项集,然后基于频繁项集生成置信度大于最小置信度的强规则(例如milk =>bread,顾客购买了牛奶后很可能再同时买面包)。一个关联规则可以形式化定义为 X => Y,其中X,Y都是无关项集。我们可以通过支持度和置信度这两个值来评估规则的强弱。支持度和置信度这两个值来评估规则的强弱。支持度表示了某个某个规则在数据集中出现的频率,而置信度则代表项集X与Y同时出现在个事务中的概率。 由于支持度与置信度仅对判断规则强弱有效,有时一些高置信度与高支持度的规则可能是冗余的,因此,我们使用第三个指标——提升度,来评估规则的质量(级别)。从定义上看,提升度代表了项集X与项集Y随机共现关系上的规则强度。 Apriori是最广为人知的关联规则挖掘算法,它依靠逐层广度优先策略来生成候选项集,算法首先逐层的找到所有的频繁项集(项集支持度大于给定阈值),例如,先找到1-频繁项集,然后基于1-频繁项集找到2-频繁项集,依次递归,基于k-频繁项集生成新的k+1-频繁项集,直到找不到新的繁荣项集。 最后,通过繁荣项集产生关联规则。 Groceries数据集,包括了9835事务,被分成169个类别。还有例如最频繁项集、项集分布等信息,也可以使用itemFrequencyPlot函数来绘制支持度超过0.1的五个最步频繁项。 我们利用算法找到了支持度大于0.001,置信度大于0.5的规则,并使用summary函数来检查这些规则的详细信息,从输出的结果可知,使用Apriori算法获得了5668个符合条件的规则。我们还进一步获取了有关规则长度的分布情况,质量评估信息,挖掘结果等。 从质量评估结果可以得到三类指标,分别是支持度,置信度,提升度。其中,支持度代表了特定项集在事务数据库中所占的比例,置信度是规则的正确率,而提升度代表了响应目标关联规则与平均响应的比值。 可以使用inspect函数来查看部分规则,5668个规则中的前6个,最后我们可以对些规则进行依据置信度大小排序,并将置信度最高的那些规则列表显示出来。我们发现糖与全脂牛奶的关联度最强,支持度为0.001220132.置信度为1,提升度达到3.913649。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |