decisionTree

forestTrain

Descripción

Entrena un modelo de bosque (forest). Esta acción implementa algoritmos de bosque aleatorio o Gradient Boosting (cuando se configura adecuadamente) para construir múltiples árboles de decisión y combinar sus predicciones. Es útil para clasificación, regresión y, con la opción de aislamiento, para la detección de anomalías. Requiere una licencia de 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={...}, comment=TRUE | FALSE, fmtWdth=integer, indentSize=integer, labelId=integer, lineSize=integer, noTrim=TRUE | FALSE, tabForm=TRUE | FALSE}, codeInteractions={casOut={...}, 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={{...}, {...}}, 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={...}, seed=double, * table={caslib="string", computedOnDemand=TRUE | FALSE, computedVars={{...}, {...}}, computedVarsProgram="string", dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, importOptions={...}, * name="table-name", singlePass=TRUE | FALSE, vars={{...}, {...}}, where="where-expression", whereTable={...}}, target="variable-name", varImp=TRUE | FALSE, varIntImp=integer, vote="MAJORITY" | "PROB", weight="variable-name";
Parámetros
ParámetroDescripción
alphaEspecifica el valor a utilizar para la poda de complejidad de costo mínima para árboles de regresión.
applyRowOrderEspecifica que la acción utilice un ordenamiento de filas pre-especificado (requiere table.partition previo).
attributesEspecifica atributos temporales, como formato y etiqueta, para aplicar a las variables de entrada.
binOrderPor defecto (True), se preserva el orden de los contenedores para variables numéricas.
bootstrapEspecifica la fracción de los datos para la muestra de bootstrap.
casOutEspecifica la tabla de salida donde se almacenará el modelo de bosque.
cfLevEspecifica la agresividad de la poda del árbol según el algoritmo C4.5.
codeSolicita que la acción produzca código de puntuación SAS.
codeInteractionsSolicita que la acción produzca código de puntuación SAS para crear variables que codifiquen interacciones.
critEspecifica el criterio de división para cada nodo del árbol (ej. GINI, GAIN, CHISQUARE).
encodeNameEspecifica si codificar los nombres de variables (ej. P_ prefijo) en la tabla de salida.
eventEspecifica los valores de evento de la variable objetivo, útil para muestreo de eventos raros.
eventFreqEspecifica la frecuencia para cada evento correspondiente en el parámetro event.
freqEspecifica una variable numérica que contiene la frecuencia de ocurrencia de cada observación.
greedyPor defecto (True), utiliza búsqueda exhaustiva. Si es False, usa un algoritmo rápido basado en clustering.
includeMissingPor defecto (True), incluye observaciones con valores faltantes.
inputsEspecifica las variables de entrada a utilizar en el análisis.
isolationSi es True, especifica el entrenamiento de un bosque de aislamiento (Isolation Forest).
leafSizeEspecifica el número mínimo de observaciones en cada nodo hoja.
lohEspecifica el número de variables para dividir usando el método LOH.
mEspecifica el número de variables de entrada a considerar para dividir en un nodo.
maxBranchEspecifica el número máximo de hijos (ramas) permitidos para cada nivel del árbol.
maxLevelEspecifica el número máximo del nivel del árbol (profundidad).
mergeBinPor defecto (True), intenta fusionar contenedores vecinos si los valores coinciden.
minUseInSearchEspecifica un umbral para utilizar valores faltantes en la búsqueda de división.
missingEspecifica la política para manejar valores faltantes ('MACSMALL' o 'USEINSEARCH').
modelIdEspecifica el nombre de la variable de ID del modelo para usar al generar código de puntuación SAS.
nBinsEspecifica el número de contenedores para variables numéricas en el cálculo.
nBinsTargetEspecifica el número de contenedores para una variable objetivo numérica.
nominalsEspecifica las variables de entrada nominales a utilizar en el análisis.
nominalSearchEspecifica el método para encontrar una división en una entrada nominal.
nTreeEspecifica el número de árboles a crear.
oobSi es True, calcula el error fuera de la bolsa (out-of-bag) al construir el bosque.
pruneEspecifica si se usa un método de poda (C4.5 o costo-complejidad).
quantileBinEspecifica límites de contenedores en cuantiles de entradas numéricas en lugar de ancho igual.
rbaImpEspecifica la importancia de la variable utilizando el método de asignación de ramas aleatorias (RBA).
sampleNEspecifica el número de observaciones o la fracción de datos para el muestreo.
saveStateEspecifica la tabla para almacenar el modelo aStore generado.
seedEspecifica la semilla para el generador de números aleatorios.
tableEspecifica la configuración para la tabla de entrada.
targetEspecifica la variable objetivo o de respuesta para el entrenamiento.
varImpEspecifica si se genera la información de importancia de la variable.
varIntImpSolicita la importancia de la interacción de variables y el grado máximo.
voteEspecifica la estrategia de votación para la clasificación ('MAJORITY' o 'PROB').
weightEspecifica una variable numérica que contiene el peso de cada observación.
Carga de datos HMEQ

Carga el conjunto de datos de préstamos hipotecarios (HMEQ) para su uso en los ejemplos.

¡Copiado!
1PROC CAS;
2 SESSION casauto;
3 TABLE.loadTable RESULT=r STATUS=s /
4 caslib="samples"
5 path="hmeq.csv"
6 casOut={name="hmeq", replace=true};
7RUN;

Ejemplos

Entrena un modelo de bosque básico para predecir la variable binaria BAD.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 decisionTree.forestTrain RESULT=r STATUS=s /
3 TABLE={name="hmeq"}
4 target="BAD"
5 inputs={"LOAN", "MORTDUE", "VALUE", "REASON", "JOB", "YOJ", "DEROG", "DELINQ", "CLAGE", "NINQ", "CLNO", "DEBTINC"}
6 nominals={"REASON", "JOB", "BAD"}
7 casOut={name="forest_model", replace=true};
8RUN;
Resultado :
Se crea la tabla 'forest_model' con el modelo entrenado y se imprimen estadísticas básicas del entrenamiento.

Entrena un modelo con 100 árboles, calcula el error Out-of-Bag, solicita importancia de variables y guarda el modelo en formato aStore para un despliegue optimizado.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 decisionTree.forestTrain RESULT=r STATUS=s /
3 TABLE={name="hmeq"}
4 target="BAD"
5 inputs={"LOAN", "MORTDUE", "VALUE", "REASON", "JOB", "YOJ", "DEROG", "DELINQ", "CLAGE", "NINQ", "CLNO", "DEBTINC"}
6 nominals={"REASON", "JOB", "BAD"}
7 nTree=100
8 m=4
9 bootstrap=0.6
10 oob=true
11 varImp=true
12 missing="USEINSEARCH"
13 casOut={name="forest_model_out", replace=true}
14 saveState={name="forest_astore", replace=true};
15RUN;
Resultado :
Se genera un modelo de 100 árboles. Se muestra la tabla de importancia de variables y el error OOB. El modelo se guarda como 'forest_astore' listo para usar con la acción aStore.score.

FAQ

¿Cuál es el propósito principal de la acción forestTrain?
¿Qué parámetro es obligatorio para especificar los datos de entrada?
¿Cómo se especifica la variable objetivo o de respuesta?
¿Dónde se almacena el modelo de árbol de decisión resultante?
¿Cuántos árboles crea la acción por defecto?
¿Cómo maneja la acción los valores faltantes?
¿Es posible generar código de puntuación SAS?
¿Qué permite hacer el parámetro 'saveState'?
¿Qué función cumple el parámetro 'encodeName'?
¿Cómo se pueden especificar atributos temporales para las variables de entrada?