sequence

cspade

##set_sequence

Description

L'action cspade est le Sherlock Holmes des séries temporellesSuite d'observations collectées à intervalles réguliers. L'analyse vise à identifier des tendances, des cycles ou une saisonnalité pour modéliser et prédire les comportements futurs. dans SAS Viya. Elle utilise l'algorithme %cSpade pour dénicher des motifs fréquents dans vos données séquentielles. Que vos clients achètent des couches puis de la bière (un grand classique du marketing), ou que vos machines affichent une série d'alertes avant de rendre l'âme, cspade analyse l'ordre et le temps pour extraire des motifs significatifs. C'est l'outil idéal pour le clickstream analysis ou la maintenance prédictive, car il ne se contente pas de voir ce qui est arrivé, il voit dans quel ordre cela s'est produit !

Syntaxe Officielle
sequence.cspade /
casout={caslib="string", compress=TRUE|FALSE, indexVars={"variable-name-1"}, label="string", name="table-name", replace=TRUE|FALSE},
eventId="variable-name",
itemId="variable-name",
maxGap=integer,
maxLen=integer,
maxSize=integer,
minGap=integer,
sequenceId="variable-name",
support=double,
supportCnt=64-bit-integer,
table={name="table-name", where="where-expression"};

Paramètres Clés

Nom du paramètre Description
casout Spécifie les paramètres de la %table de sortie qui contiendra les séquences fréquentes et leur score de support.
eventId Désigne la variable qui définit l'ordre chronologique ou logique (timestamp, date, numéro de transaction) au sein d'une séquence.
itemId Désigne la variable contenant l'identifiant de l'item ou de l'événement observé (ex: code produit, type d'erreur).
maxGap Définit l'écart temporel maximal autorisé entre deux éléments consécutifs d'une séquence pour qu'elle soit considérée comme valide.
maxLen Nombre maximal d'éléments (étapes) autorisés dans une séquence. La valeur par défaut est 10.
maxSize Nombre maximal d'items autorisés au sein d'un même élément de la séquence (pour les achats simultanés par exemple).
minGap Écart temporel minimal requis entre deux éléments consécutifs d'une séquence.
sequenceId Variable identifiant le sujet de la séquence (ex: ID client, ID capteur, ID session utilisateur).
support Seuil de support minimum exprimé en proportion (0 à 1). Une séquence doit apparaître dans au moins X% des cas pour être retenue.
supportCnt Seuil de support minimum exprimé en nombre absolu d'occurrences (comptage brut).
table Spécifie la %table CAS d'entrée contenant les données de transactions à analyser.

Préparation des données

Création d'un jeu de données de parcours client

Ce code génère une table simulant des achats effectués par différents clients à des moments différents pour tester l'analyse de séquences.

1DATA sequence_test;
2 INPUT client_id temps produit_id;
3 DATALINES;
41 1 100
51 2 200
61 3 300
72 1 100
82 2 300
93 1 200
103 2 300
114 1 100
124 2 200
134 3 300
145 1 400
15;
16RUN;
17PROC CAS;
18 TABLE.loadTable / path="sequence_test", casout={name="seq_data", replace=true};
19QUIT;

Exemples d'utilisation

Analyse de séquences basique

Identification des motifs de consommation apparaissant dans au moins 50% des parcours clients.

1PROC CAS;
2 sequence.cspade /
3 TABLE={name="seq_data"},
4 sequenceId="client_id",
5 eventId="temps",
6 itemId="produit_id",
7 support=0.5,
8 casout={name="motifs_frequents", replace=true};
9RUN;
10 TABLE.fetch / TABLE="motifs_frequents";
11QUIT;
Résultat Attendu :
Une table CAS 'motifs_frequents' listant les successions de produits les plus populaires avec leur indice de support.
Analyse avec contraintes temporelles et de longueur

Extraction de séquences complexes : on limite la longueur à 3 éléments, avec un écart de temps maximum de 2 unités entre les étapes.

1PROC CAS;
2 sequence.cspade /
3 TABLE={name="seq_data"},
4 sequenceId="client_id",
5 eventId="temps",
6 itemId="produit_id",
7 support=0.2,
8 maxGap=2,
9 maxLen=3,
10 maxSize=1,
11 casout={name="motifs_contraints", replace=true};
12RUN;
13 TABLE.fetch / TABLE="motifs_contraints";
14QUIT;
Résultat Attendu :
Une analyse plus fine ne retenant que les enchaînements rapides (gap < 2) et limitant la complexité des motifs extraits.