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
alpha Spécifie la valeur à utiliser pour l'élagage minimal de complexité de coût pour les arbres de régression.
applyRowOrder Spécifie l'utilisation d'un ordre de lignes prédéfini (nécessite orderby/groupby dans table.partition).
attributes Spécifie des attributs temporaires (format, label, etc.) à appliquer aux variables d'entrée.
binOrder Par défaut (Vrai), l'ordre des compartiments est préservé pour les variables numériques. Si Faux, l'ordre est ignoré.
bootstrap Spécifie la fraction des données utilisée pour l'échantillon bootstrap (valeur > 0 et <= 1).
casOut Spécifie la table de sortie où stocker le modèle d'arbre de décision.
cfLev Spécifie le niveau d'agressivité de l'élagage de l'arbre selon l'algorithme C4.5.
code Demande la génération du code de scoring SAS.
codeInteractions Demande la génération de code SAS pour créer des variables d'interaction (requiert varIntImp >= 2).
crit Spécifie le critère de division pour chaque nœud (ex: GAIN, GINI, CHI2, VARIANCE).
encodeName Spécifie s'il faut encoder les noms des variables générées (ex: probabilités) avec un préfixe simplifié.
event Spécifie la valeur de l'événement de la variable cible pour le calcul des fréquences.
eventFreq Spécifie la fréquence pour l'événement spécifié, utile pour l'échantillonnage d'événements rares.
freq Variable numérique contenant la fréquence d'occurrence de chaque observation.
greedy Par défaut (Vrai), utilise une recherche exhaustive. Si Faux, utilise un algorithme rapide basé sur le clustering.
includeMissing Par défaut (Vrai), inclut les observations avec valeurs manquantes. Si Faux, elles sont ignorées.
inputs Liste des variables d'entrée à utiliser pour l'entraînement.
isolation Spécifie si l'on entraîne une forêt d'isolation (détection d'anomalies).
leafSize Nombre minimum d'observations requises sur chaque nœud feuille.
loh Nombre de variables à utiliser pour la division avec la méthode LOH.
m Nombre de variables d'entrée candidates à considérer pour la division d'un nœud.
maxBranch Nombre maximum de branches (enfants) autorisées par nœud.
maxLevel Profondeur maximale de l'arbre.
mergeBin Fusionne les compartiments adjacents si leurs valeurs limites correspondent.
minUseInSearch Seuil d'observations manquantes pour déclencher la politique de recherche spécifique (avec missing='USEINSEARCH').
missing Politique de gestion des valeurs manquantes (MACSMALL ou USEINSEARCH).
modelId Nom de la variable ID du modèle pour le code de scoring.
nBins Nombre de compartiments pour les variables numériques.
nBinsTarget Nombre de compartiments pour la variable cible numérique.
nominals Liste des variables d'entrée à traiter comme nominales.
nominalSearch Paramètres pour la méthode de recherche de division sur les variables nominales.
nTree Nombre d'arbres à créer dans la forêt.
oob Calcule l'erreur Out-Of-Bag (OOB) si activé.
prune Active l'élagage des arbres (C4.5 ou coût-complexité).
quantileBin Utilise des quantiles pour les limites de compartiments au lieu de largeurs égales.
rbaImp Active le calcul de l'importance des variables par affectation aléatoire des branches (RBA).
sampleN Spécifie la taille de l'échantillon pour le bootstrap.
saveState Spécifie la table de sortie pour sauvegarder le modèle au format aStore.
seed Graine pour le générateur de nombres aléatoires.
table Spécifie la table d'entrée contenant les données d'entraînement.
target Nom de la variable cible.
varImp Génère les statistiques d'importance des variables.
varIntImp Calcule l'importance des interactions de variables (spécifier le degré).
vote Stratégie de vote pour la classification (MAJORITY ou PROB).
weight Variable 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' ?