Cursus
L'extraction de règles d'association est devenue incontournable pour les entreprises qui souhaitent comprendre les comportements clients et les habitudes d'achat. Cette technique repère les articles souvent achetés ensemble, aidant à optimiser l'implantation des produits, les promotions et les recommandations. Ce type d'analyse affine les stratégies en mettant en lumière des tendances dissimulées dans les données de transactions.
L'algorithme Apriori est une méthode populaire pour extraire ces règles d'association, grâce à sa simplicité et à ses résultats concrets. Contrairement à d'autres approches plus complexes, Apriori est facile à appréhender, idéal pour débuter et efficace en conditions réelles.
Cet article explique l'algorithme Apriori, illustre son fonctionnement avec des exemples clairs et vous montre comment l'utiliser efficacement. Pour mettre en pratique des concepts d'apprentissage automatique, découvrez notre Machine Learning Scientist in Python career track.
Qu'est-ce que l'algorithme Apriori ?
Comme vous le verrez dans notre tutoriel sur l'extraction de règles d'association en Python, Apriori est un algorithme conçu pour extraire des itemsets fréquents à partir de bases de transactions et générer des règles d'association. Il s'appuie sur le principe suivant : si un itemset est fréquent, alors tous ses sous-ensembles le sont aussi. Cette hypothèse réduit le nombre d'itemsets à évaluer et rend le processus plus efficace.
Itemsets et transactions
Un jeu de données pour Apriori se compose généralement de transactions, où chaque transaction regroupe des articles achetés ensemble. Par exemple, les ventes d'un supermarché peuvent inclure des transactions comme :
- Lait, pain, beurre
- Lait, couches, bière, pain
- Couches, bière, beurre
Chacune de ces transactions représente un panier d'articles achetés en une seule fois. Notre cours Market Basket Analysis in Python détaille davantage la mise en pratique de ce concept en Python.

Support, confiance et lift
L'extraction de règles d'association repose sur trois indicateurs clés :
Support : la fréquence à laquelle un article apparaît dans le jeu de données. Il se calcule comme suit :

Confiance : la probabilité que l'article B soit acheté lorsque l'article A est acheté, donnée par :

Lift : la force d'une règle, mesurant à quel point l'article B est plus susceptible d'être acheté lorsque l'article A l'est, comparé à un achat indépendant :

Une valeur de lift supérieure à 1 suggère une association positive forte entre les articles.
Comment fonctionne l'algorithme Apriori
Voyons maintenant comment fonctionne l'algorithme Apriori.

