Combinaisons d'articles

Analyse des paniers d'achats en R

Christopher Bruffaerts

Statistician

Retour à l'épicerie

Qu'y a-t-il en magasin ?

tous_les_produits_émoticônes

Qu'est-ce qui vous tente aujourd'hui ?

pain_3fromages

{"Bread", "Cheese", "Cheese", "Cheese"}

Cible de l'analyse des paniers

pain_fromage

{"Bread", "Cheese"}

Analyse des paniers d'achats en R

Sous‑ensembles et sur‑ensembles

Mon magasin — ensemble

X = {"Bread", "Butter", "Cheese", "Wine"}

tous_les_produits_émoticônes

Sous‑ensembles de X — itemsets

  • Taille 0 : { ${ \emptyset }$ }
  • Taille 1 : {"Bread"}, {"Wine"}, ...
  • Taille 2 : {"Bread", "Wine"}, ...

Sur‑ensembles

  • {"Bread", "Butter"} sur‑ensemble de {"Bread"}
  • {"Bread", "Butter", "Cheese", "Wine"} sur‑ensemble de {"Bread", "Butter"}
Analyse des paniers d'achats en R

Graphe d'itemsets

Question :

Quel est l'ensemble de tous les sous‑ensembles possibles de X ?

X = {A, B, C, D}

graphe_itemsets

Analyse des paniers d'achats en R

Intersections et unions

  • Intersection

{"Bread"} $\cap$ {"Butter"} = $\emptyset$

{"Bread", "Butter"} $\cap$ {"Butter", "Wine"} = {"Butter"}

library(dplyr)
A = c("Bread", "Butter")
B = c("Bread", "Wine")
intersect(A,B)
[1] "Bread"
  • Union

{"Bread"} $\cup$ {"Butter"} = {"Bread", "Butter"}

union(A,B)
[1] "Bread"  "Butter" "Wine"
Analyse des paniers d'achats en R

Combien de paniers de taille k ?

Question :

Combien de sous‑ensembles possibles de taille k à partir d'un ensemble de taille n ?

« n choose k »

$${n \choose k} = \dfrac{n!}{(n-k)! k!},$$ où

$n! = n \times (n-1) \times (n-2) \times ...\times 2 \times 1$

Exemple :

Nombre de paniers avec 2 articles distincts du magasin :

tous_les_produits_émoticônes

$${4 \choose 2} = \dfrac{4!}{(4-2)! 2!} = 6$$

Analyse des paniers d'achats en R

Combien de paniers possibles ?

Question

Combien de paniers possibles peut‑on créer à partir d'un ensemble de taille n ?

Binôme de Newton

$$\sum_{k=0}^n{n \choose k} = 2^n$$

2^(n_items)

Exemple

Nombre total de paniers :

$$2^4 = 16$$

tous_les_produits_émoticônes

Analyse des paniers d'achats en R

Combien de paniers en R ?

Combinaisons en R

n_items = 4
basket_size = 2
choose(n_items, basket_size)
[1] 6
# Parcourir toutes les valeurs possibles
store = matrix(NA, nrow=5, ncol=2)
for (i in 0:n_items){
  store[i+1,] = c(i, choose(n_items,i))}

Résultat

colnames(store)=c("size", "nb_combi")
store
     size nb_combi
[1,]    0        1
[2,]    1        4
[3,]    2        6
[4,]    3        4
[5,]    4        1
Analyse des paniers d'achats en R

Tracer le nombre de combinaisons

Se faire une idée de la rapidité de croissance du nombre de combinaisons

n_items = 50
fun_nk = function(x) choose(n_items, x)
# Tracé
ggplot(data = data.frame(x = 0),
    mapping = aes(x=x))+
  stat_function(fun = fun_nk)+
  xlim(0, n_items)+
  xlab("Taille du sous-ensemble")+
  ylab("Nombre de sous-ensembles")

distribution_combinaisons

Analyse des paniers d'achats en R

Prêt à compter ?

Analyse des paniers d'achats en R

Preparing Video For Download...