您的位置:首页 > 其它

R语言:关联规则(apriori)

2015-06-21 22:17 381 查看
本文数据是来自datacastle网站上的一道竞赛题,是基于关联规则进行商品推荐之类的题目

数据集中还包含了对商品的评分和购买时间两个额外变量,下面这篇文章并没有使用到这一个变量,

特别是对商品的评分这个变量,包含了很多有用的信息。

所以说,这篇文章还是一个半成品,有空会补上。

#读入数据
data = read.csv("数据.csv",stringsAsFactors=F)
data = data[1:57528,]  #取训练集

write.table(data,'shopping.txt')  #导出成txt,为导入成transactions做准备
#导出后,在txt文件中,进行替换查找,格式如下:<pre name="code" class="plain">分别是行名,id,商品,评分,购买时间



1 1 1 5 874965758
2 1 3 4 878542960
3 1 4 3 876893119
4 1 5 3 889751712
5 1 7 4 875071561
6 1 9 5 878543541
7 1 13 5 875071805
8 1 15 5 875071608
9 1 16 5 878543541
10 1 18 4 887432020
11 1 19 5 875071515


library(arules)
#读入成transactions数据格式
shopping = read.transactions('shopping.txt',format='single',cols=c(2,3))
#可以通过dim(shopping)  summary(shopping)来查看数据集的基本情况
#size()查看每个交易的商品数
basketSize = size(shopping)
#查看每个item支持度
itemFreq = sort(itemFrequency(shopping),decreasing=T) #将支持度排序
itemFreq[1:5] #查看前五个item的支持度
sum(itemFreq)#本质上代表"平均一个transaction购买的item个数"

#根据需要,筛选购买两件以上的交易
shopping[size(shopping) > 1]

#运用apriori函数生成规则
myrules = apriori(shopping,parameter=list(support=0.1,confidence=0.25,minlen=2))
#使用summary函数查看规则的汇总信息
summary(myrules)
inspect(myrules[1:10])#查看具体的规则
具体的规则如下:
> inspect(myrules[1:10])#查看具体的规则

lhs rhs support confidence lift

1 {118} => {121} 0.1102863 0.6797386 2.693250

2 {121} => {118} 0.1102863 0.4369748 2.693250

3 {118} => {181} 0.1039236 0.6405229 1.755852

4 {181} => {118} 0.1039236 0.2848837 1.755852

5 {275} => {50} 0.1113468 0.5833333 1.432509

6 {50} => {275} 0.1113468 0.2734375 1.432509

#按指标对规则进行排序
sort(myrules,by='lift')
#搜索规则
subset(myrules,items %in% "12")
subset(myrules,lhs %in% "12")#前项含“12”的规则
subset(myrules,rhs %in% "12")#后项含“12”的规则

# %in%是精确匹配
# %pin%是部分匹配,也就是说只要item like '%A%' or item like '%B%'
# %ain%是完全匹配,也就是说itemset has ’A' and itemset has ‘B'

#保存挖掘结果
#write是arules包函数
write(myrules,'myrules.csv',sep=",", quote=TRUE, row.names=FALSE)
write(myrules,'myrules.txt',sep=",", quote=TRUE, row.names=FALSE)#还是csv文件清晰好看
#或者转换成data.frame,再做进一步处理
myrules_df = as(myrules,'data.frame')
规则如下:

> head(myrules_df)
rules   support confidence     lift
1 {118} => {121} 0.1102863  0.6797386 2.693250
2 {121} => {118} 0.1102863  0.4369748 2.693250
3 {118} => {181} 0.1039236  0.6405229 1.755852
4 {181} => {118} 0.1039236  0.2848837 1.755852
5  {275} => {50} 0.1113468  0.5833333 1.432509
6  {50} => {275} 0.1113468  0.2734375 1.432509


更详尽的知识可以参考http://blog.csdn.net/gjwang1983/article/details/45015203
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: