关联分析(association analysis)又常称为购物篮分析,是指如果两个或多个事物之间存在一定的关联,那么其中一个事物就能通过其他事物进行预测.它的目的是为了挖掘隐藏在数据间的相互关系。
关联分析最常用在市场销售数据中,顾客的购物篮中如果包含啤酒的同时,还包含了尿布,这就揭示了这两种物品之间的关联。关联分析的挖掘任务可分解为两个步骤:一是发现频繁项集,二是从频繁项集中产生规则。
下面用R语言中的arules扩展包来实现apriori算法,来进行关联分析
library(arules)
#从rattle包中读入数据
dvdtrans <- read.csv(system.file("csv", "dvdtrans.csv",package="rattle"))
数据结构如下,ID表示购物篮编号,Item表示物品。
ID Item
1 1 Sixth Sense
2 1 LOTR1
3 1 Harry Potter1
4 1 Green Mile
5 1 LOTR2
6 2 Gladiator
#将数据转化为合适的格式
data <- as(split(dvdtrans$Item, dvdtrans$ID),"transactions")
#用 apriori命令生成频繁项集,设其支持度为0.5,置信度为0.8
rules <- apriori(data, parameter=list(support=0.5,confidence=0.8))
#用inspect命令提取规则
inspect(rules)
lhs rhs support confidence lift
1 {Patriot} => {Gladiator} 0.6 1.0000000 1.428571
2 {Gladiator} => {Patriot} 0.6 0.8571429 1.428571
3 {Sixth Sense} => {Gladiator} 0.5 0.8333333 1.190476
这说明购买爱国者电影的顾客同时也会购买角斗士 :-)
我也在用这个包来分析电影方面的东西,得到规则之后,我想用图把这些关系表现出来,比如Gladiator,Sixth Sense,Patriot这三个点,然后点的大小代表被借阅的总次数,点的颜色代表电影语言,他们之间的线表示被同时销售的次数,对于他们之间线怎么画一直没想出好的办法,不知你是如何考虑的?
回复删除我也没画过,估计可以用igraph包来画
删除我参照你的igraph探索航线画了一下,是可以的,多谢!
回复删除细节代码啥的能透露一下么?~先谢过~
删除画图时候出现错误
回复删除错误于matrix(mean(range), ncol = ncol(x), nrow = nrow(x), dimnames = dimnames(x)) :
非数值的矩阵范围
这是啥意思……
此评论已被作者删除。
回复删除此评论已被作者删除。
回复删除