Processus étape par étape
- Génération d'itemsets candidats : l'algorithme commence par identifier les articles individuels et compter leurs occurrences pour déterminer les items fréquents.
- Élagage selon le support minimal : les itemsets dont le support est inférieur au seuil minimal sont supprimés.
- Génération d'itemsets fréquents : l'algorithme crée des itemsets plus grands en combinant des itemsets plus petits fréquents, en itérant jusqu'à ce qu'aucun autre itemset fréquent ne puisse être formé.
- Extraction des règles d'association : il extrait des règles sur la base des valeurs de confiance et de lift afin d'identifier des relations pertinentes.
Exemple pas à pas
Considérons un jeu de transactions :
- Lait, pain
- Lait, beurre
- Lait, pain, beurre
- Pain, beurre
Avec un support minimal de 50 %, l'algorithme identifie les itemsets fréquents et extrait des règles comme :
- Lait → pain : confiance : 66,7 %
- Pain → beurre : confiance : 66,7 %
Ces règles aident les entreprises à comprendre les comportements d'achat et à optimiser leurs stocks.
Implémenter l'algorithme Apriori en Python
Dans cette section, vous apprenez à implémenter l'algorithme Apriori en Python.
Préparer l'environnement
Pour utiliser Apriori en Python, installez les bibliothèques nécessaires :
pip install mlxtend pandas
Charger et préparer les données
L'étape suivante consiste à charger les packages et préparer les données :
import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules
# Expanded dataset
data = {
'Milk': [1, 1, 0, 1, 0, 1, 0, 1, 1, 0],
'Bread': [1, 0, 1, 1, 1, 0, 1, 0, 1, 1],
'Butter': [0, 1, 1, 1, 1, 1, 0, 1, 1, 0],
'Eggs': [1, 0, 0, 1, 1, 1, 1, 0, 0, 1],
'Cheese': [0, 1, 1, 0, 1, 1, 0, 1, 0, 1],
'Diaper': [0, 1, 0, 1, 0, 1, 1, 1, 0, 0],
'Beer': [1, 0, 1, 0, 1, 0, 1, 0, 1, 1]
}
df = pd.DataFrame(data)
Appliquer l'algorithme Apriori
Appliquez ensuite l'algorithme.
# Generating frequent itemsets
frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)
Puis, obtenez les règles d'association :
# Generating frequent itemsets
frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)
# Generating association rules
rules = association_rules(frequent_itemsets, metric='confidence', min_threshold=0.6)
print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])
antecedents consequents support confidence lift
0 (Butter) (Milk) 0.5 0.714286 1.190476
1 (Milk) (Butter) 0.5 0.833333 1.190476
2 (Bread) (Eggs) 0.5 0.714286 1.190476
3 (Eggs) (Bread) 0.5 0.833333 1.190476
4 (Bread) (Beer) 0.6 0.857143 1.428571
5 (Beer) (Bread) 0.6 1.000000 1.428571
6 (Butter) (Cheese) 0.5 0.714286 1.190476
7 (Cheese) (Butter) 0.5 0.833333 1.190476
Les valeurs de support (0,5 à 0,6) indiquent que ces associations apparaissent dans 50 à 60 % de toutes les transactions.
Les scores de confiance (0,71 à 1,0) reflètent la fiabilité des règles, certaines comme Bière → pain étant certaines (confiance de 100 %).
Les valeurs de lift (~1,2 à 1,4) suggèrent des associations modérées mais pertinentes, indiquant que ces paires d'articles surviennent ensemble un peu plus souvent que le hasard.
Interpréter les résultats
Pour mieux comprendre les règles d'association générées par l'algorithme Apriori, on peut les visualiser avec Matplotlib. Un nuage de points permet d'examiner la confiance en fonction du lift, tandis qu'une carte thermique met en évidence le support de différentes combinaisons d'articles.
import matplotlib.pyplot as plt
import networkx as nx
# Scatter plot of confidence vs lift
plt.figure(figsize=(8,6))
plt.scatter(rules['confidence'], rules['lift'], alpha=0.7, color='b')
plt.xlabel('Confidence')
plt.ylabel('Lift')
plt.title('Confidence vs Lift in Association Rules')
plt.grid()
plt.show()
# Visualizing association rules as a network graph
G = nx.DiGraph()
for _, row in rules.iterrows():
G.add_edge(tuple(row['antecedents']), tuple(row['consequents']), weight=row['confidence'])
plt.figure(figsize=(10, 6))
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True, node_color='lightblue', edge_color='gray', node_size=3000, font_size=10)
edge_labels = {(tuple(row['antecedents']), tuple(row['consequents'])): f"{row['confidence']:.2f}"
for _, row in rules.iterrows()}
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
plt.title("Association Rules Network")
plt.show()
Le nuage de points aide à repérer les règles les plus solides, tandis que le graphe en réseau représente visuellement les associations entre articles. Ces insights orientent la prise de décision en retail, en recommandations et en détection de fraude.

Le nuage de points montre la relation entre la confiance et le lift pour les règles générées. Points clés :
- Les points sont répartis entre une confiance de 0,7 et 1,0.
- Les valeurs de lift se situent majoritairement entre 1,19 et 1,43, ce qui indique des associations pertinentes mais pas extrêmement fortes.
- Une confiance de 1,0 avec un lift de 1,43 (Bière → pain) suggère que chaque fois que de la bière est achetée, du pain est toujours présent dans la transaction : une règle hautement fiable.

