Learn R Programming

R package arules - Mining Association Rules and Frequent Itemsets

Introduction

The arules package family for R provides the infrastructure for representing, manipulating and analyzing transaction data and patterns using frequent itemsets and association rules. The package also provides a wide range of interest measures and mining algorithms including the code of Christian Borgelt’s popular and efficient C implementations of the association mining algorithms Apriori and Eclat. In addition, the following mining algorithms are available via fim4r:

  • Apriori
  • Eclat
  • Carpenter
  • FPgrowth
  • IsTa
  • RElim
  • SaM

Code examples can be found in Chapter 5 of the web book R Companion for Introduction to Data Mining.

To cite package ‘arules’ in publications use:

Hahsler M, Gruen B, Hornik K (2005). “arules - A Computational Environment for Mining Association Rules and Frequent Item Sets.” Journal of Statistical Software, 14(15), 1-25. ISSN 1548-7660, doi:10.18637/jss.v014.i15 https://doi.org/10.18637/jss.v014.i15.

@Article{,
  title = {arules -- {A} Computational Environment for Mining Association Rules and Frequent Item Sets},
  author = {Michael Hahsler and Bettina Gruen and Kurt Hornik},
  year = {2005},
  journal = {Journal of Statistical Software},
  volume = {14},
  number = {15},
  pages = {1--25},
  doi = {10.18637/jss.v014.i15},
  month = {October},
  issn = {1548-7660},
}

Packages

arules core packages

  • arules: arules base package with data structures, mining algorithms (APRIORI and ECLAT), interest measures.
  • arulesViz: Visualization of association rules.
  • arulesCBA: Classification algorithms based on association rules (includes CBA).
  • arulesSequences: Mining frequent sequences (cSPADE).

Other related packages

Additional mining algorithms

  • arulesNBMiner: Mining NB-frequent itemsets and NB-precise rules.
  • fim4r: Provides fast implementations for several mining algorithms. An interface function called fim4r() is provided in arules.
  • opusminer: OPUS Miner algorithm for finding the op k productive, non-redundant itemsets. Call opus() with format = 'itemsets'.
  • RKEEL: Interface to KEEL’s association rule mining algorithm.
  • RSarules: Mining algorithm which randomly samples association rules with one pre-chosen item as the consequent from a transaction dataset.

In-database analytics

  • ibmdbR: IBM in-database analytics for R can calculate association rules from a database table.
  • rfml: Mine frequent itemsets or association rules using a MarkLogic server.

Interface

  • rattle: Provides a graphical user interface for association rule mining.
  • pmml: Generates PMML (predictive model markup language) for association rules.

Classification

  • arc: Alternative CBA implementation.
  • inTrees: Interpret Tree Ensembles provides functions for: extracting, measuring and pruning rules; selecting a compact rule set; summarizing rules into a learner.
  • rCBA: Alternative CBA implementation.
  • qCBA: Quantitative Classification by Association Rules.
  • sblr: Scalable Bayesian rule lists algorithm for classification.

Outlier Detection

Recommendation/Prediction

  • recommenerlab: Supports creating predictions using association rules.

The following R packages use arules: aPEAR, arc, arulesCBA, arulesNBMiner, arulesSequences, arulesViz, clickstream, CLONETv2, CRE, ctsem, discnorm, fcaR, fdm2id, GroupBN, ibmdbR, immcp, inTrees, opusminer, pmml, qCBA, RareComb, rattle, rCBA, recommenderlab, rgnoisefilt, RKEEL, sbrl, SurvivalTests, TELP

Installation

Stable CRAN version: Install from within R with

install.packages("arules")

Current development version: Install from r-universe.

install.packages("arules",
    repos = c("https://mhahsler.r-universe.dev". "https://cloud.r-project.org/"))

Usage

Load package and mine some association rules.

library("arules")
data("IncomeESL")

trans <- transactions(IncomeESL)
trans
## transactions in sparse format with
##  8993 transactions (rows) and
##  84 items (columns)
rules <- apriori(trans, supp = 0.1, conf = 0.9, target = "rules")
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.9    0.1    1 none FALSE            TRUE       5     0.1      1
##  maxlen target  ext
##      10  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 899 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[84 item(s), 8993 transaction(s)] done [0.00s].
## sorting and recoding items ... [42 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 4 5 6 done [0.01s].
## writing ... [457 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].

Inspect the rules with the highest lift.

inspect(head(rules, n = 3, by = "lift"))
##     lhs                           rhs                      support confidence coverage lift count
## [1] {dual incomes=no,                                                                            
##      householder status=own}   => {marital status=married}    0.10       0.97     0.10  2.6   914
## [2] {years in bay area=>10,                                                                      
##      dual incomes=yes,                                                                           
##      type of home=house}       => {marital status=married}    0.10       0.96     0.10  2.6   902
## [3] {dual incomes=yes,                                                                           
##      householder status=own,                                                                     
##      type of home=house,                                                                         
##      language in home=english} => {marital status=married}    0.11       0.96     0.11  2.6   988

Using arules with tidyverse

