📜  R编程中的关联规则挖掘(1)

📅  最后修改于: 2023-12-03 15:04:59.132000             🧑  作者: Mango

R编程中的关联规则挖掘

关联规则挖掘是数据挖掘中的一种技术,它可以通过发现数据中的频繁项集和关联规则,来帮助我们了解不同变量之间的关系。在R编程中,我们可以利用arules包来进行关联规则挖掘。

安装arules包

要使用arules包,我们需要先安装它。在R控制台中输入以下命令:

install.packages("arules")
数据准备

在进行关联规则挖掘之前,我们需要先准备好数据。在这里,让我们使用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      bottled water 
            2513             1903             1809             1715             1372             1087 

sparse transaction matrix:
                    whole milk butter yogurt rice abrasive cleaner brew cheese coffee instant food fruit juice rolls/buns dessert onion tropical fruit chocolate bottled water yogurt,herb bread toilet cleaner
1                         1      1      0    0        0       0    0      0      0       0    0     0     0           0       0     0             0         0        0             0
2                         0      0      1    0        0       0    0      0      0       0    0     0     0           0       0     0             0         0        0             0
3                         0      0      0    0        0       0    0      0      0       0    0     0     0           0       0     0             0         0        0             0
4                         0      0      1    0        0       0    0      0      0       0    0     0     0           0       0     0             0         0        0             0
5                         0      0      0    0        0       0    0      0      1       0    0     0     0           0       0     0             0         0        0             0
6                         0      0      0    0        0       0    0      0      0       0    0     0     0           0       0     0             0         0        0             0
...
挖掘频繁项集

接下来,我们将使用apriori函数来挖掘数据中的频繁项集。频繁项集是指在数据集中出现频率较高的项集,比如在购物清单中同时购买牛奶和面包的人数较多。

rules <- apriori(Groceries, parameter = list(supp = 0.001, conf = 0.8, target = "frequent itemsets"))
rules

在这个例子中,我们设置了supp = 0.001,表示项集在数据集中的最小支持度为0.001;conf = 0.8,表示项集的最小置信度为0.8;target = "frequent itemsets",表示我们要挖掘的是频繁项集。

apriori函数的输出结果如下:

Apriori

Parameter specification:
 confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target   ext
        0.8    0.1  1.0 none FALSE            TRUE       5   0.001      1     10 frequent FALSE

Algorithmic control:
 filter tree heap memopt load sort verbose
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE

Absolute minimum support count: 9 

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[169 item(s), 9835 transaction(s)] done [0.00s].
sorting and recoding items ... [98 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 done [0.00s].
writing ... [11551 set(s)] done [0.00s].
creating S4 object  ... done [0.00s].

输出结果中包含所有满足最小支持度和最小置信度要求的频繁项集。

挖掘关联规则

频繁项集只是挖掘关联规则的一部分。关联规则指的是在频繁项集中,项之间的关系,比如购买牛奶的人更有可能购买面包。

我们使用apriori函数来挖掘关联规则,设置target = "rules"即可。

rules <- apriori(Groceries, parameter = list(supp = 0.001, conf = 0.5, target = "rules"))
rules

在这个例子中,我们设置了conf = 0.5,表示关联规则的最小置信度为0.5。

apriori函数的输出结果如下:

Apriori

Parameter specification:
 confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target   ext
         0.5    0.1  1.0 none FALSE            TRUE       5   0.001      1     10  rules FALSE

Algorithmic control:
 filter tree heap memopt load sort verbose
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE

Absolute minimum support count: 9 

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[169 item(s), 9835 transaction(s)] done [0.00s].
sorting and recoding items ... [122 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 5 6 done [0.06s].
writing ... [7785 rule(s)] done [0.00s].
creating S4 object  ... done [0.00s].

输出结果中包含所有满足最小支持度和最小置信度要求的关联规则。

我们可以使用inspect函数来查看这些关联规则:

inspect(rules)

输出结果如下:

     lhs                                           rhs                 support     confidence  lift     
[1]  {citrus fruit,margarine}                      => {whole milk}  0.001323488 0.8153846  3.2159396
...
结论

关联规则挖掘是一种用于发现数据中变量之间关系的技术。在R编程中,我们可以使用arules包中的apriori函数来进行关联规则挖掘。通过调整最小支持度和最小置信度参数,我们可以挖掘出频繁项集和关联规则,并根据这些结果来了解数据中变量之间的关系。