Le graphe en réseau représente visuellement les associations entre différents articles :
- Lait et beurre sont fortement associés : les clients qui achètent l'un ont de fortes chances d'acheter l'autre.
- Pain et œufs présentent une relation similaire, indiquant un schéma d'achat courant.
- Bière et pain affichent la confiance la plus élevée (1,0) : dans toutes les transactions contenant de la bière, du pain est toujours présent.
Applications de l'algorithme Apriori
Les entreprises utilisent largement l'algorithme Apriori pour résoudre divers problèmes. Découvrons-les ci-dessous.
Analyse de paniers d'achat
Les distributeurs s'appuient sur Apriori pour analyser les schémas d'achat et organiser les produits afin d'encourager les achats combinés. Par exemple, si le pain et le beurre apparaissent fréquemment ensemble, le magasin peut les placer à proximité pour stimuler les ventes. Pour en savoir plus, consultez notre tutoriel d'analyse de paniers d'achat avec R.
Systèmes de recommandation
Les plateformes en ligne utilisent Apriori pour recommander des produits sur la base d'achats antérieurs. Si un client achète un ordinateur portable, on peut lui suggérer des accessoires comme une souris ou un clavier.
Détection d'anomalies
En détection de fraude, Apriori repère des transactions inhabituelles en les comparant aux schémas attendus. Si une opération par carte bancaire s'écarte fortement des règles établies, elle peut déclencher un contrôle de sécurité. En détection d'anomalies, même si Apriori n'est pas directement conçu pour identifier les anomalies, il peut aider à détecter des combinaisons d'articles rares ou inattendues qui s'écartent nettement des habitudes d'achat.

Avantages et limites
L'utilisation d'Apriori présente plusieurs avantages et inconvénients, comme détaillé ci-dessous.
Avantages
Apriori est simple à comprendre et efficace pour découvrir des itemsets fréquents dans des jeux de données structurés. Il est largement utilisé dans des secteurs comme la distribution et la santé pour la découverte de motifs.
Limites
L'algorithme devient lent sur de grands volumes de données, car il génère de nombreux itemsets candidats. Dans les cas de données massives, des méthodes alternatives comme FP-Growth offrent de meilleures performances.

Conclusion
Apriori demeure l'une des techniques les plus utiles pour découvrir des associations dans les données. Malgré ses défis en calcul, il fournit des insights précieux que les entreprises exploitent pour améliorer l'expérience client et accroître les ventes.
S'il n'est pas toujours le plus rapide sur de grands jeux de données, il reste un outil essentiel en data mining, analytique et apprentissage automatique. Pour aller plus loin, explorez le machine learning avec Python et progressez vers le métier de machine learning scientist avec notre Machine Learning Scientist in Python career track.
FAQ sur l'algorithme Apriori
À quoi sert l'algorithme Apriori ?
L'algorithme Apriori est utilisé en data mining pour identifier des itemsets fréquents et générer des règles d'association à partir de grands jeux de données. Il s'applique couramment à l'analyse de paniers d'achat, aux systèmes de recommandation et à la détection de fraude.
Comment fonctionne l'algorithme Apriori ?
Apriori commence par identifier les articles individuels fréquemment présents dans le jeu de données, puis génère des itemsets plus grands à partir de ceux-ci. Il élimine les itemsets qui ne respectent pas un seuil minimal de support et dérive des règles d'association à l'aide des métriques de confiance et de lift.
Qu'est-ce que le support, la confiance et le lift dans Apriori ?
Support : la fréquence d'un itemset dans le jeu de données.
Confiance : la probabilité qu'un article apparaisse dans une transaction étant donné la présence d'un autre article.
Lift : la force de l'association, indiquant si des articles sont achetés ensemble plus souvent que prévu.
Quelles sont les limites de l'algorithme Apriori ?
Apriori peut être lent sur de grands jeux de données en raison du grand nombre d'itemsets candidats générés. Il a aussi du mal avec les jeux de données denses, où de nombreux articles apparaissent fréquemment ensemble. L'algorithme FP-Growth est une alternative plus performante dans ces cas.
Quelle est la différence entre Apriori et FP-Growth ?
Apriori génère des itemsets candidats et vérifie leur support de manière itérative, ce qui est coûteux en calcul. FP-Growth, lui, utilise une structure en arbre pour réduire le nombre de candidats, ce qui le rend plus rapide sur de grands jeux de données.