dataSciencePilot

featureMachine

Description

L'action `featureMachine` du jeu d'actions `dataSciencePilot` est un moteur automatisé de transformation et de génération de fonctionnalités. Elle effectue une analyse exploratoire des données, filtre les variables non pertinentes et génère de nouvelles fonctionnalités (features) pour améliorer la puissance prédictive des modèles. Elle gère automatiquement les valeurs manquantes, les valeurs aberrantes, la cardinalité et peut créer des interactions et des transformations polynomiales.

dataSciencePilot.featureMachine <result=results> <status=rc> / casout={caslib="string", indexVars={"variable-name-1" <, "variable-name-2", ...>}, lifetime=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE"}, copyVars={"variable-name-1" <, "variable-name-2", ...>}, distinctCountLimit=integer, ecdfTolerance=double, event="string", explorationPolicy={cardinality={lowMediumCutoff=double, mediumHighCutoff=double, minNObsPerTargetLevel=double}, cv={lowMoment=double, lowRobust=double}, dateTimeVariables={"variable-name-1" <, "variable-name-2", ...>}, dateVariables={"variable-name-1" <, "variable-name-2", ...>}, entropy={giniLowMediumCutoff=double, giniMediumHighCutoff=double, shannonLowMediumCutoff=double, shannonMediumHighCutoff=double}, iqv={highTopBottom=double, highTopTwo=double, highVariationRatio=double}, kurtosis={momentLowMediumCutoff=double, momentMediumHighCutoff=double, robustLowMediumCutoff=double, robustMediumHighCutoff=double}, missing={lowMediumCutoff=double, mediumHighCutoff=double}, nominal={cardinalityRatio=double, cardinalityThreshold=double, includeNegative=TRUE | FALSE, includeNonIntegral=TRUE | FALSE, intervals={"variable-name-1" <, "variable-name-2", ...>}, nominals={"variable-name-1" <, "variable-name-2", ...>} }, outlier={momentLowMediumCutoff=double, momentMediumHighCutoff=double, robustLowMediumCutoff=double, robustMediumHighCutoff=double}, skewness={momentLowMediumCutoff=double, momentMediumHighCutoff=double, robustLowMediumCutoff=double, robustMediumHighCutoff=double}, timeVariables={"variable-name-1" <, "variable-name-2", ...>} }, featureOut={caslib="string", indexVars={"variable-name-1" <, "variable-name-2", ...>}, lifetime=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE"}, freq="variable-name", inputs={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, misraGries=TRUE | FALSE, rankPolicy={intervalStat="AVGQUANKURT" | "AVGQUANSKEW" | "CLASSICALKURT" | "CLASSICALSKEW" | "ENTROPY" | "MI" | "NORMMI" | "PEARSON" | "SU", nominalStat="CHISQ" | "CRAMERSV" | "ENTROPY" | "FTEST" | "G2" | "IV" | "MI" | "NORMMI" | "SU", rankMissingIndicators=TRUE | FALSE, separateRank=TRUE | FALSE, topKInteractions=integer, topKSave=integer}, saveState={caslib="string", indexVars={"variable-name-1" <, "variable-name-2", ...>}, lifetime=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE"}, screenPolicy={constant=TRUE | FALSE, groupRareLevels=TRUE | FALSE, leakagePercentThreshold=double, lowCv=TRUE | FALSE, lowMutualInformation=double, missingIndicatorPercent=double, missingPercentThreshold=double, redundant=double}, seed=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 | ...}, importOptions={fileType="ANY" | ...}, name="table-name", vars={{...}, ...}, where="where-expression"}}, target="variable-name", transformationOut={caslib="string", indexVars={"variable-name-1" <, "variable-name-2", ...>}, lifetime=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE"}, transformationPolicy={cardinality=TRUE | FALSE, entropy=TRUE | FALSE, interaction=TRUE | FALSE, iqv=TRUE | FALSE, kurtosis=TRUE | FALSE, missing=TRUE | FALSE, outlier=TRUE | FALSE, polynomial=TRUE | FALSE, skewness=TRUE | FALSE}, weight="variable-name";
Paramètres
ParamètreDescription
tableSpécifie la table d'entrée contenant les données à analyser. (Requis)
targetSpécifie la variable cible pour l'apprentissage supervisé. (Requis)
featureOutSpécifie la table de sortie CAS qui contiendra les métadonnées des fonctionnalités générées. (Requis)
transformationOutSpécifie la table de sortie CAS qui contiendra les pipelines de transformation. (Requis)
casoutSpécifie la table de sortie pour les résultats d'analyse.
saveStateSpécifie la table de sortie pour sauvegarder le modèle de transformation (Analytic Store) pour le scoring futur.
inputsSpécifie les variables d'entrée à utiliser. Si non spécifié, toutes les variables sont utilisées sauf la cible.
nominalsSpécifie les variables à traiter comme nominales.
screenPolicyDéfinit les politiques pour filtrer les variables (ex: constantes, valeurs manquantes excessives, fuites d'information).
explorationPolicyDéfinit les paramètres pour l'exploration des données (ex: seuils de cardinalité, entropie, valeurs aberrantes).
transformationPolicyDéfinit les types de transformations à appliquer (ex: interactions, polynômes, traitement des valeurs manquantes).
rankPolicyDéfinit les statistiques utilisées pour classer et sélectionner les meilleures fonctionnalités.
copyVarsListe des variables à copier directement dans la table de sortie sans transformation.
freqVariable de fréquence pour les observations pondérées.
weightVariable de pondération pour l'analyse.
eventSpécifie le niveau d'événement cible pour les modèles de classification.
seedSpécifie la graine pour la génération de nombres aléatoires.
misraGriesActive l'algorithme Misra-Gries pour l'estimation approximative des fréquences si la limite de comptage distinct est atteinte.
distinctCountLimitLimite pour le comptage distinct exact avant de passer à l'approximation.
ecdfToleranceTolérance pour le calcul de la fonction de répartition cumulative empirique.
Préparation des Données Voir la fiche de ce code dataprep
Chargement des données HMEQ

Charge le jeu de données HMEQ (Home Equity) depuis la bibliothèque SASHELP vers la mémoire CAS.

Copié !
1 
2PROC CAS;
3 
4loadTable path="hmeq.csv" caslib="samples" casout="hmeq";
5 
6RUN;
7 

Exemples

Cet exemple génère automatiquement des fonctionnalités pour prédire la variable cible BAD à partir de la table HMEQ.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 dataSciencePilot.featureMachine /
3 TABLE={name="hmeq"},
4 target="BAD",
5 featureOut={name="features_out", replace=true},
6 transformationOut={name="transformations_out", replace=true};
7RUN;
Résultat :
L'action produit deux tables : 'features_out' décrivant les fonctionnalités créées et leur importance, et 'transformations_out' contenant la logique de transformation.

Cet exemple configure des politiques spécifiques pour la détection d'interactions, l'élimination des variables à forte cardinalité et le traitement des valeurs manquantes.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 dataSciencePilot.featureMachine /
3 TABLE={name="hmeq"},
4 target="BAD",
5 featureOut={name="features_adv", replace=true},
6 transformationOut={name="trans_adv", replace=true},
7 explorationPolicy={
8 cardinality={mediumHighCutoff=50},
9 missing={mediumHighCutoff=20}
10 },
11 screenPolicy={
12 missingPercentThreshold=80,
13 lowCv=TRUE
14 },
15 transformationPolicy={
16 interaction=TRUE,
17 polynomial=TRUE,
18 missing=TRUE
19 },
20 saveState={name="astore_model", replace=true};
21RUN;
Résultat :
Génère des fonctionnalités incluant des interactions et des polynômes, applique des filtres stricts sur les données manquantes, et sauvegarde le modèle de transformation dans un Analytic Store 'astore_model'.

FAQ

Quelle est la fonction principale de l'action featureMachine ?
Quels sont les paramètres de sortie requis pour stocker les résultats des pipelines ?
Comment sauvegarder le modèle généré pour une utilisation ultérieure ?
Quel paramètre permet de définir la variable cible de l'analyse ?
À quoi sert le paramètre screenPolicy ?
Comment contrôler les types de transformations générées ?
Quel est le rôle de l'algorithme Misra-Gries dans cette action ?
Comment configurer les statistiques utilisées pour le classement des fonctionnalités ?
Est-il possible d'utiliser une table pour filtrer les données d'entrée ?