arules works seamlessly with tidyverse. For example:

  • dplyr can be used for cleaning and preparing the transactions.
  • transaction() and other functions accept tibble as input.
  • Functions in arules can be connected with the pipe operator |>.
  • arulesViz provides visualizations based on ggplot2.

For example, we can remove the ethnic information column before creating transactions and then mine and inspect rules.

library("tidyverse")
library("arules")
data("IncomeESL")

trans <- IncomeESL |> 
      select(-`ethnic classification`) |> 
      transactions()
rules <- trans |> 
      apriori(supp = 0.1, conf = 0.9, target = "rules", 
              control = list(verbose = FALSE))
rules |> 
      head(3, by = "lift") |>
      as("data.frame") |> 
      tibble()
## # A tibble: 3 × 6
##   rules                                  support confidence coverage  lift count
##   <chr>                                    <dbl>      <dbl>    <dbl> <dbl> <int>
## 1 {dual incomes=no,householder status=o…   0.102      0.971    0.105  2.62   914
## 2 {years in bay area=>10,dual incomes=y…   0.100      0.961    0.104  2.59   902
## 3 {dual incomes=yes,householder status=…   0.110      0.960    0.114  2.59   988

Using arules from Python

arules and arulesViz can now be used directly from Python with the Python package arulespy available form PyPI.

Support

Please report bugs here on GitHub. Questions should be posted on stackoverflow and tagged with arules.

References

Copy Link

Version

Install

install.packages('arules')

Monthly Downloads

35,570

Version

1.7-8

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

August 22nd, 2024

Functions in arules (1.7-8)

coverage

Calculate coverage for rules
addComplement

Add Complement-items to Transactions
SunBai

The SunBai Weighted Transactions Data Set
abbreviate

Abbreviate item labels in transactions, itemMatrix and associations
apriori

Mining Associations with the Apriori Algorithm
confint

Confidence Intervals for Interest Measures for Association Rules
affinity

Computing Affinity Between Items
associations-class

Class associations --- A Set of Associations
c

Combining Association and Transaction Objects
arules-package

arules: Mining Association Rules and Frequent Itemsets
dissimilarity

Dissimilarity Matrix Computation for Associations and Transactions
fim4r

Interface to Mining Algorithms from fim4r
crossTable

Cross-tabulate joint occurrences across pairs of items
discretize

Convert a Continuous Variable into a Categorical Variable
hits

Computing Transaction Weights With HITS
eclat

Mining Associations with Eclat
image

Visual Inspection of Binary Incidence Matrices
extract

Methods for "[": Extraction or Subsetting arules Objects
hierarchy

Support for Item Hierarchies
duplicated

Find Duplicated Elements
is.significant

Find Significant Rules
inspect

Display Associations and Transactions in Readable Form
is.closed

Find Closed Itemsets
is.redundant

Find Redundant Rules
itemCoding

Item Coding --- Conversion between Item Labels and Column IDs
itemFrequency

Getting Frequency/Support for Single Items
is.maximal

Find Maximal Itemsets
interestMeasure

Calculate Additional Interest Measures
is.generator

Find Generator Itemsets
is.superset

Find Super and Subsets
match

Value Matching
random.transactions

Simulate a Random Transactions
itemMatrix-class

Class itemMatrix --- Sparse Binary Incidence Matrix to Represent Sets of Items
predict

Model Predictions
merge

Adding Items to Data
itemFrequencyPlot

Creating a Item Frequencies/Support Bar Plot
pmml

Read and Write PMML
proximity-classes

Classes dist, ar_cross_dissimilarity and ar_similarity --- Proximity Matrices
itemsets-class

Class itemsets --- A Set of Itemsets
itemwiseSetOps

Itemwise Set Operations
rules-class

Class rules --- A Set of Rules
sort

Sort Associations
size

Number of Items in Sets
sample

Random Samples and Permutations
ruleInduction

Association Rule Induction from Itemsets
read

Read Transaction Data
support

Support Counting for Itemsets
unique

Remove Duplicated Elements from a Collection
sets

Set Operations
supportingTransactions

Supporting Transactions
write

Write Transactions or Associations to a File
weclat

Mining Associations from Weighted Transaction Data with Eclat (WARM)
subset

Subsetting Itemsets, Rules and Transactions
transactions-class

Class transactions --- Binary Incidence Matrix for Transactions
tidLists-class

Class tidLists --- Transaction ID Lists for Items/Itemsets
ASparameter-classes

Classes ASparameter, APparameter, ECparameter --- Specifying the parameter Argument of APRIORI and ECLAT
Epub

The Epub Transactions Data Set
AScontrol-classes

Classes AScontrol, APcontrol, ECcontrol --- Specifying the control Argument of Apriori and Eclat
Mushroom

The Mushroom Data Set as Transactions
Groceries

The Groceries Transactions Data Set
Income

The Income Data Set
Adult

Adult Data Set
LIST

List Representation for Objects Based on Class itemMatrix
APappearance-class

Class APappearance --- Specifying the appearance Argument of Apriori to Implement Rule Templates
DATAFRAME

Data.frame Representation for arules Objects