Wat is market-basketanalyse?

Market Basket-analyse in R

Christopher Bruffaerts

Statistician

Meerdere mandjes in de supermarkt

Wat is er in de winkel?

alle_producten_emoticons

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

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

Meerdere mandjes

Als 100 klanten de supermarkt bezoeken, kunnen we dan items vinden die vaak samen voorkomen?

Voorbeeld: Bread en Cheese

bread_cheese

Resultaat: “als dit, dan dat”

Market Basket-analyse in R

Toepassingen van market-basketanalyse

Leren van meerdere mandjes

mandjes

Toepassingen

  • E-commerce: “klanten die dit kochten, kochten ook dat”
  • Retail: items die “gebundeld of samen geplaatst” worden
  • Social media: vrienden- en connectieaanbevelingen
  • Video- en filmaanbevelingen
Market Basket-analyse in R

Meerdere mandjes in R

Maak een dataset met meerdere mandjes!

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")
)

Een kijkje in mijn mandjes

head(my_baskets)
  Basket Product
1      1   Bread
2      1  Cheese
3      1  Cheese
4      1  Cheese
5      2   Bread
6      2  Butter
Market Basket-analyse in R

Wat zit er in onze mandjes?

Vragen

  • Hoeveel unieke items zijn er?
n_distinct(my_baskets$Product)
[1] 4
  • Hoeveel mandjes zijn er?
n_distinct(my_baskets$Basket)
[1] 7
  • Hoeveel items zitten er per mandje?
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
Market Basket-analyse in R

Hoe groot zijn mandjes?

Gemiddelde mandgrootte

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

Verdeling van mandgrootte

# Verdeling van unieke items
ggplot(df_basket, aes(n_items)) +
  geom_bar()

verdeling_mand

Market Basket-analyse in R

Specifieke producten in de mandjes

Welk item bekijk je?

  • Hoe vaak komt een item voor in alle mandjes?

  • In hoeveel mandjes zit dat item?

Voorbeeld:

kaas

Filteren op Cheese in R

# Aantal mandjes met 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
Market Basket-analyse in R

Association rule mining

Association rule mining: het vinden van vaak samen voorkomende verbanden tussen items.

emoticons_pijlen

Voorbeeld van regel-extractie:

  • {Bread} $\rightarrow$ {Butter}
  • {Bread, Cheese} $\rightarrow$ {Wine}
Market Basket-analyse in R

Wat komt er hierna?

Agenda voor de rest van de cursus:

  • Hoofdstuk 2: Metrieken & technieken in market-basketanalyse
  • Hoofdstuk 3: Visualisatie in market-basketanalyse
  • Hoofdstuk 4: Casus: filmrecommendaties @ MovieLens

movie_lens_logo

Market Basket-analyse in R

Laten we spelen met mandjes!

Market Basket-analyse in R

Preparing Video For Download...