decisionTree

forestTrain

Description

Entraîne un modèle de forêt aléatoire (Forest). Cette action construit un ensemble d'arbres de décision pour effectuer des tâches de classification ou de régression sur des données. Elle permet de gérer des paramètres avancés tels que l'échantillonnage bootstrap, la sélection aléatoire de variables à chaque nœud, et l'élagage. Cette action nécessite une licence SAS Visual Data Mining and Machine Learning.

decisionTree.forestTrain <result=results> <status=rc> / alpha=double, applyRowOrder=TRUE | FALSE, attributes={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, binOrder=TRUE | FALSE, bootstrap=double, 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", ...>}}, cfLev=double, code={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", ...>}}, comment=TRUE | FALSE, fmtWdth=integer, indentSize=integer, labelId=integer, lineSize=integer, noTrim=TRUE | FALSE, tabForm=TRUE | FALSE}, codeInteractions={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", ...>}}, comment=TRUE | FALSE, fmtWdth=integer, indentSize=integer, labelId=integer, lineSize=integer, noTrim=TRUE | FALSE, tabForm=TRUE | FALSE}, crit="CHAID" | "CHISQUARE" | "FTEST" | "GAIN" | "GAINRATIO" | "GINI" | "VARIANCE", encodeName=TRUE | FALSE, event={"string-1" <, "string-2", ...>}, eventFreq={double-1 <, double-2, ...>}, freq="variable-name", greedy=TRUE | FALSE, includeMissing=TRUE | FALSE, inputs={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, isolation=TRUE | FALSE, leafSize=integer, loh=integer, m=integer, maxBranch=integer, maxLevel=integer, mergeBin=TRUE | FALSE, minUseInSearch=integer, missing="MACSMALL" | "USEINSEARCH", modelId="string", nBins=integer, nBinsTarget=integer, nominals={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, nominalSearch={handling="CLASSIC" | "ENHANCED", maxCategories=64-bit-integer, shrinkage=double, sort=64-bit-integer, sortBy="COUNT" | "TARGET"}, nTree=integer, oob=TRUE | FALSE, prune=TRUE | FALSE, quantileBin=TRUE | FALSE, rbaImp=TRUE | FALSE, sampleN=double, saveState={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", ...>}}, seed=double, 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"}}, target="variable-name", varImp=TRUE | FALSE, varIntImp=integer, vote="MAJORITY" | "PROB", weight="variable-name";
Paramètres
ParamètreDescription
alphaSpécifie la valeur à utiliser pour l'élagage minimal de complexité de coût pour les arbres de régression.
applyRowOrderSpécifie l'utilisation d'un ordre de lignes prédéfini (nécessite orderby/groupby dans table.partition).
attributesSpécifie des attributs temporaires (format, label, etc.) à appliquer aux variables d'entrée.
binOrderPar défaut (Vrai), l'ordre des compartiments est préservé pour les variables numériques. Si Faux, l'ordre est ignoré.
bootstrapSpécifie la fraction des données utilisée pour l'échantillon bootstrap (valeur > 0 et <= 1).
casOutSpécifie la table de sortie où stocker le modèle d'arbre de décision.
cfLevSpécifie le niveau d'agressivité de l'élagage de l'arbre selon l'algorithme C4.5.
codeDemande la génération du code de scoring SAS.
codeInteractionsDemande la génération de code SAS pour créer des variables d'interaction (requiert varIntImp >= 2).
critSpécifie le critère de division pour chaque nœud (ex: GAIN, GINI, CHI2, VARIANCE).
encodeNameSpécifie s'il faut encoder les noms des variables générées (ex: probabilités) avec un préfixe simplifié.
eventSpécifie la valeur de l'événement de la variable cible pour le calcul des fréquences.
eventFreqSpécifie la fréquence pour l'événement spécifié, utile pour l'échantillonnage d'événements rares.
freqVariable numérique contenant la fréquence d'occurrence de chaque observation.
greedyPar défaut (Vrai), utilise une recherche exhaustive. Si Faux, utilise un algorithme rapide basé sur le clustering.
includeMissingPar défaut (Vrai), inclut les observations avec valeurs manquantes. Si Faux, elles sont ignorées.
inputsListe des variables d'entrée à utiliser pour l'entraînement.
isolationSpécifie si l'on entraîne une forêt d'isolation (détection d'anomalies).
leafSizeNombre minimum d'observations requises sur chaque nœud feuille.
lohNombre de variables à utiliser pour la division avec la méthode LOH.
mNombre de variables d'entrée candidates à considérer pour la division d'un nœud.
maxBranchNombre maximum de branches (enfants) autorisées par nœud.
maxLevelProfondeur maximale de l'arbre.
mergeBinFusionne les compartiments adjacents si leurs valeurs limites correspondent.
minUseInSearchSeuil d'observations manquantes pour déclencher la politique de recherche spécifique (avec missing='USEINSEARCH').
missingPolitique de gestion des valeurs manquantes (MACSMALL ou USEINSEARCH).
modelIdNom de la variable ID du modèle pour le code de scoring.
nBinsNombre de compartiments pour les variables numériques.
nBinsTargetNombre de compartiments pour la variable cible numérique.
nominalsListe des variables d'entrée à traiter comme nominales.
nominalSearchParamètres pour la méthode de recherche de division sur les variables nominales.
nTreeNombre d'arbres à créer dans la forêt.
oobCalcule l'erreur Out-Of-Bag (OOB) si activé.
pruneActive l'élagage des arbres (C4.5 ou coût-complexité).
quantileBinUtilise des quantiles pour les limites de compartiments au lieu de largeurs égales.
rbaImpActive le calcul de l'importance des variables par affectation aléatoire des branches (RBA).
sampleNSpécifie la taille de l'échantillon pour le bootstrap.
saveStateSpécifie la table de sortie pour sauvegarder le modèle au format aStore.
seedGraine pour le générateur de nombres aléatoires.
tableSpécifie la table d'entrée contenant les données d'entraînement.
targetNom de la variable cible.
varImpGénère les statistiques d'importance des variables.
varIntImpCalcule l'importance des interactions de variables (spécifier le degré).
voteStratégie de vote pour la classification (MAJORITY ou PROB).
weightVariable numérique contenant le poids des observations.
Préparation des Données Voir la fiche de ce code dataprep
Chargement des données Cars

Charge le jeu de données sashelp.cars dans la bibliothèque CAS utilisateur.

Copié !
1PROC CAS;
2 dataTransfer.loadTable /
3 caslib="sashelp"
4 path="cars.sashdat"
5 casOut={name="cars", replace=true};
6RUN;

Exemples

Entraîne une forêt aléatoire pour prédire l'origine des véhicules en utilisant des variables numériques.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 decisionTree.forestTrain RESULT=r /
3 TABLE={name="cars"},
4 target="Origin",
5 inputs={"MSRP", "Horsepower", "EngineSize", "Cylinders", "MPG_City"},
6 nTree=50,
7 seed=12345;
8RUN;
Résultat :
Un modèle de forêt contenant 50 arbres est créé. L'objet résultat 'r' contient les statistiques d'ajustement et les informations sur le modèle.

Entraîne une forêt avec calcul de l'erreur OOB, importance des variables, et sauvegarde le modèle dans une table aStore pour un scoring ultérieur.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 decisionTree.forestTrain RESULT=r /
3 TABLE={name="cars"},
4 target="Origin",
5 inputs={"MSRP", "Horsepower", "EngineSize", "Cylinders", "MPG_City", "Weight", "Wheelbase"},
6 nominals={"Origin", "Cylinders"},
7 nTree=100,
8 bootstrap=0.6,
9 oob=true,
10 varImp=true,
11 casOut={name="forest_model", replace=true},
12 saveState={name="forest_astore", replace=true},
13 seed=12345;
14RUN;
Résultat :
Une forêt de 100 arbres est générée. L'erreur OOB est calculée. Le modèle est sauvegardé dans la table 'forest_astore'. Les statistiques d'importance des variables sont produites.

FAQ

Quelle est la fonction principale de l'action forestTrain ?
Comment spécifier la table d'entrée contenant les données ?
Comment définir la variable cible (target) ?
Comment sauvegarder le modèle entraîné ?
Comment configurer le nombre d'arbres dans la forêt ?
Comment sont gérées les valeurs manquantes par défaut ?
Est-il possible de générer du code de scoring SAS ?
À quoi sert le paramètre 'encodeName' ?