R语言实现
我们对UCI机器学习库上下载的美国众议院议员投票记录数据,进行关联分析。在R中,可以直接调用arules包中的apriori()函数训练模型。
library(arules)
library(arulesViz)
data<-read.csv("D\\voting-records.csv", header=F)
data_rules <- apriori(data = data, parameter = list(support = 0.3, confidence = 0.9, minlen = 2))
summary(data_rules)
性能评估结果如下:
其中rule length distribution 表示规则长度分布,如前件+后件共包含两项的规则有39条。
%inspect(sort(data_rules, by="support")[1:10])
%与V15=crime:n相关的规则
crime_n<-subset(data_rules, items %in% "V15=crime:n")
inspect(sort(crime_n, by="support")[1:10])
%in%表示精确匹配。最终得到结果为:
lift为提升度,表示前件存在后件发生的概率,是前件不存在但后件发生的倍数。比如第一条规则,{V15=crime:n} => {V1=democrat} 的提升度为1.6,表示{V15=crime:n}发生后 {V1=democrat}也发生,是{V15=crime:n} 不发生但{V1=democrat}发生的1.6倍。
plot(data_rules, control=list(jitter=2), shading = "lift")
plot(sort(data_rules, by="support")[1:10], method="grouped")
plot(sort(crime_n, by="support")[1:10], measure="confidence", method="graph", control=list(type="items"), shading = "lift")