sequence

cspade

Description

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.

sequence.cspade <result=results> <status=rc> / casout={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, eventId="variable-name", itemId="variable-name", maxGap=integer, maxLen=integer, maxSize=integer, minGap=integer, sequenceId="variable-name", support=double, supportCnt=64-bit-integer, table={caslib="string", computedOnDemand=TRUE | FALSE, computedVars={{ format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, computedVarsProgram="string", dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DELIMITED" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SOUND" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}, name="table-name", singlePass=TRUE | FALSE, vars={{ format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, where="where-expression", whereTable={casLib="string", dataSourceOptions={adls_noreq-parameters | bigquery-parameters | cas_noreq-parameters | clouddex-parameters | db2-parameters | dnfs-parameters | esp-parameters | fedsvr-parameters | gcs_noreq-parameters | hadoop-parameters | hana-parameters | impala-parameters | informix-parameters | jdbc-parameters | mongodb-parameters | mysql-parameters | odbc-parameters | oracle-parameters | path-parameters | postgres-parameters | redshift-parameters | s3-parameters | sapiq-parameters | sforce-parameters | singlestore_standard-parameters | snowflake-parameters | spark-parameters | spde-parameters | sqlserver-parameters | ss_noreq-parameters | teradata-parameters | vertica-parameters | yellowbrick-parameters}, importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DELIMITED" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SOUND" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}, name="table-name", vars={{ format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, where="where-expression"}};
Paramètres
ParamètreDescription
casoutSpécifie la table de sortie. La table de sortie contient les séquences fréquentes et le support de ces séquences.
eventIdSpécifie la colonne d'événement ou de temps de la table d'entrée.
itemIdSpécifie la colonne d'item de la table d'entrée.
maxGapSpécifie la différence de temps maximale entre les éléments consécutifs d'une séquence.
maxLenSpécifie le nombre maximal d'éléments d'une séquence.
maxSizeSpécifie le nombre maximal d'articles d'un élément d'une séquence.
minGapSpécifie la différence de temps minimale entre les elements consécutifs d'une séquence.
sequenceIdSpécifie la colonne de séquence ou de client de la table d'entrée.
supportSpécifie le niveau de support minimum pour une séquence (proportion).
supportCntSpécifie le nombre minimum de transactions qui doivent se produire pour une séquence (nombre absolu).
tableSpécifie la table d'entrée qui contient les séquences d'entrée pour l'analyse.
Préparation des Données Voir la fiche de ce code dataprep
Création des Données de Séquence

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é.

Copié !
1DATA 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 ;
18RUN;
19 
20PROC CASUTIL;
21 load DATA=sequences_data outcaslib="casuser" casout="sequences_table" replace;
22QUIT;

Exemples

Cet exemple exécute l'algorithme cSpade avec un support minimum de 50% pour trouver les séquences fréquentes.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC 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};
9RUN;
10QUIT;
Résultat :
Une table de sortie nommée 'frequent_sequences' est créée dans la caslib 'casuser', contenant les séquences qui apparaissent chez au moins 50% des clients.

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).

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC 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'};
13RUN;
14QUIT;
Résultat :
Une table nommée 'detailed_sequences' est créée. Elle contient les séquences trouvées chez au moins 2 clients, avec un écart de temps entre 5 et 20 unités entre les événements, un maximum de 2 articles par événement, and une longueur maximale de 3 événements par séquence.

FAQ

À quoi sert l'action `cspade` ?
Quels sont les paramètres requis pour l'action `cspade` ?
Que spécifie le paramètre `support` ?
Quelle est la différence entre les paramètres `maxGap` et `minGap` ?
Comment sont définies la longueur et la taille maximales d'une séquence ?
Comment puis-je spécifier la table de sortie ?