L'algorithme Apriori

Analyse des paniers d'achat en Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Compter les ensembles d'articles

$${n \choose k} = \frac{n!}{(n-k)!k!}$$

Nombre d'articles Taille de l'ensemble Combinaisons
3461 0 1
3461 1 3461
3461 2 5 987 530
3461 3 6 903 622 090
3461 4 5 968 181 296 805
Analyse des paniers d'achat en Python

Compter les ensembles d'articles

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

  • $n = 3461 \rightarrow 2^{3461}$
  • $2^{3461}>>10^{82}$
  • Nombre d'atomes dans l'univers : $10^{82}$.
Analyse des paniers d'achat en Python

Réduire le nombre d'ensembles

  • Impossible de considérer tous les ensembles.
    • Même les énumérer est impossible.
  • Comment écarter un ensemble sans même l'évaluer ?
    • On peut fixer une valeur maximale de $k$.
  • L'algorithme Apriori propose une autre approche.
    • N'exige pas l'énumération de tous les ensembles.
    • Règle judicieuse d'élagage.
Analyse des paniers d'achat en Python

Le principe d'Apriori

  • Principe d'Apriori.
    • Les sous-ensembles d'ensembles fréquents sont fréquents.
    • Conserver les ensembles connus comme fréquents.
    • Élaguer ceux qui ne sont pas connus comme fréquents.
  • Candles = Peu fréquent
    • -> {Candles, Signs} = Peu fréquent
  • {Candles, Signs} = Peu fréquent
    • -> {Candles, Signs Boxes} = Peu fréquent
  • {Candles, Signs, Boxes} = Peu fréquent
    • -> {Candles, Signs, Boxes, Bags} = Peu fréquent
Analyse des paniers d'achat en Python

Implantation d'Apriori

# Import Apriori algorithm
from mlxtend.frequent_patterns import apriori

# Load one-hot encoded novelty gifts data
onehot = pd.read_csv('datasets/online_retail_onehot.csv')

# Print header.
print(onehot.head())
    50'S CHRISTMAS GIFT BAG LARGE ...  ZINC WILLIE WINKIE  CANDLE STICK  \
0                           False ...              False   
1                           False ...              False   
2                           False ...              False   
3                           False ...              False   
4                           False ...              False
Analyse des paniers d'achat en Python

Implantation d'Apriori

# Compute frequent itemsets
frequent_itemsets = apriori(onehot, min_support = 0.0005, 
                            max_len = 4, use_colnames = True)

# Print number of itemsets
print(len(frequent_itemsets))
3652
Analyse des paniers d'achat en Python

Implantation d'Apriori

# Print itemsets
print(frequent_itemsets.head())
      support                          itemsets
0     0.000752  ( 50'S CHRISTMAS GIFT BAG LARGE)
1     0.001504              ( DOLLY GIRL BEAKER)
...
1500  0.000752  (PING MICROWAVE APRON, FOOD CONTAINER SET 3 LO...
1501  0.000752  (WOOD 2 DRAWER CABINET WHITE FINISH, FOOD CONT...
...
Analyse des paniers d'achat en Python

Passons à la pratique !

Analyse des paniers d'achat en Python

Preparing Video For Download...