Cos’è la market basket analysis?

Analisi del carrello in R

Christopher Bruffaerts

Statistician

Più carrelli al supermercato

Cosa c’è nel negozio?

all_products_emoticons

Carrello 1: {"Bread", "Cheese"}

Carrello 2: {"Bread", "Wine" , "Cheese"}

Più carrelli

Se 100 clienti visitano il supermercato, possiamo trovare articoli che ricorrono insieme?

Esempio: Bread e Cheese

pane_formaggio

Risultato: “se questo, allora quello”

Analisi del carrello in R

Applicazioni della market basket

Imparare da più carrelli

carrelli

Applicazioni

  • E-commerce: “chi ha comprato questo ha comprato anche questo”
  • Retail: articoli “in bundle o esposti insieme”
  • Social: suggerimenti di amici e contatti
  • Video e film: raccomandazioni
Analisi del carrello in R

Più carrelli in R

Crea un dataset con più carrelli!

my_baskets = data.frame(
  "Basket" = c(1,1,1,1, 2,2,2, 3,3, 4,4,4, 5,5, 6,6, 7,7),
  "Product" = c("Bread", "Cheese", "Cheese", "Cheese",
                "Bread", "Butter", "Wine",
                "Butter", "Butter",
                "Butter", "Wine", "Wine",
                "Butter", "Cheese",
                "Cheese", "Wine",
                "Wine", "Wine")
)

Uno sguardo ai carrelli

head(my_baskets)
  Basket Product
1      1   Bread
2      1  Cheese
3      1  Cheese
4      1  Cheese
5      2   Bread
6      2  Butter
Analisi del carrello in R

Cosa c’è nei nostri carrelli?

Domande

  • Quanti articoli distinti ci sono?
n_distinct(my_baskets$Product)
[1] 4
  • Quanti carrelli ci sono?
n_distinct(my_baskets$Basket)
[1] 7
  • Quanti articoli ci sono in ogni carrello?
df_basket =
  my_baskets %>%
  group_by(Basket) %>%
  summarize(
    n_total = n(),
    n_items = n_distinct(Product))
  Basket n_total n_items
   <dbl>   <int>   <int>
1      1       4       2
2      2       3       3
Analisi del carrello in R

Quanto sono grandi i carrelli?

Dimensione media del carrello

basket_size %>% 
  summarize(
    avg_total_items = mean(n_total), 
    avg_dist_items = mean(n_items))
# A tibble: 1 x 2
  avg_total_items avg_dist_items
            <dbl>          <dbl>
1            2.57           1.86

Distribuzione della dimensione

# Distribuzione degli articoli distinti
ggplot(df_basket, aes(n_items)) +
  geom_bar()

distribuzione_carrello

Analisi del carrello in R

Prodotti specifici nei carrelli

Quale articolo stai analizzando?

  • Quante volte compare in tutti i carrelli?

  • In quanti carrelli è presente?

Esempio:

formaggio

Filtrare Cheese in R

# Numero di carrelli con Cheese
my_baskets %>%
  filter(Product == "Cheese")  %>%
  summarize(
    n_tot_items = n(),
    n_basket_item = n_distinct(Basket))
  n_tot_items n_basket_item
1           5             3
Analisi del carrello in R

Association rule mining

Association rule mining: trovare associazioni frequenti tra insiemi di articoli.

emoticons_arrows

Esempi di regole:

  • {Bread} $\rightarrow$ {Butter}
  • {Bread, Cheese} $\rightarrow$ {Wine}
Analisi del carrello in R

Cosa arriva dopo?

Agenda per il resto del corso:

  • Capitolo 2: Metriche e tecniche nella market basket analysis
  • Capitolo 3: Visualizzazione nella market basket analysis
  • Capitolo 4: Caso d’uso: consigli di film con MovieLens

movie_lens_logo

Analisi del carrello in R

Giochiamo con i carrelli!

Analisi del carrello in R

Preparing Video For Download...