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
alpha Especifica el valor a utilizar para la poda de complejidad de costo mínima para árboles de regresión.
applyRowOrder Especifica que la acción utilice un ordenamiento de filas pre-especificado (requiere table.partition previo).
attributes Especifica atributos temporales, como formato y etiqueta, para aplicar a las variables de entrada.
binOrder Por defecto (True), se preserva el orden de los contenedores para variables numéricas.
bootstrap Especifica la fracción de los datos para la muestra de bootstrap.
casOut Especifica la tabla de salida donde se almacenará el modelo de bosque.
cfLev Especifica la agresividad de la poda del árbol según el algoritmo C4.5.
code Solicita que la acción produzca código de puntuación SAS.
codeInteractions Solicita que la acción produzca código de puntuación SAS para crear variables que codifiquen interacciones.
crit Especifica el criterio de división para cada nodo del árbol (ej. GINI, GAIN, CHISQUARE).
encodeName Especifica si codificar los nombres de variables (ej. P_ prefijo) en la tabla de salida.
event Especifica los valores de evento de la variable objetivo, útil para muestreo de eventos raros.
eventFreq Especifica la frecuencia para cada evento correspondiente en el parámetro event.
freq Especifica una variable numérica que contiene la frecuencia de ocurrencia de cada observación.
greedy Por defecto (True), utiliza búsqueda exhaustiva. Si es False, usa un algoritmo rápido basado en clustering.
includeMissing Por defecto (True), incluye observaciones con valores faltantes.
inputs Especifica las variables de entrada a utilizar en el análisis.
isolation Si es True, especifica el entrenamiento de un bosque de aislamiento (Isolation Forest).
leafSize Especifica el número mínimo de observaciones en cada nodo hoja.
loh Especifica el número de variables para dividir usando el método LOH.
m Especifica el número de variables de entrada a considerar para dividir en un nodo.
maxBranch Especifica el número máximo de hijos (ramas) permitidos para cada nivel del árbol.
maxLevel Especifica el número máximo del nivel del árbol (profundidad).
mergeBin Por defecto (True), intenta fusionar contenedores vecinos si los valores coinciden.
minUseInSearch Especifica un umbral para utilizar valores faltantes en la búsqueda de división.
missing Especifica la política para manejar valores faltantes ('MACSMALL' o 'USEINSEARCH').
modelId Especifica el nombre de la variable de ID del modelo para usar al generar código de puntuación SAS.
nBins Especifica el número de contenedores para variables numéricas en el cálculo.
nBinsTarget Especifica el número de contenedores para una variable objetivo numérica.
nominals Especifica las variables de entrada nominales a utilizar en el análisis.
nominalSearch Especifica el método para encontrar una división en una entrada nominal.
nTree Especifica el número de árboles a crear.
oob Si es True, calcula el error fuera de la bolsa (out-of-bag) al construir el bosque.
prune Especifica si se usa un método de poda (C4.5 o costo-complejidad).
quantileBin Especifica límites de contenedores en cuantiles de entradas numéricas en lugar de ancho igual.
rbaImp Especifica la importancia de la variable utilizando el método de asignación de ramas aleatorias (RBA).
sampleN Especifica el número de observaciones o la fracción de datos para el muestreo.
saveState Especifica la tabla para almacenar el modelo aStore generado.
seed Especifica la semilla para el generador de números aleatorios.
table Especifica la configuración para la tabla de entrada.
target Especifica la variable objetivo o de respuesta para el entrenamiento.
varImp Especifica si se genera la información de importancia de la variable.
varIntImp Solicita la importancia de la interacción de variables y el grado máximo.
vote Especifica la estrategia de votación para la clasificación ('MAJORITY' o 'PROB').
weight Especifica 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?