1 Overview

This report performs market basket analysis on the Online Retail dataset using:

2 Dataset Description

This analysis uses the Online Retail dataset from Kaggle (the same dataset shared here: https://www.kaggle.com/datasets/lakshmi25npathi/online-retail-dataset). It is a real transactional dataset collected from a UK-based and registered non-store online retail business. The data covers approximately two years of sales and includes detailed invoice records for customer purchases made online. :contentReferenceoaicite:0

The dataset contains the following key fields:

3 Setup

3.1 Packages

# install.packages(c(
#   "readxl", "arules", "arulesViz", "dplyr", "stringr", "tidyr",
#   "cluster", "arulesCBA", "caret"
# ))

library(readxl)
library(arules)
library(arulesViz)
library(dplyr)
library(stringr)
library(tidyr)
library(cluster)
library(arulesCBA)
library(caret)

3.2 Parameters

  • DATA_FILE – input dataset containing retail transactions.
  • APR_PARAMS – minimum support, confidence, and rule length constraints for Apriori rule mining.
  • STRONG_FILTER – thresholds used to select strong, interpretable rules based on lift and confidence.
  • RHS_TARGET – parameters for mining rules that predict a specific target item on the RHS.
  • CROSSTABLE_TOPN – number of most frequent items included in cross-table analysis.
  • SIM_SAMPLE_N – number of transactions sampled for similarity-based clustering.
  • ITEM_SIM_TOPN – number of top items used for item-to-item similarity analysis.
  • CAT_PARAMS – parameters for category-level aggregation and association rule mining.
  • CBA_PARAMS – parameters for Classification Based on Associations, including feature count, train/test split, and rule thresholds.
DATA_FILE <- "online_retail.xlsx"

# Apriori parameters
APR_PARAMS <- list(
  supp   = 0.01,
  conf   = 0.30,
  minlen = 2,
  maxlen = 3
)

# "Strong rules" filter used for interpretation
STRONG_FILTER <- list(
  lift = 5,
  conf = 0.50
)

# Targeted RHS mining
RHS_TARGET <- list(
  item = "11 PC CERAMIC TEA SET POLKADOT",
  supp = 0.005,
  conf = 0.30
)

# Cross-table exploration
CROSSTABLE_TOPN <- 30

# Similarity sampling & item similarity
SIM_SAMPLE_N  <- 400
ITEM_SIM_TOPN <- 60

# Category aggregation
CAT_PARAMS <- list(
  top_products = 300,
  supp = 0.05,
  conf = 0.30
)

# CBA parameters
CBA_PARAMS <- list(
  top_features = 80,
  split = 0.80,
  supp  = 0.02,
  conf  = 0.50
)

4 Data Loading and Cleaning

4.1 Load the dataset

df_raw <- read_excel(DATA_FILE)

# Quick look
dplyr::glimpse(df_raw)
## Rows: 525,461
## Columns: 8
## $ Invoice       <chr> "489434", "489434", "489434", "489434", "489434", "48943…
## $ StockCode     <chr> "85048", "79323P", "79323W", "22041", "21232", "22064", …
## $ Description   <chr> "15CM CHRISTMAS GLASS BALL 20 LIGHTS", "PINK CHERRY LIGH…
## $ Quantity      <dbl> 12, 12, 12, 48, 24, 24, 24, 10, 12, 12, 24, 12, 10, 18, …
## $ InvoiceDate   <dttm> 2009-12-01 07:45:00, 2009-12-01 07:45:00, 2009-12-01 07…
## $ Price         <dbl> 6.95, 6.75, 6.75, 2.10, 1.25, 1.65, 1.25, 5.95, 2.55, 3.…
## $ `Customer ID` <dbl> 13085, 13085, 13085, 13085, 13085, 13085, 13085, 13085, …
## $ Country       <chr> "United Kingdom", "United Kingdom", "United Kingdom", "U…

4.2 Clean rows and standardize product names

Cleaning steps:

  • Keep only rows with Invoice and Description
  • Convert Invoice to character
  • Normalize Description (uppercase + squish whitespace)
  • Remove credit notes (invoices starting with "C")
  • Keep only positive quantities
df_clean <- df_raw %>%
  filter(!is.na(Invoice), !is.na(Description)) %>%
  mutate(
    Invoice     = as.character(Invoice),
    Description = str_squish(str_to_upper(as.character(Description))),
    Quantity    = as.numeric(Quantity)
  ) %>%
  filter(!str_detect(Invoice, "^C"), Quantity > 0)

glimpse(df_clean)
## Rows: 512,033
## Columns: 8
## $ Invoice       <chr> "489434", "489434", "489434", "489434", "489434", "48943…
## $ StockCode     <chr> "85048", "79323P", "79323W", "22041", "21232", "22064", …
## $ Description   <chr> "15CM CHRISTMAS GLASS BALL 20 LIGHTS", "PINK CHERRY LIGH…
## $ Quantity      <dbl> 12, 12, 12, 48, 24, 24, 24, 10, 12, 12, 24, 12, 10, 18, …
## $ InvoiceDate   <dttm> 2009-12-01 07:45:00, 2009-12-01 07:45:00, 2009-12-01 07…
## $ Price         <dbl> 6.95, 6.75, 6.75, 2.10, 1.25, 1.65, 1.25, 5.95, 2.55, 3.…
## $ `Customer ID` <dbl> 13085, 13085, 13085, 13085, 13085, 13085, 13085, 13085, …
## $ Country       <chr> "United Kingdom", "United Kingdom", "United Kingdom", "U…

5 Transactions (Baskets)

We build a basket per invoice (unique product descriptions per invoice) and convert to transactions.

basket_list <- df_clean %>%
  group_by(Invoice) %>%
  summarise(items = list(unique(Description)), .groups = "drop") %>%
  pull(items)

trans <- as(basket_list, "transactions")

summary(trans)
## transactions as itemMatrix in sparse format with
##  21002 rows (elements/itemsets/transactions) and
##  4515 columns (items) and a density of 0.005254849 
## 
## most frequent items:
## WHITE HANGING HEART T-LIGHT HOLDER           REGENCY CAKESTAND 3 TIER 
##                               3316                               2020 
##     STRAWBERRY CERAMIC TRINKET BOX      ASSORTED COLOUR BIRD ORNAMENT 
##                               1640                               1413 
##   PACK OF 72 RETRO SPOT CAKE CASES                            (Other) 
##                               1410                             488487 
## 
## element (itemset/transaction) length distribution:
## sizes
##    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16 
## 2168  877  724  683  647  618  592  551  615  541  570  561  556  525  546  517 
##   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32 
##  512  527  500  491  437  400  369  323  308  294  270  260  246  237  206  179 
##   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48 
##  173  162  151  153  144  130  140  153  138  112  107  102   88   86  115   80 
##   49   50   51   52   53   54   55   56   57   58   59   60   61   62   63   64 
##   84   84   82   76   57   56   61   58   64   55   43   49   41   45   37   42 
##   65   66   67   68   69   70   71   72   73   74   75   76   77   78   79   80 
##   40   28   22   28   28   32   34   22   24   27   19   17   15   15   21   15 
##   81   82   83   84   85   86   87   88   89   90   91   92   93   94   95   96 
##   12   11   15   18    9    9   13   14   19   15    7    7    8    8   15    7 
##   97   98   99  100  101  102  103  104  105  106  107  108  109  110  111  112 
##    9    8   10   12    7    4    8    5    8    6    9    9    8    7    6    4 
##  113  114  115  116  117  118  119  120  121  122  123  125  126  127  128  129 
##    8    8   14    7    8    5    5    3    9    5    5    5    4    6    3    3 
##  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145 
##    5    5    6    8    7    9    4    5    5    2    2    2    4    5    2    6 
##  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161 
##    4    4    6    3    2    8    1    3    3    4    4    2    5    3    1    4 
##  162  163  164  165  166  167  168  169  170  171  173  174  175  176  177  178 
##    7    2    4    7    3    3    3    4    1    4    2    3    2    3    2    2 
##  180  181  183  184  185  186  187  188  189  190  191  192  193  194  195  196 
##    3    5    3    3    1    4    1    1    3    2    2    3    3    2    2    2 
##  197  199  200  201  202  203  204  205  206  207  211  212  213  216  217  218 
##    2    2    4    4    3    1    2    1    2    2    1    1    1    3    2    4 
##  219  220  221  222  223  224  227  228  229  231  233  237  238  240  241  243 
##    2    2    2    2    2    2    1    1    1    1    1    1    1    2    2    1 
##  244  246  247  249  253  254  255  261  263  264  265  267  268  269  272  274 
##    1    1    3    1    1    2    1    1    1    2    1    1    1    1    2    1 
##  275  276  279  284  295  296  298  299  307  314  320  323  325  330  335  337 
##    2    1    1    2    1    1    1    1    1    2    1    1    1    1    1    1 
##  340  341  343  355  362  368  369  372  376  379  384  400  406  411  416  420 
##    2    1    2    2    1    2    1    1    1    1    1    2    1    1    1    1 
##  424  427  429  435  437  438  439  441  446  448  459  460  463  465  466  476 
##    1    1    2    1    1    1    1    1    1    1    1    1    1    2    1    1 
##  479  480  483  484  497  498  501  506  512  515  522  536  545  546  556  567 
##    1    2    1    1    2    1    1    1    1    1    1    1    1    1    1    1 
##  576  577  578  585  588  589  595  601  647  673 
##    1    1    1    1    1    1    1    1    1    1 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    6.00   15.00   23.73   28.00  673.00 
## 
## includes extended item information - examples:
##                     labels
## 1    *BOOMBOX IPOD CLASSIC
## 2 *USB OFFICE GLITTER LAMP
## 3  *USB OFFICE MIRROR BALL
inspect(head(trans, 5))
##     items                                 
## [1] {15CM CHRISTMAS GLASS BALL 20 LIGHTS, 
##      FANCY FONT HOME SWEET HOME DOORMAT,  
##      PINK CHERRY LIGHTS,                  
##      PINK DOUGHNUT TRINKET POT,           
##      RECORD FRAME 7" SINGLE SIZE,         
##      SAVE THE PLANET MUG,                 
##      STRAWBERRY CERAMIC TRINKET BOX,      
##      WHITE CHERRY LIGHTS}                 
## [2] {CAT BOWL,                            
##      DOG BOWL , CHASING BALL DESIGN,      
##      HEART MEASURING SPOONS LARGE,        
##      LUNCHBOX WITH CUTLERY FAIRY CAKES}   
## [3] {AREA PATROLLED METAL SIGN,           
##      ASSORTED COLOUR BIRD ORNAMENT,       
##      BATH BUILDING BLOCK WORD,            
##      BISCUITS SMALL BOWL LIGHT BLUE,      
##      BLACK DINER WALL CLOCK,              
##      CHRISTMAS CRAFT WHITE FAIRY,         
##      CLASSIC WHITE FRAME,                 
##      DOOR MAT BLACK FLOCK,                
##      FULL ENGLISH BREAKFAST PLATE,        
##      HEART FILIGREE DOVE LARGE,           
##      HEART IVORY TRELLIS LARGE,           
##      HOME BUILDING BLOCK WORD,            
##      LOVE BUILDING BLOCK WORD,            
##      PEACE WOODEN BLOCK LETTERS,          
##      PIZZA PLATE IN BOX,                  
##      PLEASE ONE PERSON METAL SIGN,        
##      SCOTTIE DOG HOT WATER BOTTLE,        
##      SET OF 3 BLACK FLYING DUCKS,         
##      SMALL MARSHMALLOWS PINK BOWL}        
## [4] {BLUE PADDED SOFT MOBILE,             
##      CHOCOLATE HOT WATER BOTTLE,          
##      CHRISTMAS CRAFT HEART DECORATIONS,   
##      CHRISTMAS CRAFT HEART STOCKING,      
##      CINAMMON & ORANGE WREATH,            
##      EUCALYPTUS & PINECONE WREATH,        
##      FELTCRAFT DOLL EMILY,                
##      FELTCRAFT DOLL MARIA,                
##      FELTCRAFT DOLL ROSIE,                
##      FLORAL BLUE MONSTER,                 
##      HANGING HEART ZINC T-LIGHT HOLDER,   
##      INFLATABLE POLITICAL GLOBE,          
##      JOY LARGE WOOD LETTERS,              
##      PACK OF 20 SKULL PAPER NAPKINS,      
##      PACK OF 6 SKULL PAPER CUPS,          
##      PARTY CONE CHRISTMAS DECORATION,     
##      PEACE SMALL WOOD LETTERS,            
##      PINK BLUE FELT CRAFT TRINKET BOX,    
##      RETRO COFFEE MUGS ASSORTED,          
##      SCOTTIE DOG HOT WATER BOTTLE,        
##      STRIPES DESIGN MONKEY DOLL,          
##      VINTAGE SNAKES & LADDERS,            
##      WOODEN BOX ADVENT CALENDAR}          
## [5] {CARROT CHARLIE+LOLA COASTER SET,     
##      CHARLIE & LOLA WASTEPAPER BIN BLUE,  
##      CHARLIE & LOLA WASTEPAPER BIN FLORA, 
##      CHARLIE + LOLA BISCUITS TINS,        
##      CHARLIE + LOLA RED HOT WATER BOTTLE, 
##      CHARLIE AND LOLA CHARLOTTE BAG,      
##      CHARLIE AND LOLA FIGURES TINS,       
##      CHARLIE LOLA BLUE HOT WATER BOTTLE,  
##      CHARLIE+LOLA PINK HOT WATER BOTTLE,  
##      CHARLIE+LOLA RED HOT WATER BOTTLE,   
##      COUNTRY COTTAGE DOORSTOP GREEN,      
##      DINOSAURS WRITING SET,               
##      GINGHAM HEART DOORSTOP RED,          
##      JUMBO BAG CHARLIE AND LOLA TOYS,     
##      JUMBO BAG TOYS,                      
##      SET OF MEADOW FLOWER STICKERS,       
##      TOMATO CHARLIE+LOLA COASTER SET}

6 Item Frequency

The bar chart above presents the top 15 most frequently purchased products across all transactions.

This step helps identify dominant products and motivates further analysis using association rules to uncover meaningful co-purchase patterns.

itemFrequencyPlot(
  trans,
  topN = 15,
  type = "absolute",
  horiz = TRUE,
  cex.names = 0.7,
  main = "Top 15 Most Frequent Products"
)

7 Apriori Association Rules

Using the Apriori algorithm with predefined support and confidence thresholds, a total of 491 association rules were generated.

Key characteristics of the mined rules include:

7.1 Mine rules

rules <- apriori(
  trans,
  parameter = APR_PARAMS,
  control   = list(verbose = FALSE)
)

summary(rules)
## set of 491 rules
## 
## rule length distribution (lhs + rhs):sizes
##   2   3 
## 428  63 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.000   2.000   2.000   2.128   2.000   3.000 
## 
## summary of quality measures:
##     support          confidence        coverage            lift       
##  Min.   :0.01005   Min.   :0.3022   Min.   :0.01224   Min.   : 1.932  
##  1st Qu.:0.01105   1st Qu.:0.3633   1st Qu.:0.02247   1st Qu.: 7.335  
##  Median :0.01290   Median :0.4413   Median :0.03057   Median : 9.985  
##  Mean   :0.01421   Mean   :0.4697   Mean   :0.03252   Mean   :13.195  
##  3rd Qu.:0.01597   3rd Qu.:0.5483   3rd Qu.:0.03995   3rd Qu.:15.561  
##  Max.   :0.03790   Max.   :0.8966   Max.   :0.07809   Max.   :64.708  
##      count      
##  Min.   :211.0  
##  1st Qu.:232.0  
##  Median :271.0  
##  Mean   :298.4  
##  3rd Qu.:335.5  
##  Max.   :796.0  
## 
## mining info:
##   data ntransactions support confidence
##  trans         21002    0.01        0.3
##                                                                            call
##  apriori(data = trans, parameter = APR_PARAMS, control = list(verbose = FALSE))
inspect(head(rules, 10))
##      lhs                                   rhs                                   support confidence   coverage     lift count
## [1]  {PAINTED METAL PEARS ASSORTED}     => {ASSORTED COLOUR BIRD ORNAMENT}    0.01337968  0.7336815 0.01823636 10.90501   281
## [2]  {CHILDS GARDEN TROWEL BLUE}        => {CHILDS GARDEN TROWEL PINK}        0.01014189  0.8287938 0.01223693 64.70753   213
## [3]  {CHILDS GARDEN TROWEL PINK}        => {CHILDS GARDEN TROWEL BLUE}        0.01014189  0.7918216 0.01280830 64.70753   213
## [4]  {KEY FOB , FRONT DOOR}             => {KEY FOB , BACK DOOR}              0.01014189  0.7830882 0.01295115 41.84839   213
## [5]  {KEY FOB , BACK DOOR}              => {KEY FOB , FRONT DOOR}             0.01014189  0.5419847 0.01871250 41.84839   213
## [6]  {SET/10 BLUE SPOTTY PARTY CANDLES} => {SET/10 PINK SPOTTY PARTY CANDLES} 0.01214170  0.7943925 0.01528426 43.11068   255
## [7]  {SET/10 PINK SPOTTY PARTY CANDLES} => {SET/10 BLUE SPOTTY PARTY CANDLES} 0.01214170  0.6589147 0.01842682 43.11068   255
## [8]  {BAKING SET SPACEBOY DESIGN}       => {BAKING SET 9 PIECE RETROSPOT}     0.01118941  0.4766734 0.02347395 10.21540   235
## [9]  {PINK REGENCY TEACUP AND SAUCER}   => {GREEN REGENCY TEACUP AND SAUCER}  0.01061804  0.8576923 0.01237977 49.21654   223
## [10] {GREEN REGENCY TEACUP AND SAUCER}  => {PINK REGENCY TEACUP AND SAUCER}   0.01061804  0.6092896 0.01742691 49.21654   223

7.2 Remove redundant rules and keep statistically significant rules

rules_f <- rules %>%
  subset(!is.redundant(.)) %>%
  subset(is.significant(., trans))

summary(rules_f)
## set of 489 rules
## 
## rule length distribution (lhs + rhs):sizes
##   2   3 
## 428  61 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.000   2.000   2.000   2.125   2.000   3.000 
## 
## summary of quality measures:
##     support          confidence        coverage            lift       
##  Min.   :0.01005   Min.   :0.3022   Min.   :0.01224   Min.   : 1.932  
##  1st Qu.:0.01105   1st Qu.:0.3630   1st Qu.:0.02247   1st Qu.: 7.338  
##  Median :0.01295   Median :0.4413   Median :0.03057   Median :10.045  
##  Mean   :0.01422   Mean   :0.4698   Mean   :0.03255   Mean   :13.228  
##  3rd Qu.:0.01600   3rd Qu.:0.5490   3rd Qu.:0.03995   3rd Qu.:15.561  
##  Max.   :0.03790   Max.   :0.8966   Max.   :0.07809   Max.   :64.708  
##      count      
##  Min.   :211.0  
##  1st Qu.:232.0  
##  Median :272.0  
##  Mean   :298.7  
##  3rd Qu.:336.0  
##  Max.   :796.0  
## 
## mining info:
##   data ntransactions support confidence
##  trans         21002    0.01        0.3
##                                                                            call
##  apriori(data = trans, parameter = APR_PARAMS, control = list(verbose = FALSE))

7.3 Strong rules for interpretation

After filtering for statistically significant and non-redundant rules, a subset of strong rules was selected using lift and confidence thresholds.

The strongest rules reveal:

  • Symmetric relationships between product variants (e.g. color or theme variants of the same item).
  • High lift values, indicating that certain products are purchased together far more often than expected by chance.
  • Clear thematic groupings, such as coordinated product collections or complementary household items.
rules_strong <- subset(
  rules_f,
  lift > STRONG_FILTER$lift & confidence > STRONG_FILTER$conf
)

summary(rules_strong)
## set of 164 rules
## 
## rule length distribution (lhs + rhs):sizes
##   2   3 
## 119  45 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.000   2.000   2.000   2.274   3.000   3.000 
## 
## summary of quality measures:
##     support          confidence        coverage            lift       
##  Min.   :0.01009   Min.   :0.5027   Min.   :0.01224   Min.   : 6.413  
##  1st Qu.:0.01086   1st Qu.:0.5445   1st Qu.:0.01743   1st Qu.:10.977  
##  Median :0.01186   Median :0.5982   Median :0.01964   Median :18.296  
##  Mean   :0.01336   Mean   :0.6198   Mean   :0.02211   Mean   :22.028  
##  3rd Qu.:0.01426   3rd Qu.:0.6688   3rd Qu.:0.02355   3rd Qu.:29.507  
##  Max.   :0.03790   Max.   :0.8966   Max.   :0.05499   Max.   :64.708  
##      count      
##  Min.   :212.0  
##  1st Qu.:228.0  
##  Median :249.0  
##  Mean   :280.6  
##  3rd Qu.:299.5  
##  Max.   :796.0  
## 
## mining info:
##   data ntransactions support confidence
##  trans         21002    0.01        0.3
##                                                                            call
##  apriori(data = trans, parameter = APR_PARAMS, control = list(verbose = FALSE))
inspect(head(sort(rules_strong, by = "lift", decreasing = TRUE), 15))
##      lhs                                   rhs                                   support confidence   coverage     lift count
## [1]  {CHILDS GARDEN TROWEL BLUE}        => {CHILDS GARDEN TROWEL PINK}        0.01014189  0.8287938 0.01223693 64.70753   213
## [2]  {CHILDS GARDEN TROWEL PINK}        => {CHILDS GARDEN TROWEL BLUE}        0.01014189  0.7918216 0.01280830 64.70753   213
## [3]  {POPPY'S PLAYHOUSE LIVINGROOM}     => {POPPY'S PLAYHOUSE BEDROOM}        0.01066565  0.8582375 0.01242739 56.68146   224
## [4]  {POPPY'S PLAYHOUSE BEDROOM}        => {POPPY'S PLAYHOUSE LIVINGROOM}     0.01066565  0.7044025 0.01514142 56.68146   224
## [5]  {POPPY'S PLAYHOUSE LIVINGROOM}     => {POPPY'S PLAYHOUSE KITCHEN}        0.01114180  0.8965517 0.01242739 55.05666   234
## [6]  {POPPY'S PLAYHOUSE KITCHEN}        => {POPPY'S PLAYHOUSE LIVINGROOM}     0.01114180  0.6842105 0.01628416 55.05666   234
## [7]  {POPPY'S PLAYHOUSE KITCHEN}        => {POPPY'S PLAYHOUSE BEDROOM}        0.01304638  0.8011696 0.01628416 52.91246   274
## [8]  {POPPY'S PLAYHOUSE BEDROOM}        => {POPPY'S PLAYHOUSE KITCHEN}        0.01304638  0.8616352 0.01514142 52.91246   274
## [9]  {GREEN REGENCY TEACUP AND SAUCER}  => {PINK REGENCY TEACUP AND SAUCER}   0.01061804  0.6092896 0.01742691 49.21654   223
## [10] {PINK REGENCY TEACUP AND SAUCER}   => {GREEN REGENCY TEACUP AND SAUCER}  0.01061804  0.8576923 0.01237977 49.21654   223
## [11] {SET/10 BLUE SPOTTY PARTY CANDLES} => {SET/10 PINK SPOTTY PARTY CANDLES} 0.01214170  0.7943925 0.01528426 43.11068   255
## [12] {SET/10 PINK SPOTTY PARTY CANDLES} => {SET/10 BLUE SPOTTY PARTY CANDLES} 0.01214170  0.6589147 0.01842682 43.11068   255
## [13] {ROSES REGENCY TEACUP AND SAUCER}  => {GREEN REGENCY TEACUP AND SAUCER}  0.01352252  0.7454068 0.01814113 42.77332   284
## [14] {GREEN REGENCY TEACUP AND SAUCER}  => {ROSES REGENCY TEACUP AND SAUCER}  0.01352252  0.7759563 0.01742691 42.77332   284
## [15] {KEY FOB , FRONT DOOR}             => {KEY FOB , BACK DOOR}              0.01014189  0.7830882 0.01295115 41.84839   213

7.4 Visualizations

plot(
  rules_strong,
  measure = c("support", "lift"),
  shading = "confidence"
)

plot(
  head(rules_strong, 30),
  method = "graph",
  engine = "htmlwidget"
)

8 Targeted Rules (Fixed RHS)

In this step, association rules were mined with a fixed right-hand-side (RHS) item, focusing on products that could predict the purchase of a specific target item.

No rules satisfying the minimum support and confidence thresholds were found for the selected target product.

This result suggests that:

rules_rhs <- apriori(
  trans,
  parameter = list(
    supp   = RHS_TARGET$supp,
    conf   = RHS_TARGET$conf,
    minlen = 2,
    maxlen = 3
  ),
  appearance = list(default = "lhs", rhs = RHS_TARGET$item),
  control    = list(verbose = FALSE)
)

rules_rhs <- sort(rules_rhs, by = "lift", decreasing = TRUE)

summary(rules_rhs)
## set of 0 rules
inspect(head(rules_rhs, 10))

9 Cross-Table Exploration (Top Items)

top_items <- names(sort(itemFrequency(trans), decreasing = TRUE))[1:CROSSTABLE_TOPN]
trans_top <- trans[, top_items]

ct_count <- crossTable(trans_top, measure = "count",   sort = TRUE)
ct_supp  <- crossTable(trans_top, measure = "support", sort = TRUE)
ct_lift  <- crossTable(trans_top, measure = "lift",    sort = TRUE)

head(ct_count, 5)
##                                    WHITE HANGING HEART T-LIGHT HOLDER
## WHITE HANGING HEART T-LIGHT HOLDER                               3316
## REGENCY CAKESTAND 3 TIER                                          429
## STRAWBERRY CERAMIC TRINKET BOX                                    537
## ASSORTED COLOUR BIRD ORNAMENT                                     441
## PACK OF 72 RETRO SPOT CAKE CASES                                  371
##                                    REGENCY CAKESTAND 3 TIER
## WHITE HANGING HEART T-LIGHT HOLDER                      429
## REGENCY CAKESTAND 3 TIER                               2020
## STRAWBERRY CERAMIC TRINKET BOX                          308
## ASSORTED COLOUR BIRD ORNAMENT                           220
## PACK OF 72 RETRO SPOT CAKE CASES                        238
##                                    STRAWBERRY CERAMIC TRINKET BOX
## WHITE HANGING HEART T-LIGHT HOLDER                            537
## REGENCY CAKESTAND 3 TIER                                      308
## STRAWBERRY CERAMIC TRINKET BOX                               1640
## ASSORTED COLOUR BIRD ORNAMENT                                 155
## PACK OF 72 RETRO SPOT CAKE CASES                              328
##                                    ASSORTED COLOUR BIRD ORNAMENT
## WHITE HANGING HEART T-LIGHT HOLDER                           441
## REGENCY CAKESTAND 3 TIER                                     220
## STRAWBERRY CERAMIC TRINKET BOX                               155
## ASSORTED COLOUR BIRD ORNAMENT                               1413
## PACK OF 72 RETRO SPOT CAKE CASES                             156
##                                    PACK OF 72 RETRO SPOT CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                              371
## REGENCY CAKESTAND 3 TIER                                        238
## STRAWBERRY CERAMIC TRINKET BOX                                  328
## ASSORTED COLOUR BIRD ORNAMENT                                   156
## PACK OF 72 RETRO SPOT CAKE CASES                               1410
##                                    60 TEATIME FAIRY CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                         408
## REGENCY CAKESTAND 3 TIER                                   255
## STRAWBERRY CERAMIC TRINKET BOX                             366
## ASSORTED COLOUR BIRD ORNAMENT                              157
## PACK OF 72 RETRO SPOT CAKE CASES                           603
##                                    HOME BUILDING BLOCK WORD
## WHITE HANGING HEART T-LIGHT HOLDER                      505
## REGENCY CAKESTAND 3 TIER                                242
## STRAWBERRY CERAMIC TRINKET BOX                          219
## ASSORTED COLOUR BIRD ORNAMENT                           247
## PACK OF 72 RETRO SPOT CAKE CASES                        170
##                                    JUMBO BAG RED RETROSPOT LUNCH BAG RED SPOTTY
## WHITE HANGING HEART T-LIGHT HOLDER                     296                  344
## REGENCY CAKESTAND 3 TIER                               251                  181
## STRAWBERRY CERAMIC TRINKET BOX                         210                  256
## ASSORTED COLOUR BIRD ORNAMENT                          113                  101
## PACK OF 72 RETRO SPOT CAKE CASES                       145                  339
##                                    JUMBO STORAGE BAG SUKI
## WHITE HANGING HEART T-LIGHT HOLDER                    315
## REGENCY CAKESTAND 3 TIER                              218
## STRAWBERRY CERAMIC TRINKET BOX                        240
## ASSORTED COLOUR BIRD ORNAMENT                         113
## PACK OF 72 RETRO SPOT CAKE CASES                      221
##                                    PACK OF 60 PINK PAISLEY CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                                318
## REGENCY CAKESTAND 3 TIER                                          277
## STRAWBERRY CERAMIC TRINKET BOX                                    286
## ASSORTED COLOUR BIRD ORNAMENT                                     151
## PACK OF 72 RETRO SPOT CAKE CASES                                  534
##                                    WOODEN FRAME ANTIQUE WHITE
## WHITE HANGING HEART T-LIGHT HOLDER                        532
## REGENCY CAKESTAND 3 TIER                                  206
## STRAWBERRY CERAMIC TRINKET BOX                            193
## ASSORTED COLOUR BIRD ORNAMENT                             161
## PACK OF 72 RETRO SPOT CAKE CASES                          129
##                                    LUNCH BAG BLACK SKULL. LUNCH BAG SUKI DESIGN
## WHITE HANGING HEART T-LIGHT HOLDER                    324                   294
## REGENCY CAKESTAND 3 TIER                              161                   169
## STRAWBERRY CERAMIC TRINKET BOX                        223                   194
## ASSORTED COLOUR BIRD ORNAMENT                         106                    87
## PACK OF 72 RETRO SPOT CAKE CASES                      179                   195
##                                    HEART OF WICKER LARGE
## WHITE HANGING HEART T-LIGHT HOLDER                   434
## REGENCY CAKESTAND 3 TIER                             195
## STRAWBERRY CERAMIC TRINKET BOX                       162
## ASSORTED COLOUR BIRD ORNAMENT                        153
## PACK OF 72 RETRO SPOT CAKE CASES                      83
##                                    LOVE BUILDING BLOCK WORD
## WHITE HANGING HEART T-LIGHT HOLDER                      460
## REGENCY CAKESTAND 3 TIER                                182
## STRAWBERRY CERAMIC TRINKET BOX                          194
## ASSORTED COLOUR BIRD ORNAMENT                           175
## PACK OF 72 RETRO SPOT CAKE CASES                        165
##                                    REX CASH+CARRY JUMBO SHOPPER
## WHITE HANGING HEART T-LIGHT HOLDER                          274
## REGENCY CAKESTAND 3 TIER                                     92
## STRAWBERRY CERAMIC TRINKET BOX                              101
## ASSORTED COLOUR BIRD ORNAMENT                                99
## PACK OF 72 RETRO SPOT CAKE CASES                             66
##                                    RED HANGING HEART T-LIGHT HOLDER
## WHITE HANGING HEART T-LIGHT HOLDER                              771
## REGENCY CAKESTAND 3 TIER                                        131
## STRAWBERRY CERAMIC TRINKET BOX                                  161
## ASSORTED COLOUR BIRD ORNAMENT                                   134
## PACK OF 72 RETRO SPOT CAKE CASES                                 80
##                                    JUMBO SHOPPER VINTAGE RED PAISLEY
## WHITE HANGING HEART T-LIGHT HOLDER                               234
## REGENCY CAKESTAND 3 TIER                                         198
## STRAWBERRY CERAMIC TRINKET BOX                                   156
## ASSORTED COLOUR BIRD ORNAMENT                                    110
## PACK OF 72 RETRO SPOT CAKE CASES                                 150
##                                    JUMBO BAG STRAWBERRY HEART OF WICKER SMALL
## WHITE HANGING HEART T-LIGHT HOLDER                  315                   417
## REGENCY CAKESTAND 3 TIER                            203                   215
## STRAWBERRY CERAMIC TRINKET BOX                      219                   191
## ASSORTED COLOUR BIRD ORNAMENT                       113                   142
## PACK OF 72 RETRO SPOT CAKE CASES                    200                   109
##                                    HOT WATER BOTTLE TEA AND SYMPATHY
## WHITE HANGING HEART T-LIGHT HOLDER                               298
## REGENCY CAKESTAND 3 TIER                                         190
## STRAWBERRY CERAMIC TRINKET BOX                                   227
## ASSORTED COLOUR BIRD ORNAMENT                                     98
## PACK OF 72 RETRO SPOT CAKE CASES                                 136
##                                    PARTY BUNTING PLEASE ONE PERSON METAL SIGN
## WHITE HANGING HEART T-LIGHT HOLDER           303                          358
## REGENCY CAKESTAND 3 TIER                     245                          143
## STRAWBERRY CERAMIC TRINKET BOX               224                          199
## ASSORTED COLOUR BIRD ORNAMENT                128                          108
## PACK OF 72 RETRO SPOT CAKE CASES             208                          127
##                                    SWEETHEART CERAMIC TRINKET BOX
## WHITE HANGING HEART T-LIGHT HOLDER                            336
## REGENCY CAKESTAND 3 TIER                                      257
## STRAWBERRY CERAMIC TRINKET BOX                                796
## ASSORTED COLOUR BIRD ORNAMENT                                 103
## PACK OF 72 RETRO SPOT CAKE CASES                              184
##                                    VINTAGE SNAP CARDS
## WHITE HANGING HEART T-LIGHT HOLDER                261
## REGENCY CAKESTAND 3 TIER                          177
## STRAWBERRY CERAMIC TRINKET BOX                    198
## ASSORTED COLOUR BIRD ORNAMENT                     113
## PACK OF 72 RETRO SPOT CAKE CASES                  174
##                                    SCOTTIE DOG HOT WATER BOTTLE
## WHITE HANGING HEART T-LIGHT HOLDER                          312
## REGENCY CAKESTAND 3 TIER                                    132
## STRAWBERRY CERAMIC TRINKET BOX                              175
## ASSORTED COLOUR BIRD ORNAMENT                               110
## PACK OF 72 RETRO SPOT CAKE CASES                            118
##                                    LUNCH BAG SPACEBOY DESIGN
## WHITE HANGING HEART T-LIGHT HOLDER                       219
## REGENCY CAKESTAND 3 TIER                                 130
## STRAWBERRY CERAMIC TRINKET BOX                           122
## ASSORTED COLOUR BIRD ORNAMENT                             96
## PACK OF 72 RETRO SPOT CAKE CASES                         137
##                                    BAKING SET 9 PIECE RETROSPOT
## WHITE HANGING HEART T-LIGHT HOLDER                          178
## REGENCY CAKESTAND 3 TIER                                    120
## STRAWBERRY CERAMIC TRINKET BOX                              130
## ASSORTED COLOUR BIRD ORNAMENT                                88
## PACK OF 72 RETRO SPOT CAKE CASES                            221
##                                    JUMBO BAG BAROQUE BLACK WHITE
## WHITE HANGING HEART T-LIGHT HOLDER                           260
## REGENCY CAKESTAND 3 TIER                                     166
## STRAWBERRY CERAMIC TRINKET BOX                               189
## ASSORTED COLOUR BIRD ORNAMENT                                 90
## PACK OF 72 RETRO SPOT CAKE CASES                             130
head(ct_supp, 5)
##                                    WHITE HANGING HEART T-LIGHT HOLDER
## WHITE HANGING HEART T-LIGHT HOLDER                         0.15788972
## REGENCY CAKESTAND 3 TIER                                   0.02042663
## STRAWBERRY CERAMIC TRINKET BOX                             0.02556899
## ASSORTED COLOUR BIRD ORNAMENT                              0.02099800
## PACK OF 72 RETRO SPOT CAKE CASES                           0.01766498
##                                    REGENCY CAKESTAND 3 TIER
## WHITE HANGING HEART T-LIGHT HOLDER               0.02042663
## REGENCY CAKESTAND 3 TIER                         0.09618132
## STRAWBERRY CERAMIC TRINKET BOX                   0.01466527
## ASSORTED COLOUR BIRD ORNAMENT                    0.01047519
## PACK OF 72 RETRO SPOT CAKE CASES                 0.01133225
##                                    STRAWBERRY CERAMIC TRINKET BOX
## WHITE HANGING HEART T-LIGHT HOLDER                     0.02556899
## REGENCY CAKESTAND 3 TIER                               0.01466527
## STRAWBERRY CERAMIC TRINKET BOX                         0.07808780
## ASSORTED COLOUR BIRD ORNAMENT                          0.00738025
## PACK OF 72 RETRO SPOT CAKE CASES                       0.01561756
##                                    ASSORTED COLOUR BIRD ORNAMENT
## WHITE HANGING HEART T-LIGHT HOLDER                   0.020998000
## REGENCY CAKESTAND 3 TIER                             0.010475193
## STRAWBERRY CERAMIC TRINKET BOX                       0.007380250
## ASSORTED COLOUR BIRD ORNAMENT                        0.067279307
## PACK OF 72 RETRO SPOT CAKE CASES                     0.007427864
##                                    PACK OF 72 RETRO SPOT CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                      0.017664984
## REGENCY CAKESTAND 3 TIER                                0.011332254
## STRAWBERRY CERAMIC TRINKET BOX                          0.015617560
## ASSORTED COLOUR BIRD ORNAMENT                           0.007427864
## PACK OF 72 RETRO SPOT CAKE CASES                        0.067136463
##                                    60 TEATIME FAIRY CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                 0.019426721
## REGENCY CAKESTAND 3 TIER                           0.012141701
## STRAWBERRY CERAMIC TRINKET BOX                     0.017426912
## ASSORTED COLOUR BIRD ORNAMENT                      0.007475479
## PACK OF 72 RETRO SPOT CAKE CASES                   0.028711551
##                                    HOME BUILDING BLOCK WORD
## WHITE HANGING HEART T-LIGHT HOLDER              0.024045329
## REGENCY CAKESTAND 3 TIER                        0.011522712
## STRAWBERRY CERAMIC TRINKET BOX                  0.010427578
## ASSORTED COLOUR BIRD ORNAMENT                   0.011760785
## PACK OF 72 RETRO SPOT CAKE CASES                0.008094467
##                                    JUMBO BAG RED RETROSPOT LUNCH BAG RED SPOTTY
## WHITE HANGING HEART T-LIGHT HOLDER             0.014093896          0.016379392
## REGENCY CAKESTAND 3 TIER                       0.011951243          0.008618227
## STRAWBERRY CERAMIC TRINKET BOX                 0.009999048          0.012189315
## ASSORTED COLOUR BIRD ORNAMENT                  0.005380440          0.004809066
## PACK OF 72 RETRO SPOT CAKE CASES               0.006904104          0.016141320
##                                    JUMBO STORAGE BAG SUKI
## WHITE HANGING HEART T-LIGHT HOLDER             0.01499857
## REGENCY CAKESTAND 3 TIER                       0.01037996
## STRAWBERRY CERAMIC TRINKET BOX                 0.01142748
## ASSORTED COLOUR BIRD ORNAMENT                  0.00538044
## PACK OF 72 RETRO SPOT CAKE CASES               0.01052281
##                                    PACK OF 60 PINK PAISLEY CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                        0.015141415
## REGENCY CAKESTAND 3 TIER                                  0.013189220
## STRAWBERRY CERAMIC TRINKET BOX                            0.013617751
## ASSORTED COLOUR BIRD ORNAMENT                             0.007189791
## PACK OF 72 RETRO SPOT CAKE CASES                          0.025426150
##                                    WOODEN FRAME ANTIQUE WHITE
## WHITE HANGING HEART T-LIGHT HOLDER                0.025330921
## REGENCY CAKESTAND 3 TIER                          0.009808590
## STRAWBERRY CERAMIC TRINKET BOX                    0.009189601
## ASSORTED COLOUR BIRD ORNAMENT                     0.007665937
## PACK OF 72 RETRO SPOT CAKE CASES                  0.006142272
##                                    LUNCH BAG BLACK SKULL. LUNCH BAG SUKI DESIGN
## WHITE HANGING HEART T-LIGHT HOLDER            0.015427102           0.013998667
## REGENCY CAKESTAND 3 TIER                      0.007665937           0.008046853
## STRAWBERRY CERAMIC TRINKET BOX                0.010618036           0.009237216
## ASSORTED COLOUR BIRD ORNAMENT                 0.005047138           0.004142463
## PACK OF 72 RETRO SPOT CAKE CASES              0.008522998           0.009284830
##                                    HEART OF WICKER LARGE
## WHITE HANGING HEART T-LIGHT HOLDER           0.020664699
## REGENCY CAKESTAND 3 TIER                     0.009284830
## STRAWBERRY CERAMIC TRINKET BOX               0.007713551
## ASSORTED COLOUR BIRD ORNAMENT                0.007285020
## PACK OF 72 RETRO SPOT CAKE CASES             0.003952005
##                                    LOVE BUILDING BLOCK WORD
## WHITE HANGING HEART T-LIGHT HOLDER              0.021902676
## REGENCY CAKESTAND 3 TIER                        0.008665841
## STRAWBERRY CERAMIC TRINKET BOX                  0.009237216
## ASSORTED COLOUR BIRD ORNAMENT                   0.008332540
## PACK OF 72 RETRO SPOT CAKE CASES                0.007856395
##                                    REX CASH+CARRY JUMBO SHOPPER
## WHITE HANGING HEART T-LIGHT HOLDER                  0.013046377
## REGENCY CAKESTAND 3 TIER                            0.004380535
## STRAWBERRY CERAMIC TRINKET BOX                      0.004809066
## ASSORTED COLOUR BIRD ORNAMENT                       0.004713837
## PACK OF 72 RETRO SPOT CAKE CASES                    0.003142558
##                                    RED HANGING HEART T-LIGHT HOLDER
## WHITE HANGING HEART T-LIGHT HOLDER                      0.036710789
## REGENCY CAKESTAND 3 TIER                                0.006237501
## STRAWBERRY CERAMIC TRINKET BOX                          0.007665937
## ASSORTED COLOUR BIRD ORNAMENT                           0.006380345
## PACK OF 72 RETRO SPOT CAKE CASES                        0.003809161
##                                    JUMBO SHOPPER VINTAGE RED PAISLEY
## WHITE HANGING HEART T-LIGHT HOLDER                       0.011141796
## REGENCY CAKESTAND 3 TIER                                 0.009427674
## STRAWBERRY CERAMIC TRINKET BOX                           0.007427864
## ASSORTED COLOUR BIRD ORNAMENT                            0.005237596
## PACK OF 72 RETRO SPOT CAKE CASES                         0.007142177
##                                    JUMBO BAG STRAWBERRY HEART OF WICKER SMALL
## WHITE HANGING HEART T-LIGHT HOLDER          0.014998572           0.019855252
## REGENCY CAKESTAND 3 TIER                    0.009665746           0.010237120
## STRAWBERRY CERAMIC TRINKET BOX              0.010427578           0.009094372
## ASSORTED COLOUR BIRD ORNAMENT               0.005380440           0.006761261
## PACK OF 72 RETRO SPOT CAKE CASES            0.009522903           0.005189982
##                                    HOT WATER BOTTLE TEA AND SYMPATHY
## WHITE HANGING HEART T-LIGHT HOLDER                       0.014189125
## REGENCY CAKESTAND 3 TIER                                 0.009046757
## STRAWBERRY CERAMIC TRINKET BOX                           0.010808494
## ASSORTED COLOUR BIRD ORNAMENT                            0.004666222
## PACK OF 72 RETRO SPOT CAKE CASES                         0.006475574
##                                    PARTY BUNTING PLEASE ONE PERSON METAL SIGN
## WHITE HANGING HEART T-LIGHT HOLDER   0.014427197                  0.017045996
## REGENCY CAKESTAND 3 TIER             0.011665556                  0.006808875
## STRAWBERRY CERAMIC TRINKET BOX       0.010665651                  0.009475288
## ASSORTED COLOUR BIRD ORNAMENT        0.006094658                  0.005142367
## PACK OF 72 RETRO SPOT CAKE CASES     0.009903819                  0.006047043
##                                    SWEETHEART CERAMIC TRINKET BOX
## WHITE HANGING HEART T-LIGHT HOLDER                    0.015998476
## REGENCY CAKESTAND 3 TIER                              0.012236930
## STRAWBERRY CERAMIC TRINKET BOX                        0.037901152
## ASSORTED COLOUR BIRD ORNAMENT                         0.004904295
## PACK OF 72 RETRO SPOT CAKE CASES                      0.008761070
##                                    VINTAGE SNAP CARDS
## WHITE HANGING HEART T-LIGHT HOLDER        0.012427388
## REGENCY CAKESTAND 3 TIER                  0.008427769
## STRAWBERRY CERAMIC TRINKET BOX            0.009427674
## ASSORTED COLOUR BIRD ORNAMENT             0.005380440
## PACK OF 72 RETRO SPOT CAKE CASES          0.008284925
##                                    SCOTTIE DOG HOT WATER BOTTLE
## WHITE HANGING HEART T-LIGHT HOLDER                  0.014855728
## REGENCY CAKESTAND 3 TIER                            0.006285116
## STRAWBERRY CERAMIC TRINKET BOX                      0.008332540
## ASSORTED COLOUR BIRD ORNAMENT                       0.005237596
## PACK OF 72 RETRO SPOT CAKE CASES                    0.005618513
##                                    LUNCH BAG SPACEBOY DESIGN
## WHITE HANGING HEART T-LIGHT HOLDER               0.010427578
## REGENCY CAKESTAND 3 TIER                         0.006189887
## STRAWBERRY CERAMIC TRINKET BOX                   0.005808971
## ASSORTED COLOUR BIRD ORNAMENT                    0.004570993
## PACK OF 72 RETRO SPOT CAKE CASES                 0.006523188
##                                    BAKING SET 9 PIECE RETROSPOT
## WHITE HANGING HEART T-LIGHT HOLDER                  0.008475383
## REGENCY CAKESTAND 3 TIER                            0.005713742
## STRAWBERRY CERAMIC TRINKET BOX                      0.006189887
## ASSORTED COLOUR BIRD ORNAMENT                       0.004190077
## PACK OF 72 RETRO SPOT CAKE CASES                    0.010522807
##                                    JUMBO BAG BAROQUE BLACK WHITE
## WHITE HANGING HEART T-LIGHT HOLDER                   0.012379773
## REGENCY CAKESTAND 3 TIER                             0.007904009
## STRAWBERRY CERAMIC TRINKET BOX                       0.008999143
## ASSORTED COLOUR BIRD ORNAMENT                        0.004285306
## PACK OF 72 RETRO SPOT CAKE CASES                     0.006189887
head(ct_lift, 5)
##                                    WHITE HANGING HEART T-LIGHT HOLDER
## WHITE HANGING HEART T-LIGHT HOLDER                                 NA
## REGENCY CAKESTAND 3 TIER                                     1.345092
## STRAWBERRY CERAMIC TRINKET BOX                               2.073846
## ASSORTED COLOUR BIRD ORNAMENT                                1.976708
## PACK OF 72 RETRO SPOT CAKE CASES                             1.666483
##                                    REGENCY CAKESTAND 3 TIER
## WHITE HANGING HEART T-LIGHT HOLDER                 1.345092
## REGENCY CAKESTAND 3 TIER                                 NA
## STRAWBERRY CERAMIC TRINKET BOX                     1.952613
## ASSORTED COLOUR BIRD ORNAMENT                      1.618787
## PACK OF 72 RETRO SPOT CAKE CASES                   1.754960
##                                    STRAWBERRY CERAMIC TRINKET BOX
## WHITE HANGING HEART T-LIGHT HOLDER                       2.073846
## REGENCY CAKESTAND 3 TIER                                 1.952613
## STRAWBERRY CERAMIC TRINKET BOX                                 NA
## ASSORTED COLOUR BIRD ORNAMENT                            1.404774
## PACK OF 72 RETRO SPOT CAKE CASES                         2.979007
##                                    ASSORTED COLOUR BIRD ORNAMENT
## WHITE HANGING HEART T-LIGHT HOLDER                      1.976708
## REGENCY CAKESTAND 3 TIER                                1.618787
## STRAWBERRY CERAMIC TRINKET BOX                          1.404774
## ASSORTED COLOUR BIRD ORNAMENT                                 NA
## PACK OF 72 RETRO SPOT CAKE CASES                        1.644463
##                                    PACK OF 72 RETRO SPOT CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                         1.666483
## REGENCY CAKESTAND 3 TIER                                   1.754960
## STRAWBERRY CERAMIC TRINKET BOX                             2.979007
## ASSORTED COLOUR BIRD ORNAMENT                              1.644463
## PACK OF 72 RETRO SPOT CAKE CASES                                 NA
##                                    60 TEATIME FAIRY CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                    1.934193
## REGENCY CAKESTAND 3 TIER                              1.984463
## STRAWBERRY CERAMIC TRINKET BOX                        3.508257
## ASSORTED COLOUR BIRD ORNAMENT                         1.746673
## PACK OF 72 RETRO SPOT CAKE CASES                      6.722834
##                                    HOME BUILDING BLOCK WORD
## WHITE HANGING HEART T-LIGHT HOLDER                 2.403031
## REGENCY CAKESTAND 3 TIER                           1.890369
## STRAWBERRY CERAMIC TRINKET BOX                     2.107089
## ASSORTED COLOUR BIRD ORNAMENT                      2.758274
## PACK OF 72 RETRO SPOT CAKE CASES                   1.902446
##                                    JUMBO BAG RED RETROSPOT LUNCH BAG RED SPOTTY
## WHITE HANGING HEART T-LIGHT HOLDER                1.503389             1.788781
## REGENCY CAKESTAND 3 TIER                          2.092746             1.545043
## STRAWBERRY CERAMIC TRINKET BOX                    2.156600             2.691594
## ASSORTED COLOUR BIRD ORNAMENT                     1.346885             1.232516
## PACK OF 72 RETRO SPOT CAKE CASES                  1.731981             4.145663
##                                    JUMBO STORAGE BAG SUKI
## WHITE HANGING HEART T-LIGHT HOLDER               1.690732
## REGENCY CAKESTAND 3 TIER                         1.920807
## STRAWBERRY CERAMIC TRINKET BOX                   2.604630
## ASSORTED COLOUR BIRD ORNAMENT                    1.423361
## PACK OF 72 RETRO SPOT CAKE CASES                 2.789663
##                                    PACK OF 60 PINK PAISLEY CAKE CASES
## WHITE HANGING HEART T-LIGHT HOLDER                           1.743778
## REGENCY CAKESTAND 3 TIER                                     2.493487
## STRAWBERRY CERAMIC TRINKET BOX                               3.171034
## ASSORTED COLOUR BIRD ORNAMENT                                1.943182
## PACK OF 72 RETRO SPOT CAKE CASES                             6.886536
##                                    WOODEN FRAME ANTIQUE WHITE
## WHITE HANGING HEART T-LIGHT HOLDER                   2.955649
## REGENCY CAKESTAND 3 TIER                             1.878762
## STRAWBERRY CERAMIC TRINKET BOX                       2.168050
## ASSORTED COLOUR BIRD ORNAMENT                        2.099131
## PACK OF 72 RETRO SPOT CAKE CASES                     1.685491
##                                    LUNCH BAG BLACK SKULL. LUNCH BAG SUKI DESIGN
## WHITE HANGING HEART T-LIGHT HOLDER               1.840417              1.671507
## REGENCY CAKESTAND 3 TIER                         1.501275              1.577287
## STRAWBERRY CERAMIC TRINKET BOX                   2.561220              2.230146
## ASSORTED COLOUR BIRD ORNAMENT                    1.413024              1.160787
## PACK OF 72 RETRO SPOT CAKE CASES                 2.391221              2.607300
##                                    HEART OF WICKER LARGE
## WHITE HANGING HEART T-LIGHT HOLDER              2.507987
## REGENCY CAKESTAND 3 TIER                        1.849836
## STRAWBERRY CERAMIC TRINKET BOX                  1.892872
## ASSORTED COLOUR BIRD ORNAMENT                   2.074911
## PACK OF 72 RETRO SPOT CAKE CASES                1.128000
##                                    LOVE BUILDING BLOCK WORD
## WHITE HANGING HEART T-LIGHT HOLDER                 2.670418
## REGENCY CAKESTAND 3 TIER                           1.734427
## STRAWBERRY CERAMIC TRINKET BOX                     2.277161
## ASSORTED COLOUR BIRD ORNAMENT                      2.384140
## PACK OF 72 RETRO SPOT CAKE CASES                   2.252686
##                                    REX CASH+CARRY JUMBO SHOPPER
## WHITE HANGING HEART T-LIGHT HOLDER                    1.6143148
## REGENCY CAKESTAND 3 TIER                              0.8897923
## STRAWBERRY CERAMIC TRINKET BOX                        1.2031775
## ASSORTED COLOUR BIRD ORNAMENT                         1.3688165
## PACK OF 72 RETRO SPOT CAKE CASES                      0.9144859
##                                    RED HANGING HEART T-LIGHT HOLDER
## WHITE HANGING HEART T-LIGHT HOLDER                         4.580821
## REGENCY CAKESTAND 3 TIER                                   1.277684
## STRAWBERRY CERAMIC TRINKET BOX                             1.934129
## ASSORTED COLOUR BIRD ORNAMENT                              1.868384
## PACK OF 72 RETRO SPOT CAKE CASES                           1.117826
##                                    JUMBO SHOPPER VINTAGE RED PAISLEY
## WHITE HANGING HEART T-LIGHT HOLDER                          1.400801
## REGENCY CAKESTAND 3 TIER                                    1.945758
## STRAWBERRY CERAMIC TRINKET BOX                              1.888234
## ASSORTED COLOUR BIRD ORNAMENT                               1.545345
## PACK OF 72 RETRO SPOT CAKE CASES                            2.111773
##                                    JUMBO BAG STRAWBERRY HEART OF WICKER SMALL
## WHITE HANGING HEART T-LIGHT HOLDER             1.887477              2.566651
## REGENCY CAKESTAND 3 TIER                       1.996781              2.172363
## STRAWBERRY CERAMIC TRINKET BOX                 2.653297              2.377031
## ASSORTED COLOUR BIRD ORNAMENT                  1.588993              2.051122
## PACK OF 72 RETRO SPOT CAKE CASES               2.818361              1.577803
##                                    HOT WATER BOTTLE TEA AND SYMPATHY
## WHITE HANGING HEART T-LIGHT HOLDER                          1.857671
## REGENCY CAKESTAND 3 TIER                                    1.944326
## STRAWBERRY CERAMIC TRINKET BOX                              2.861205
## ASSORTED COLOUR BIRD ORNAMENT                               1.433675
## PACK OF 72 RETRO SPOT CAKE CASES                            1.993824
##                                    PARTY BUNTING PLEASE ONE PERSON METAL SIGN
## WHITE HANGING HEART T-LIGHT HOLDER      1.892565                     2.240519
## REGENCY CAKESTAND 3 TIER                2.512103                     1.469146
## STRAWBERRY CERAMIC TRINKET BOX          2.828960                     2.518195
## ASSORTED COLOUR BIRD ORNAMENT           1.876249                     1.586214
## PACK OF 72 RETRO SPOT CAKE CASES        3.055392                     1.869239
##                                    SWEETHEART CERAMIC TRINKET BOX
## WHITE HANGING HEART T-LIGHT HOLDER                       2.125942
## REGENCY CAKESTAND 3 TIER                                 2.669367
## STRAWBERRY CERAMIC TRINKET BOX                          10.183470
## ASSORTED COLOUR BIRD ORNAMENT                            1.529402
## PACK OF 72 RETRO SPOT CAKE CASES                         2.737949
##                                    VINTAGE SNAP CARDS
## WHITE HANGING HEART T-LIGHT HOLDER           1.651401
## REGENCY CAKESTAND 3 TIER                     1.838436
## STRAWBERRY CERAMIC TRINKET BOX               2.533074
## ASSORTED COLOUR BIRD ORNAMENT                1.677888
## PACK OF 72 RETRO SPOT CAKE CASES             2.589147
##                                    SCOTTIE DOG HOT WATER BOTTLE
## WHITE HANGING HEART T-LIGHT HOLDER                     1.987991
## REGENCY CAKESTAND 3 TIER                               1.380692
## STRAWBERRY CERAMIC TRINKET BOX                         2.254595
## ASSORTED COLOUR BIRD ORNAMENT                          1.644844
## PACK OF 72 RETRO SPOT CAKE CASES                       1.768224
##                                    LUNCH BAG SPACEBOY DESIGN
## WHITE HANGING HEART T-LIGHT HOLDER                  1.413908
## REGENCY CAKESTAND 3 TIER                            1.377792
## STRAWBERRY CERAMIC TRINKET BOX                      1.592603
## ASSORTED COLOUR BIRD ORNAMENT                       1.454523
## PACK OF 72 RETRO SPOT CAKE CASES                    2.080143
##                                    BAKING SET 9 PIECE RETROSPOT
## WHITE HANGING HEART T-LIGHT HOLDER                     1.150377
## REGENCY CAKESTAND 3 TIER                               1.273106
## STRAWBERRY CERAMIC TRINKET BOX                         1.698768
## ASSORTED COLOUR BIRD ORNAMENT                          1.334674
## PACK OF 72 RETRO SPOT CAKE CASES                       3.358982
##                                    JUMBO BAG BAROQUE BLACK WHITE
## WHITE HANGING HEART T-LIGHT HOLDER                      1.697648
## REGENCY CAKESTAND 3 TIER                                1.779285
## STRAWBERRY CERAMIC TRINKET BOX                          2.495209
## ASSORTED COLOUR BIRD ORNAMENT                           1.379079
## PACK OF 72 RETRO SPOT CAKE CASES                        1.996242

10 Similarity and Clustering

Hierarchical clustering based on Jaccard distance was applied to a random sample of transactions.

While the dendrogram technically represents transaction similarities, it is difficult to interpret visually due to:

As a result, the dendrogram does not provide clear, actionable clusters in its current form.

10.1 Transaction similarity (Jaccard)

trans_sample <- trans[sample(seq_along(trans), SIM_SAMPLE_N)]

d_trans  <- dissimilarity(trans_sample, method = "jaccard", items = FALSE)
hc_trans <- hclust(d_trans, method = "ward.D2")

plot(hc_trans, main = "Dendrogram: Transaction Similarity (Jaccard)")

10.2 Item similarity on top items (Jaccard)

A similar clustering approach was applied to the most frequent items in the dataset.

Although the dendrogram captures item-level similarity based on co-occurrence patterns, it suffers from the same limitations:

  • Excessive visual complexity,
  • Label overcrowding,
  • Limited interpretability for practical decision-making.

This highlights an important methodological limitation of hierarchical clustering when applied to high-dimensional retail data.

top_items_sim <- names(sort(itemFrequency(trans), decreasing = TRUE))[1:ITEM_SIM_TOPN]

d_items  <- dissimilarity(trans[, top_items_sim], method = "jaccard", items = TRUE)
hc_items <- hclust(d_items, method = "ward.D2")

plot(hc_items, main = paste0("Dendrogram: Item Similarity (Top ", ITEM_SIM_TOPN, ")"))

11 Category Aggregation

This section maps products into broad categories (using simple keyword rules), aggregates transactions by category, and mines association rules on categories.

to_category <- function(x) {
  x <- toupper(x)
  dplyr::case_when(
    str_detect(x, "CHRISTMAS|XMAS|NOEL|SANTA") ~ "CHRISTMAS",
    str_detect(x, "HEART")                    ~ "HEART_THEME",
    str_detect(x, "BAG|TOTE|JUMBO")           ~ "BAGS",
    str_detect(x, "MUG|CUP|TEA|COFFEE")       ~ "DRINKWARE",
    str_detect(x, "CANDLE|T-LIGHT|TEALIGHT|LANTERN") ~ "CANDLES_LIGHT",
    str_detect(x, "WRAP|RIBBON|TAG|CARD")     ~ "GIFT_WRAP",
    str_detect(x, "PLATE|BOWL|KITCHEN|PAN|BAKE") ~ "KITCHEN",
    str_detect(x, "TOY|GAME|PLAY")            ~ "TOYS",
    TRUE                                      ~ "OTHER"
  )
}
top_prod <- names(sort(itemFrequency(trans), decreasing = TRUE))[1:CAT_PARAMS$top_products]
trans_top_prod <- trans[, top_prod]

itemInfo(trans_top_prod) <- data.frame(
  labels   = itemLabels(trans_top_prod),
  category = sapply(itemLabels(trans_top_prod), to_category),
  stringsAsFactors = FALSE
)

trans_cat <- aggregate(trans_top_prod, by = "category")
summary(trans_cat)
## transactions as itemMatrix in sparse format with
##  21002 rows (elements/itemsets/transactions) and
##  9 columns (items) and a density of 0.3012676 
## 
## most frequent items:
##       OTHER HEART_THEME   DRINKWARE        BAGS   GIFT_WRAP     (Other) 
##       16203       10038        7271        7213        6042       10178 
## 
## element (itemset/transaction) length distribution:
## sizes
##    0    1    2    3    4    5    6    7    8    9 
## 2503 3821 3915 3950 3209 1942 1004  426  196   36 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   1.000   3.000   2.711   4.000   9.000 
## 
## includes extended item information - examples:
##          labels      category
## 1          BAGS          BAGS
## 2 CANDLES_LIGHT CANDLES_LIGHT
## 3     CHRISTMAS     CHRISTMAS
inspect(head(trans_cat, 5))
##     items                                     
## [1] {DRINKWARE, OTHER}                        
## [2] {}                                        
## [3] {HEART_THEME, OTHER}                      
## [4] {DRINKWARE, GIFT_WRAP, HEART_THEME, OTHER}
## [5] {BAGS, HEART_THEME}
rules_cat <- apriori(
  trans_cat,
  parameter = list(
    supp   = CAT_PARAMS$supp,
    conf   = CAT_PARAMS$conf,
    minlen = 2,
    maxlen = 3
  ),
  control = list(verbose = FALSE)
)

rules_cat <- rules_cat[!is.redundant(rules_cat)]

summary(rules_cat)
## set of 119 rules
## 
## rule length distribution (lhs + rhs):sizes
##  2  3 
## 35 84 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.000   2.000   3.000   2.706   3.000   3.000 
## 
## summary of quality measures:
##     support          confidence        coverage            lift      
##  Min.   :0.05004   Min.   :0.3010   Min.   :0.05238   Min.   :1.161  
##  1st Qu.:0.06687   1st Qu.:0.4767   1st Qu.:0.10132   1st Qu.:1.270  
##  Median :0.09475   Median :0.5828   Median :0.16422   Median :1.484  
##  Mean   :0.12001   Mean   :0.6287   Mean   :0.20816   Mean   :1.526  
##  3rd Qu.:0.14699   3rd Qu.:0.7385   3rd Qu.:0.26645   3rd Qu.:1.700  
##  Max.   :0.43443   Max.   :0.9823   Max.   :0.77150   Max.   :2.426  
##      count     
##  Min.   :1051  
##  1st Qu.:1404  
##  Median :1990  
##  Mean   :2520  
##  3rd Qu.:3087  
##  Max.   :9124  
## 
## mining info:
##       data ntransactions support confidence
##  trans_cat         21002    0.05        0.3
##                                                                                                                                                  call
##  apriori(data = trans_cat, parameter = list(supp = CAT_PARAMS$supp, conf = CAT_PARAMS$conf, minlen = 2, maxlen = 3), control = list(verbose = FALSE))
inspect(head(sort(rules_cat, by = "lift", decreasing = TRUE), 15))
##      lhs                           rhs             support    confidence
## [1]  {BAGS, DRINKWARE}          => {KITCHEN}       0.06185125 0.3766309 
## [2]  {DRINKWARE, GIFT_WRAP}     => {KITCHEN}       0.05247119 0.3581410 
## [3]  {GIFT_WRAP, KITCHEN}       => {DRINKWARE}     0.05247119 0.7155844 
## [4]  {BAGS, KITCHEN}            => {DRINKWARE}     0.06185125 0.7052117 
## [5]  {BAGS, HEART_THEME}        => {KITCHEN}       0.06423198 0.3089077 
## [6]  {HEART_THEME, KITCHEN}     => {DRINKWARE}     0.06951719 0.6860902 
## [7]  {DRINKWARE, HEART_THEME}   => {KITCHEN}       0.06951719 0.3035974 
## [8]  {CANDLES_LIGHT, GIFT_WRAP} => {DRINKWARE}     0.05004285 0.6750161 
## [9]  {GIFT_WRAP, HEART_THEME}   => {KITCHEN}       0.05199505 0.3009923 
## [10] {DRINKWARE, HEART_THEME}   => {CANDLES_LIGHT} 0.07932578 0.3464338 
## [11] {CHRISTMAS, OTHER}         => {GIFT_WRAP}     0.05470908 0.5424929 
## [12] {DRINKWARE, KITCHEN}       => {GIFT_WRAP}     0.05247119 0.5417896 
## [13] {BAGS, DRINKWARE}          => {CANDLES_LIGHT} 0.05670888 0.3453175 
## [14] {BAGS, CANDLES_LIGHT}      => {DRINKWARE}     0.05670888 0.6501092 
## [15] {GIFT_WRAP, HEART_THEME}   => {CANDLES_LIGHT} 0.05947053 0.3442668 
##      coverage   lift     count
## [1]  0.16422246 2.425637 1299 
## [2]  0.14650986 2.306556 1102 
## [3]  0.07332635 2.066938 1102 
## [4]  0.08770593 2.036977 1299 
## [5]  0.20793258 1.989476 1349 
## [6]  0.10132368 1.981745 1460 
## [7]  0.22897819 1.955275 1460 
## [8]  0.07413580 1.949758 1051 
## [9]  0.17274545 1.938497 1092 
## [10] 0.22897819 1.887368 1666 
## [11] 0.10084754 1.885706 1149 
## [12] 0.09684792 1.883261 1102 
## [13] 0.16422246 1.881286 1191 
## [14] 0.08722979 1.877815 1191 
## [15] 0.17274545 1.875562 1249
plot(
  head(sort(rules_cat, by = "lift", decreasing = TRUE), 30),
  method = "graph",
  engine = "htmlwidget"
)

12 CBA Feature Prep (Optional)

This section prepares a binary feature matrix from the top items and defines a simple class label based on basket size (upper quartile vs. the rest).

top_feat <- names(sort(itemFrequency(trans), decreasing = TRUE))[1:CBA_PARAMS$top_features]
trans_feat <- trans[, top_feat]

X <- as(trans_feat, "matrix")
X <- as.data.frame(ifelse(X > 0, 1, 0))

basket_size <- size(trans)
threshold   <- quantile(basket_size, 0.75)

class <- factor(ifelse(basket_size >= threshold, "LARGE_BASKET", "NORMAL_BASKET"))

cba_df <- cbind(class = class, X) %>%
  mutate(across(everything(), as.factor))

dplyr::glimpse(cba_df)
## Rows: 21,002
## Columns: 81
## $ class                                <fct> NORMAL_BASKET, NORMAL_BASKET, NOR…
## $ `WHITE HANGING HEART T-LIGHT HOLDER` <fct> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, …
## $ `REGENCY CAKESTAND 3 TIER`           <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `STRAWBERRY CERAMIC TRINKET BOX`     <fct> 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `ASSORTED COLOUR BIRD ORNAMENT`      <fct> 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PACK OF 72 RETRO SPOT CAKE CASES`   <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `60 TEATIME FAIRY CAKE CASES`        <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `HOME BUILDING BLOCK WORD`           <fct> 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `JUMBO BAG RED RETROSPOT`            <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `LUNCH BAG RED SPOTTY`               <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `JUMBO STORAGE BAG SUKI`             <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PACK OF 60 PINK PAISLEY CAKE CASES` <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `WOODEN FRAME ANTIQUE WHITE`         <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `LUNCH BAG BLACK SKULL.`             <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `LUNCH BAG SUKI DESIGN`              <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `HEART OF WICKER LARGE`              <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `LOVE BUILDING BLOCK WORD`           <fct> 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `REX CASH+CARRY JUMBO SHOPPER`       <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `RED HANGING HEART T-LIGHT HOLDER`   <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `JUMBO SHOPPER VINTAGE RED PAISLEY`  <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `JUMBO BAG STRAWBERRY`               <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `HEART OF WICKER SMALL`              <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `HOT WATER BOTTLE TEA AND SYMPATHY`  <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PARTY BUNTING`                      <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PLEASE ONE PERSON METAL SIGN`       <fct> 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `SWEETHEART CERAMIC TRINKET BOX`     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `VINTAGE SNAP CARDS`                 <fct> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, …
## $ `SCOTTIE DOG HOT WATER BOTTLE`       <fct> 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, …
## $ `LUNCH BAG SPACEBOY DESIGN`          <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `BAKING SET 9 PIECE RETROSPOT`       <fct> 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, …
## $ `JUMBO BAG BAROQUE BLACK WHITE`      <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PAPER CHAIN KIT 50'S CHRISTMAS`     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `WOODEN PICTURE FRAME WHITE FINISH`  <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `HANGING HEART ZINC T-LIGHT HOLDER`  <fct> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, …
## $ `LUNCH BAG CARS BLUE`                <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `LUNCH BAG WOODLAND`                 <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `SET/20 RED SPOTTY PAPER NAPKINS`    <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `CHOCOLATE HOT WATER BOTTLE`         <fct> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, …
## $ `ANTIQUE SILVER TEA GLASS ETCHED`    <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `ZINC METAL HEART DECORATION`        <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `SMALL POPCORN HOLDER`               <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `SET/5 RED SPOTTY LID GLASS BOWLS`   <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `GIN + TONIC DIET METAL SIGN`        <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `72 SWEETHEART FAIRY CAKE CASES`     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `FELTCRAFT 6 FLOWER FRIENDS`         <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `BATHROOM METAL SIGN`                <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, …
## $ `RECYCLING BAG RETROSPOT`            <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `NATURAL SLATE HEART CHALKBOARD`     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PACK OF 72 SKULL CAKE CASES`        <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `6 RIBBONS RUSTIC CHARM`             <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `VINTAGE UNION JACK BUNTING`         <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PINK CREAM FELT CRAFT TRINKET BOX`  <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `HAND OVER THE CHOCOLATE SIGN`       <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `LUNCH BAG PINK RETROSPOT`           <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `RED WOOLLY HOTTIE WHITE HEART.`     <fct> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, …
## $ `JUMBO BAG PINK WITH WHITE SPOTS`    <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `VICTORIAN GLASS HANGING T-LIGHT`    <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `CREAM HEART CARD HOLDER`            <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PAPER BUNTING RETRO SPOTS`          <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `RED SPOTTY CHARLOTTE BAG`           <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `JUMBO BAG PINK VINTAGE PAISLEY`     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `RETRO SPOT TEA SET CERAMIC 11 PC`   <fct> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, …
## $ `WOODLAND CHARLOTTE BAG`             <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ POSTAGE                              <fct> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, …
## $ `JUMBO BAG SCANDINAVIAN PAISLEY`     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `VINTAGE HEADS AND TAILS CARD GAME`  <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `RED GINGHAM ROSE JEWELLERY BOX`     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `DOTCOM POSTAGE`                     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `COOK WITH WINE METAL SIGN`          <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PACK OF 6 BIRDY GIFT TAGS`          <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `RED TOADSTOOL LED NIGHT LIGHT`      <fct> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, …
## $ `PACK OF 60 DINOSAUR CAKE CASES`     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `HANGING HEART JAR T-LIGHT HOLDER`   <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `WOOD S/3 CABINET ANT WHITE FINISH`  <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `FELTCRAFT BUTTERFLY HEARTS`         <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `PAPER CHAIN KIT VINTAGE CHRISTMAS`  <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `RED RETROSPOT CAKE STAND`           <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `JUMBO BAG OWLS`                     <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `ROUND SNACK BOXES SET OF4 WOODLAND` <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `NO SINGING METAL SIGN`              <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `STRAWBERRY CHARLOTTE BAG`           <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …

12.1 Train/test split and CBA

In this step, we apply Classification Based on Associations (CBA), which combines association rule mining with classification. Unlike standard Apriori rules that aim to discover general co-purchase patterns, CBA learns class association rules (CARs) that predict a predefined target label.

n <- nrow(cba_df)
train_id <- sample(seq_len(n), size = floor(CBA_PARAMS$split * n))

train <- cba_df[train_id, ]
test  <- cba_df[-train_id, ]

cba_model <- CBA(
  class ~ .,
  data    = train,
  supp    = CBA_PARAMS$supp,
  conf    = CBA_PARAMS$conf,
  pruning = "M1"
)

pred <- predict(cba_model, test)
caret::confusionMatrix(reference = test$class, data = pred)

inspect(cba_model$rules)

13 Conclusion

This report demonstrated a complete market basket analysis workflow on retail transaction data.

Key takeaways:

Overall, association rule mining proves to be a powerful and interpretable technique for understanding customer purchasing behavior and supporting data-driven decisions in retail analytics.