收入即学习深度学习

【机器学习与R语言】10- 关联规则

2020-09-10  本文已影响0人  生物信息与育种

1.理解关联规则

1)基本认识

2)Apriori算法

image.png

度量规则兴趣度:支持度和置信度

用Apriori性质建立规则

2.关联规则应用示例

用关联规则确定经常一起购买的食品杂货

1)收集数据

来自某超市经营一个月的购物数据,包含9835次交易,大约每天327次交易。不考虑品牌,将食品杂货数量归为169个类型,探究哪种类型的商品有可能一起购买。

数据下载:

链接: https://pan.baidu.com/s/11xTz8xkJxXTuj0hc5THTZA 提取码: s5pr

2)探索和准备数据

不同于矩阵,事务型数据形式更自由,每一行为案例(一次交易),每条记录包括用逗号隔开的任意数量的产品清单,一至多个。也就是说案例之间的特征可能是不同的。

①为交易数据创建一个稀疏矩阵
传统的数据框一旦增加额外的交易和商品,会变得过大而导致内存不足,因此用稀疏矩阵(购买了该单元格为1,否则为0,169列商品大部分单元为0)在内存中没有存储完整的矩阵,只是存储了由一个商品所占用的单元。

使用arules包中的read.transactions函数创建事务型数据的稀疏矩阵。

## Example: Identifying Frequently-Purchased Groceries ----
## Step 2: Exploring and preparing the data ----

# load the grocery data into a sparse matrix
library(arules)
groceries <- read.transactions("groceries.csv", sep = ",")
summary(groceries)

# look at the first five transactions
inspect(groceries[1:5])

# examine the frequency of items
itemFrequency(groceries[, 1:3])

②可视化商品的支持度(商品频率)

# plot the frequency of items
itemFrequencyPlot(groceries, support = 0.1) #支持度至少10%
itemFrequencyPlot(groceries, topN = 20) #支持度前20的商品
10%
top20

③可视化稀疏矩阵(商品交易)
矩阵中有黑色填充的,说明被购买了。大多数情况下,图形是比较随机的。
对于超大型交易数据集不适合全部展示,这时可以对交易进行随机抽样并可视化。

# a visualization of the sparse matrix for the first five transactions
image(groceries[1:5])

# visualization of a random sample of 100 transactions
image(sample(groceries, 100))
image.png

3)训练模型

apriori函数很简单,但要找到支持度和置信度参数来产生合理数量的关联规则,需要大量的试验和误差评估。参数阈值设置太高,可能没有规则或规则太普通,太低则可能导致规则数量庞大,耗时耗内存。

训练模型函数说明:

#找出关联规则
myrules=arules::apriori(data, 
        parameter = list(
                     support = 0.1,  #最低支持度
                     confidence = 0.8, #最低置信度
                     minlen = 1)) #最低项数

# 检验关联规则
inspect(myrules)
## Step 3: Training a model on the data ----
library(arules)

# default settings result in zero rules learned
apriori(groceries)

# set better support and confidence levels to learn more rules
groceryrules <- apriori(groceries, parameter = list(support =
                          0.006, confidence = 0.25, minlen = 2))
groceryrules
建立的关联规则数

4)评估性能

## Step 4: Evaluating model performance ----
# summary of grocery association rules
summary(groceryrules)

# look at the first three rules
inspect(groceryrules[1:3])
规则结果
查看前三项规则

5)提高模型性能

①对关联规则集合排序
最有用的规则或许是那些具有最高支持度、置信度和提升度的规则,所以对其进行排序来寻找感兴趣的规则。

# sorting grocery rules by lift
inspect(sort(groceryrules, by = "lift")[1:5])
lift排序top5

②提取关联规则的子集
假如只对某种商品和其他商品关联感兴趣,,如浆果berries,则可以提取包含berries的所有规则。

# finding subsets of rules containing any berry items
berryrules <- subset(groceryrules, items %in% "berries")
inspect(berryrules)
image.png

③将关联规则保存到文件或数据框中
转化数据框使用as函数。

# writing the rules to a CSV file
write(groceryrules, file = "groceryrules.csv",
      sep = ",", quote = TRUE, row.names = FALSE)

# converting the rule set to a data frame
groceryrules_df <- as(groceryrules, "data.frame") 
str(groceryrules_df)
image.png
上一篇下一篇

猜你喜欢

热点阅读