关联规则R语言实现

文章参考资料:

xccd:肖凯大牛的博文
《Rdatamining》
《R IN A NUTSHELL》


注:如有疑惑的问题,参阅下文的预备知识!


关联分析的挖掘任务可分解为两个步骤:一是发现频繁项集,二是从频繁项集中产生规则。

############################ 关联分析 案例实践 ############################ 

背景假定:
在电影商店中,一个客户在一次购物中(也可不同时间段多次购买)购买了很多不同种类,品牌的电影盘。我们要从中找到有用的信息,提升商店的销售。

问题提出:
1、那么针对个体客户来说,他们购买的偏好是什么? 即购买的A商品,可能会购买那种潜在商品(影片)
2、在客户中,有没有明显的用户群细分方式?

使用数据:
rattle包中,csv目录下的 dvdtrans.csv 文件

数据描述:
该原始数据仅仅包含了两个字段(ID, Item) 用户ID,商品名称。


##### code start ##### 
# 加载包
library(arules)

# 加载数据
dvdtrans <- read.csv(system.file("csv", "dvdtrans.csv", package="rattle") )  # 函数system.file()见预备知识

# 将数据转换为arules关联规则方法apriori 可以处理的数据形式.交易数据
data <- as(split(dvdtrans$Item, dvdtrans$ID), "transactions")

# 查看一下数据
attributes(data)

# 使用apriori函数生成关联规则
rules <- apriori(data, paramter= list(support=0.6, conf=0.8))

# 使用inspect函数提取规则
inspect(rules)


##### code end ##### 
上面的示例只是给一个感觉。继续…

##### ##### ##### ##### nutshell

##################################################################

使用数据:Titanic

# look for data

str(Titanic)

# transform table into data frame

df <- as.data.frame(Titanic)


head(df)

> head(df)

  Class    Sex  AgeSurvivedFreq

1  1st   MaleChild      No    0

2  2nd   MaleChild      No    0

3  3rd   MaleChild      No  35

4  Crew  MaleChild      No    0


titanic.raw <- NULL

如果频率字段大于0,将该行记录按列追加到变量中,Freq=0,当然就不追加

for(iin1:4) {

titanic.raw <- cbind(titanic.raw, rep(as.character(df[,i]), df$Freq))

}

35行都是一样的

]]]]> titanic.raw[1:36,]

      [,1]  [,2]    [,3]    [,4]

 [1,]"3rd""Male"  "Child""No"

 [2,]"3rd""Male"  "Child""No"

 [3,]"3rd""Male"  "Child""No"

 [4,]"3rd""Male"  "Child""No"

 ...

[35,]"3rd""Male"  "Child""No"

[36,]"3rd""Female""Child""No"


# transform to data frame

titanic.raw <- as.data.frame(titanic.raw)


> head(titanic.raw)

   V1  V2    V3V4

1 3rd MaleChildNo

2 3rd MaleChildNo

3 3rd MaleChildNo

4 3rd MaleChildNo

5 3rd MaleChildNo

6 3rd MaleChildNo

生成数据框后添加属性名称

names(titanic.raw) <- names(df)[1:4];dim(titanic.raw);


summary(titanic.raw)

转换后:每一行代表了一个人,可以用于关联规则。转换前是什么类型的数据? (按照class、sex、年龄汇总的生存人数的数据)



With the function, the default settings are:1) supp=0.1, which is the minimum support of rules;2) conf=0.8, which is the minimum confidence of rules; and 3) maxlen=10, which is the maximum length of rules.

library(arules)

rules <- apriori(titanic.raw# apriori可以直接传递非transactions类型的对象,内部自动转换


rules 根据最小的 (supp=0.1,conf=0.8),返回的规则的最多个数 10个


summary(rules);

inspect(rules);

quality(rules) <- quality(rules)

inspect( rules )

翻译:
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值