« Qui achète du pain achète du beurre. » Apriori parcourt des milliers de tickets de caisse et en sort des règles « si A, alors souvent B », chiffrées. C'est l'algorithme historique de l'analyse du panier, utilisé pour l'implantation en rayon, les promotions croisées et les recommandations simples.
Un chef de rayon qui feuillette 4 000 tickets et note ce qui revient ensemble. Sa règle d'or : inutile de chercher les combinaisons contenant un produit rare, elles seront rares aussi.
On garde les produits présents dans au moins x % des tickets : c'est le support minimum.
Les paires ne sont construites qu'à partir de produits fréquents, les triplets qu'à partir de paires fréquentes, et ainsi de suite. C'est le principe « a priori » : un sous-ensemble d'une combinaison fréquente est forcément fréquent.
Pour chaque combinaison fréquente, on teste les règles « si A alors B ». On garde celles dont la confiance (part des tickets avec A qui contiennent aussi B) dépasse un seuil, et on les classe par lift.
Un fichier au format long : une ligne par ticket et par produit acheté, 28 produits alimentaires et ménagers. Ni prix, ni quantité : seulement la présence du produit dans le panier.
Avec un support de 5 % et une confiance de 50 %, on obtient 15 règles sur le jeu d'exemple. Par exemple, 66 % des acheteurs de bière prennent aussi des chips, soit 4 fois plus que la moyenne des clients. Le rayon et le service promo s'en servent pour l'implantation et les offres groupées.
La confiance seule trompe : le pain est dans 35 % des tickets, donc beaucoup de règles « → pain » ont une confiance correcte sans aucun lien réel. Le lift compare à ce hasard : 1 signifie aucun lien, 4 signifie quatre fois plus souvent qu'attendu. Au final, on valide par un test en magasin.
Noms donnés pour R (arules) et Python (mlxtend). Tout se joue sur les seuils.
Part minimale de tickets contenant la combinaison. Trop haut, on ne voit que les évidences ; trop bas, des milliers de règles et un calcul qui explose. Commencer autour de 1 à 5 % et ajuster.
Confiance minimale : part des tickets avec A qui contiennent aussi B. 50 % est un point de départ courant. Elle dépend du sens de la règle : A → B et B → A n'ont pas la même confiance.
Confiance divisée par la fréquence de B. On filtre sur un lift supérieur à 1, souvent 1,5 ou 2, pour éliminer les règles qui ne reflètent que la popularité d'un produit.
Taille des combinaisons. minlen = 2 évite les règles sans condition ; limiter la taille maximale à 3 ou 4 garde des règles actionnables et accélère le calcul.
# Analyse du panier : Apriori en R
library(arules)
# Format long (un produit par ligne) -> un panier par ticket
paniers <- read.transactions("tickets_caisse.csv", format = "single", sep = ",",
header = TRUE, cols = c("id_ticket", "produit"))
summary(paniers)
# Règles présentes dans au moins 5 % des tickets, vraies au moins une fois sur deux
regles <- apriori(paniers, parameter = list(supp = 0.05, conf = 0.5, minlen = 2),
control = list(verbose = FALSE))
cat("Nombre de règles :", length(regles), "\n")
# Les plus fortes d'abord : le lift mesure le gain par rapport au hasard
regles <- sort(regles, by = "lift")
inspect(head(regles, 8))
# Analyse du panier : Apriori en Python
import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules
tickets = pd.read_csv("tickets_caisse.csv")
# Format long -> une ligne par ticket, une colonne vrai/faux par produit
paniers = pd.crosstab(tickets["id_ticket"], tickets["produit"]) > 0
print(paniers.shape[0], "tickets,", paniers.shape[1], "produits")
# Combinaisons présentes dans au moins 5 % des tickets
frequents = apriori(paniers, min_support=0.05, use_colnames=True)
# Règles vraies au moins une fois sur deux
regles = association_rules(frequents, num_itemsets=len(paniers), metric="confidence", min_threshold=0.5)
print(len(frequents), "combinaisons fréquentes,", len(regles), "règles")
# Les plus fortes d'abord : le lift mesure le gain par rapport au hasard
regles = regles.sort_values("lift", ascending=False)
colonnes = ["antecedents", "consequents", "support", "confidence", "lift"]
print(regles[colonnes].head(8).round(2).to_string(index=False))
Le support est la part des tickets qui contiennent la combinaison. La confiance est la part des tickets avec A qui contiennent aussi B. Le lift divise la confiance par la fréquence de B : au-dessus de 1, A et B sont achetés ensemble plus souvent que par hasard.
On part d'un support qui correspond à un volume utile pour le métier, par exemple 1 % des tickets, puis on ajuste selon le nombre de règles obtenues. Un support trop bas fait exploser le temps de calcul et produit des règles fragiles.
Les deux trouvent exactement les mêmes combinaisons fréquentes. FP-Growth est beaucoup plus rapide sur de gros volumes ou avec un support bas. Apriori reste le plus simple à expliquer et suffit sur quelques milliers de tickets.
Compresse les tickets dans un arbre et évite de générer les candidats. Indispensable quand on baisse le support.
Voir la fiche → l'approche par listes de ticketsStocke pour chaque produit la liste des tickets qui le contiennent et croise ces listes. Rapide pour les combinaisons fréquentes.
Voir la fiche → quand l'ordre compteCherche ce qui est acheté après quoi, d'une visite à l'autre, et non dans le même panier.
Voir la fiche →Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.
Nous utilisons des cookies de mesure d'audience et de suivi publicitaire pour comprendre la fréquentation du site et l'efficacité de nos annonces. Rien n'est déposé sans votre accord. En savoir plus