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
table Spécifie la table d'entrée contenant les données à analyser. (Requis)
target Spécifie la variable cible pour l'apprentissage supervisé. (Requis)
featureOut Spécifie la table de sortie CAS qui contiendra les métadonnées des fonctionnalités générées. (Requis)
transformationOut Spécifie la table de sortie CAS qui contiendra les pipelines de transformation. (Requis)
casout Spécifie la table de sortie pour les résultats d'analyse.
saveState Spécifie la table de sortie pour sauvegarder le modèle de transformation (Analytic Store) pour le scoring futur.
inputs Spécifie les variables d'entrée à utiliser. Si non spécifié, toutes les variables sont utilisées sauf la cible.
nominals Spécifie les variables à traiter comme nominales.
screenPolicy Définit les politiques pour filtrer les variables (ex: constantes, valeurs manquantes excessives, fuites d'information).
explorationPolicy Définit les paramètres pour l'exploration des données (ex: seuils de cardinalité, entropie, valeurs aberrantes).
transformationPolicy Définit les types de transformations à appliquer (ex: interactions, polynômes, traitement des valeurs manquantes).
rankPolicy Définit les statistiques utilisées pour classer et sélectionner les meilleures fonctionnalités.
copyVars Liste des variables à copier directement dans la table de sortie sans transformation.
freq Variable de fréquence pour les observations pondérées.
weight Variable de pondération pour l'analyse.
event Spécifie le niveau d'événement cible pour les modèles de classification.
seed Spécifie la graine pour la génération de nombres aléatoires.
misraGries Active l'algorithme Misra-Gries pour l'estimation approximative des fréquences si la limite de comptage distinct est atteinte.
distinctCountLimit Limite pour le comptage distinct exact avant de passer à l'approximation.
ecdfTolerance Tolé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 ?