Accueil / Factory / Algos ML / Motifs séquentiels (PrefixSpan) — factory / algos ML / fouille de séquences

MOTIFS SÉQUENTIELS.

Une analyse du panier qui tient compte de l'ordre. PrefixSpan cherche les enchaînements qui reviennent dans des milliers de parcours : pages vues avant un achat, produits achetés après un premier achat, étapes d'un dossier. Les étapes n'ont pas besoin d'être consécutives : « produit, puis plus tard panier » compte même avec des pages entre les deux.

SéquencesParcours clientNon superviséWeb analyticsNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceTrouve tous les enchaînements fréquents, sans en expliquer la cause
InterprétabilitéDes parcours lisibles : « catégorie > produit > panier »
VitesseRapide grâce aux bases projetées, plus lent à support bas
Facilité de réglageSupport et longueur maximale à calibrer ensemble
Tolérance aux données brutesExige des événements ordonnés et un identifiant de parcours
EN 30 SECONDES

On relit 3 000 parcours de visiteurs comme des phrases. On cherche les suites de mots qui reviennent souvent dans le même ordre, même quand d'autres mots s'intercalent.

1. On compte les étapes fréquentes

On garde les pages vues dans au moins x % des sessions : ce sont les motifs de longueur 1.

2. On projette sur la suite

Pour chaque motif fréquent, on ne garde de chaque session que ce qui suit sa première occurrence. C'est la base projetée : bien plus petite que les données de départ.

3. On prolonge récursivement

Dans la base projetée, les pages fréquentes prolongent le motif : « produit » devient « produit > panier », puis « produit > panier > paiement ». On s'arrête quand plus rien n'atteint le support minimum.

LE CAS MÉTIER

parcours client · e-commerce / banque en ligne
EN ENTRÉE

3 000 sessions web

Une ligne par page vue : identifiant de session, rang de l'étape, type de page (accueil, catégorie, produit, panier, paiement, confirmation, sortie).

EN SORTIE

Les parcours qui reviennent, chiffrés

Sur le jeu d'exemple, 181 motifs dépassent 5 % des sessions. On y lit les habitudes de navigation (37 % des sessions passent d'une catégorie à une fiche produit, 21 % comparent plusieurs produits) et l'entonnoir d'achat : 20 % mettent au panier, 13 % atteignent le paiement, 8 % confirment.

CE QU'ON MESURE

Le support et les pertes entre étapes

Le support d'un motif est la part des sessions qui le contiennent. En comparant deux motifs successifs, on mesure les abandons : un tiers des sessions qui atteignent le paiement ne vont pas jusqu'à la confirmation. C'est là qu'il faut chercher d'abord.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Parcours web ou application : pages vues avant un achat ou un abandon
  • Historique d'achats client : ce qui est acheté après un premier produit
  • Processus métier : étapes d'un dossier de crédit, d'un sinistre, d'une réclamation
  • Besoin de résultats lisibles pour des équipes produit ou marketing

NON

  • L'ordre ne compte pas (produits d'un même panier) : Apriori ou FP-Growth suffisent
  • Prévoir la prochaine étape avec une probabilité : utiliser une chaîne de Markov
  • Délais entre étapes essentiels (relance à J+7) : ajouter des contraintes de délai, comme maxgap dans cspade
  • Parcours très longs et très variés : le nombre de motifs explose, raccourcir ou regrouper les étapes
LES 3 RÉGLAGES QUI COMPTENT

Noms donnés pour R (arulesSequences, algorithme SPADE) et pour la version Python écrite à la main.

support / support_min

Part minimale de sessions contenant le motif. Il contrôle à la fois le temps de calcul et la quantité de motifs à lire. 5 % est raisonnable sur quelques milliers de sessions.

maxlen / long_max

Nombre maximal d'étapes dans un motif. 3 ou 4 étapes suffisent pour la plupart des analyses de parcours et évitent l'explosion combinatoire.

Contraintes de délai : maxgap, mingap

En R, cspade peut imposer un écart maximal entre deux étapes du motif. Sans cette contrainte, « produit » vu au début et « panier » vu vingt pages plus loin comptent comme un enchaînement.

LE CODE MINIMAL

jeu d'exemple : parcours_web.csv ↓
# Parcours web : motifs séquentiels en R
library(arulesSequences)

parcours <- read.csv("parcours_web.csv")
parcours <- parcours[order(parcours$id_session, parcours$etape), ]

# Une transaction par page vue, rattachée à sa session et à son rang
seqs <- as(as.list(parcours$page), "transactions")
transactionInfo(seqs) <- data.frame(sequenceID = parcours$id_session, eventID = parcours$etape)

# Pas de PrefixSpan de référence sur CRAN : cspade (algorithme SPADE) trouve les mêmes motifs
motifs <- cspade(seqs, parameter = list(support = 0.05, maxlen = 4),
                 control = list(verbose = FALSE))
res <- as(motifs, "data.frame")
cat(nrow(res), "motifs fréquents\n")

# On écarte accueil et sortie, présents dans toutes les sessions
utiles <- res[grepl("},{", res$sequence, fixed = TRUE) & !grepl("accueil|sortie", res$sequence), ]
print(head(utiles[order(-utiles$support), ], 6))

# L'entonnoir d'achat, retrouvé sans l'avoir décrit à l'algorithme
entonnoir <- c("<{produit},{panier}>", "<{produit},{panier},{paiement}>",
               "<{produit},{panier},{paiement},{confirmation}>")
print(res[res$sequence %in% entonnoir, ])

QUESTIONS FRÉQUENTES

Quelle différence entre règles d'association et motifs séquentiels ?

Les règles d'association regardent ce qui est présent ensemble dans un même panier, sans ordre. Les motifs séquentiels regardent l'ordre dans le temps : A puis B n'est pas le même motif que B puis A.

Quelle différence entre PrefixSpan et SPADE ?

Les deux trouvent les mêmes motifs séquentiels fréquents. PrefixSpan prolonge les motifs en projetant les séquences sur leur suffixe. SPADE stocke, pour chaque motif, la liste des séquences et positions où il apparaît et les croise, à la manière d'Eclat.

Comment faire du PrefixSpan en Python ?

Le package prefixspan sur PyPI en propose une implémentation. L'algorithme est aussi assez court pour être écrit à la main, comme dans l'exemple de cette fiche. Sur de très gros volumes, Spark MLlib propose une version distribuée.

LES ALGOS VOISINS

à comparer avant de choisir
sans notion d'ordre

Apriori

Cherche ce qui est acheté ensemble dans un même panier, pas ce qui vient avant ou après.

Voir la fiche →
pour prévoir l'étape suivante

Chaînes de Markov

Donne la probabilité de passer d'une page à une autre. Moins de motifs à lire, mais un modèle qui prédit.

Voir la fiche →
le cousin rapide

FP-Growth

Même logique de motifs fréquents, sur des paniers sans ordre. Utile quand l'ordre n'apporte rien.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →