Panier croisé
L'idée en une phrase
- L'analyse du panier croisé (market basket analysis) cherche les produits achetés ensemble dans une même commande : produit A et produit B.
- Elle alimente les recommandations du type « souvent achetés ensemble », les offres groupées et l'implantation en magasin.
Fichier d'exercice
- PanierCroise_Depart : le modèle et les consignes. Jeu de données commun aux cas d'étude (2 456 commandes, 4 470 lignes, 24 produits).
- Corrigé : le PBIP PanierCroise_Corrige est remis par le formateur.
Les trois indicateurs
| Indicateur | Calcul | Lecture |
| Support | Commandes avec A et B / toutes les commandes | La paire est-elle fréquente ? |
| Confiance | Commandes avec A et B / commandes avec A | Quand on achète A, achète-t-on B ? |
| Lift | Confiance / part des commandes avec B | Au-dessus de 1, A « attire » B |
Le lift corrige l'effet des produits très vendus : un casque est présent dans un tiers des commandes, il a donc une confiance élevée avec presque tout, sans lien réel.
Étape 1 : une deuxième liste de produits
Pour croiser A et B dans une matrice, il faut deux axes produit. On crée une table calculée sans relation :
ProduitAssocie =
SELECTCOLUMNS (
Produit,
"Produit associé", Produit[Produit],
"Catégorie associée", Produit[Categorie]
)- Ne créez aucune relation entre ProduitAssocie et le reste du modèle : la mesure se charge de transmettre le filtre.
Étape 2 : les commandes qui contiennent A et B
Commandes A et B =
VAR a = SELECTEDVALUE ( Produit[Produit] )
VAR b = SELECTEDVALUE ( ProduitAssocie[Produit associé] )
VAR commandesA = VALUES ( Ventes[NumCommande] )
RETURN
IF (
NOT ISBLANK ( b ) && a <> b,
CALCULATE (
[Nb commandes],
commandesA,
REMOVEFILTERS ( Produit ),
TREATAS ( { b }, Produit[Produit] )
)
)commandesAest évaluée avant CALCULATE : ce sont les numéros des commandes qui contiennent le produit A.- Dans CALCULATE, on garde ces commandes, on retire le filtre sur A (
REMOVEFILTERS) et on applique B à la place (TREATAS) : il reste les commandes de A qui contiennent aussi B. - La diagonale (A = B) est laissée vide.
- Source (Microsoft Learn)
Étape 3 : les dénominateurs
Total commandes = CALCULATE ( [Nb commandes], REMOVEFILTERS ( Produit ) )
Commandes avec B =
CALCULATE (
[Nb commandes],
REMOVEFILTERS ( Produit ),
TREATAS ( VALUES ( ProduitAssocie[Produit associé] ), Produit[Produit] )
)Étape 4 : support, confiance et lift
Support = DIVIDE ( [Commandes A et B], [Total commandes] )
Confiance = DIVIDE ( [Commandes A et B], [Nb commandes] )
Lift = DIVIDE ( [Confiance], DIVIDE ( [Commandes avec B], [Total commandes] ) )- Dans
Confiance,[Nb commandes]est évalué avec le filtre sur A : c'est le nombre de commandes qui contiennent A.
Étape 5 : les visuels
- Matrice des paires : Produit[Produit] en lignes, ProduitAssocie[Produit associé] en colonnes, Commandes A et B en valeurs, avec une mise en forme conditionnelle.
- Page de recommandations : un segment sur Produit[Produit] (sélection unique) et un tableau ProduitAssocie[Produit associé], Commandes A et B, Support, Confiance, Lift, trié par lift décroissant.
Résultat attendu
Produit A = Vélo ville (306 commandes sur 2 456) :
| Produit associé | Commandes A et B | Confiance | Lift |
| Lampe avant | 109 | 36 % | 3,42 |
| Antivol | 166 | 54 % | 2,51 |
| Casque | 140 | 46 % | 1,37 |
- L'antivol est le plus souvent associé au vélo de ville, mais c'est la lampe avant qui a le plus fort lift : elle est rare dans l'ensemble des commandes, et fréquente avec ce vélo.
- Le casque a une confiance élevée avec presque tous les vélos, mais un lift plus faible : il se vend bien partout.
Pour aller plus loin
- Par catégorie : remplacez Produit[Produit] par Produit[Categorie] (et la colonne associée), en adaptant TREATAS.
- Seuil minimal : masquez les paires de moins de 10 commandes, dont le lift n'est pas fiable.