Effectue l'exploration de séquences à l'aide de l'algorithme cSpade. Cette action est utilisée pour découvrir des motifs séquentiels fréquents dans des données transactionnelles où chaque transaction a un horodatage. Elle est particulièrement utile pour l'analyse du comportement des clients, comme l'analyse de paniers d'achat au fil du temps.
| Paramètre | Description |
|---|---|
| casout | Spécifie la table de sortie. La table de sortie contient les séquences fréquentes et le support de ces séquences. |
| eventId | Spécifie la colonne d'événement ou de temps de la table d'entrée. |
| itemId | Spécifie la colonne d'item de la table d'entrée. |
| maxGap | Spécifie la différence de temps maximale entre les éléments consécutifs d'une séquence. |
| maxLen | Spécifie le nombre maximal d'éléments d'une séquence. |
| maxSize | Spécifie le nombre maximal d'articles d'un élément d'une séquence. |
| minGap | Spécifie la différence de temps minimale entre les elements consécutifs d'une séquence. |
| sequenceId | Spécifie la colonne de séquence ou de client de la table d'entrée. |
| support | Spécifie le niveau de support minimum pour une séquence (proportion). |
| supportCnt | Spécifie le nombre minimum de transactions qui doivent se produire pour une séquence (nombre absolu). |
| table | Spécifie la table d'entrée qui contient les séquences d'entrée pour l'analyse. |
Ce bloc de code crée un jeu de données d'exemple contenant des séquences de transactions client. Chaque ligne représente un article acheté par un client à un moment donné.
| 1 | DATA sequences_data; |
| 2 | INPUT customerID $ eventID $ itemID $; |
| 3 | DATALINES; |
| 4 | A 10 1 |
| 5 | A 20 2 |
| 6 | A 30 3 |
| 7 | B 15 1 |
| 8 | B 25 4 |
| 9 | C 10 1 |
| 10 | C 20 2 |
| 11 | C 25 5 |
| 12 | D 10 1 |
| 13 | D 30 3 |
| 14 | E 10 2 |
| 15 | E 20 4 |
| 16 | E 30 5 |
| 17 | ; |
| 18 | RUN; |
| 19 | |
| 20 | PROC CASUTIL; |
| 21 | load DATA=sequences_data outcaslib="casuser" casout="sequences_table" replace; |
| 22 | QUIT; |
Cet exemple exécute l'algorithme cSpade avec un support minimum de 50% pour trouver les séquences fréquentes.
| 1 | PROC CAS; |
| 2 | sequence.cspade / |
| 3 | TABLE={name='sequences_table'}, |
| 4 | sequenceId='customerID', |
| 5 | eventId='eventID', |
| 6 | itemId='itemID', |
| 7 | support=0.5, |
| 8 | casout={name='frequent_sequences', replace=true}; |
| 9 | RUN; |
| 10 | QUIT; |
Cet exemple utilise des paramètres supplémentaires pour affiner la recherche de séquences. Il spécifie un support par nombre (supportCnt), des contraintes sur l'écart de temps entre les événements (minGap, maxGap) et des limites sur la taille et la longueur des séquences (maxSize, maxLen).
| 1 | PROC CAS; |
| 2 | sequence.cspade / |
| 3 | TABLE={name='sequences_table'}, |
| 4 | sequenceId='customerID', |
| 5 | eventId='eventID', |
| 6 | itemId='itemID', |
| 7 | supportCnt=2, |
| 8 | minGap=5, |
| 9 | maxGap=20, |
| 10 | maxSize=2, |
| 11 | maxLen=3, |
| 12 | casout={name='detailed_sequences', replace=true, caslib='casuser'}; |
| 13 | RUN; |
| 14 | QUIT; |