四时宝库

程序员的知识宝库

R语言数据挖掘实践——关联分析的常用函数

arules和arulesViz是R语言中两个专用于关联分析的软件包。其中arules用于关联规则的数字化生成,提供Apriori和Eclat这两种快速挖掘频繁项集和关联规则算法的实现函数;而arulesViz包作为arules的扩展包,提供了集中实用而新颖的关联规则可视化技术,使得关联分析从算法运行到结果呈现一体化。在此之前,请先安装这两个软件包。

核心函数

Apriori是最经典的关联分析挖掘算法,原理清晰且实现方便,可以说是学习关联分析的入门算法,但效率低;而Eclat算法则在运行效率方面有所提升。

apriori函数

apriori()函数用于实现Apriori算法,来源于arules软件包,其使用格式为:

apriori(data, parameter=NULL, appearance = NULL, control = NULL)

当放置相应的数据集,并设置各个参数值(支持度和置信度的阈值)后,运行该函数即可生成满足需求的频繁项集或关联规则等结果。

parameter参数可以对支持度(support)、置信度(confidence)、每个项集所含项数的最大值/最小值(maxlen/minlen),以及输出结果(target)等重要参数进行设置。如果没有对其进行设置,函数将对各参数取默认值:support=0.1, confidence=0.8, maxlen=10, minlen=1, target="rules"/"frequent itemsets"(输出关联规则/频繁项集)。

appearance参数可以对先决条件X(lhs)和关联结果(rhs)中具体包含哪些项进行限制,如lhs=beer,将仅输出lhs中含有“啤酒”这一项的关联规则,在默认情况下,所有项都将无限制出现。

control参数则用来控制函数性能,如可以设定对项集进行升序(sort=1)还是降序(sort=-1)排序,是否向使用者报告进程(verbose=TRUE/FALSE)等。

eclat函数

Eclat算法的核心函数为eclat(),其格式为:

eclat(data, parameter=NULL, control=NULL)

与apriori()函数相比,eclat()不含有appearance参数,其中parameter与control的作用与apriori()函数中的参数作用基本相同,但需要注意的是,parameter中的输出结果target一项不可设置为rules,即通过eclat()函数无法生成关联规则,并且maxlen的默认值为5。

数据集

我们使用arules包中的Groceries数据集进行算法演示,该数据集时某一食品杂货店一个月的真实交易数据,我们先对其进行一个简单的了解。

> library(arules)

> data("Groceries")

> summary(Groceries)

transactions as itemMatrix in sparse format with

9835 rows (elements/itemsets/transactions) and

169 columns (items) and a density of 0.02609146

most frequent items:

whole milk other vegetables rolls/buns soda yogurt (Other)

2513 1903 1809 1715 1372 34055

element (itemset/transaction) length distribution:

sizes

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

2159 1643 1299 1005 855 645 545 438 350 246 182 117 78 77 55 46 29 14 14 9 11 4

23 24 26 27 28 29 32

6 1 1 1 1 3 1

Min. 1st Qu. Median Mean 3rd Qu. Max.

1.000 2.000 3.000 4.409 6.000 32.000

includes extended item information - examples:

labels level2 level1

1 frankfurter sausage meat and sausage

2 sausage sausage meat and sausage

3 liver loaf sausage meat and sausage

获取数据后,我们来看Groceries数据集的基本信息,它共包含9835条交易以及169个项,也就是我们通常所说的商品;并且全脂牛奶(whole milk)是最受欢迎的商品,之后依次为蔬菜(other vegetables)、面包卷(rolls/buns)等。

为了对将要使用的数据集有直观的把握,现将Groceries数据集的前10条交易信息展示出来:

> inspect(Groceries[1:10])

items

[1] {citrus fruit,semi-finished bread,margarine,ready soups}

[2] {tropical fruit,yogurt,coffee}

[3] {whole milk}

[4] {pip fruit,yogurt,cream cheese ,meat spreads}

[5] {other vegetables,whole milk,condensed milk,long life bakery product}

[6] {whole milk,butter,yogurt,rice,abrasive cleaner}

[7] {rolls/buns}

[8] {other vegetables,UHT-milk,rolls/buns,bottled beer,liquor (appetizer)}

[9] {pot plants}

[10] {whole milk,cereals}

其中每一条数据及代表一位消费者购物篮中的商品类别,如:第一位消费者购买了柑橘(citrus fruit)、半成品面包(semi-finished bread)、黄油(margarine)以及即食汤(ready soups)四种事物。

我们做关联分析的目标,就是发掘消费者对于这些商品的购买行为之间是否有关联性,以及关联性有多强,并将获取的信息付诸于实际应用。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接