rxFastForest: Fast Forest
Aprendizaje automático: Fast Forest
Uso
rxFastForest(formula = NULL, data, type = c("binary", "regression"),
numTrees = 100, numLeaves = 20, minSplit = 10, exampleFraction = 0.7,
featureFraction = 0.7, splitFraction = 0.7, numBins = 255,
firstUsePenalty = 0, gainConfLevel = 0, trainThreads = 8,
randomSeed = NULL, mlTransforms = NULL, mlTransformVars = NULL,
rowSelection = NULL, transforms = NULL, transformObjects = NULL,
transformFunc = NULL, transformVars = NULL, transformPackages = NULL,
transformEnvir = NULL, blocksPerRead = rxGetOption("blocksPerRead"),
reportProgress = rxGetOption("reportProgress"), verbose = 2,
computeContext = rxGetOption("computeContext"),
ensemble = ensembleControl(), ...)
Argumentos
formula
Se refiere a la fórmula tal como se describe en rxFormula. Los términos de interacción y F()
no se admiten actualmente en MicrosoftML.
data
Objeto de origen de datos o cadena de caracteres que especifica un archivo .xdf o un objeto de trama de datos.
type
Cadena de caracteres que indica el tipo de Fast Tree:
"binary"
para la clasificación binaria predeterminada de Fast Tree o"regression"
para la regresión de Fast Tree.
numTrees
Especifica el número total de árboles de decisión que se va a crear en el conjunto. Al crear más árboles de decisión, puede obtener una mejor cobertura, pero el tiempo de entrenamiento aumenta. El valor predeterminado es 100.
numLeaves
Número máximo de hojas (nodos terminales) que se pueden crear en un árbol. Valores más altos pueden aumentar el tamaño del árbol y mejorar la precisión, pero corre el riesgo de sobreajuste y de necesitar tiempos de entrenamiento más prolongados. El valor predeterminado es 20.
minSplit
Número mínimo de instancias de entrenamiento necesarias para formar una hoja. Es decir, el número mínimo de documentos permitidos en una hoja de un árbol de regresión, de los datos de submuestreo. Una división (split) significa que las características de cada nivel del árbol (nodo) se dividen de forma aleatoria. El valor predeterminado es 10.
exampleFraction
Fracción de instancias elegidas aleatoriamente que se usarán para cada árbol. El valor predeterminado es 0,7.
featureFraction
Fracción de características elegidas aleatoriamente que se usarán para cada árbol. El valor predeterminado es 0,7.
splitFraction
Fracción de características elegidas aleatoriamente que se usarán en cada división. El valor predeterminado es 0,7.
numBins
Número máximo de valores distintos (intervalos) por característica. El valor predeterminado es 255.
firstUsePenalty
Coeficiente de penalización del primer uso de una característica. El valor predeterminado es 0.
gainConfLevel
Requisito de confianza de la ganancia de ajuste del árbol (debe estar en el intervalo [0,1)). El valor predeterminado es 0.
trainThreads
Número de subprocesos que se usan en el entrenamiento. Si se especifica NULL
, el número de subprocesos que se va a usar se determina internamente. El valor predeterminado es NULL
.
randomSeed
Especifica la inicialización aleatoria. El valor predeterminado es NULL
.
mlTransforms
Especifica una lista de transformaciones de MicrosoftML que deben realizarse en los datos antes del entrenamiento, o bien NULL
si no hay que realizar ninguna transformación. Consulte featurizeText, categorical y categoricalHash para saber cuáles son las transformaciones compatibles. Estas transformaciones se realizan después de cualquier transformación de R especificada. El valor predeterminado es NULL
.
mlTransformVars
Especifica un vector de caracteres de nombres de variable que deben usarse en mlTransforms
, o NULL
si no hay que usar ninguno. El valor predeterminado es NULL
.
rowSelection
Especifica las filas (observaciones) del conjunto de datos que debe usar el modelo con el nombre de una variable lógica del conjunto de datos (entre comillas) o con una expresión lógica que usa variables en el conjunto de datos. Por ejemplo, rowSelection = "old"
solo usará observaciones en las que el valor de la variable old
sea TRUE
. rowSelection = (age > 20) & (age < 65) & (log(income) > 10)
solo usa observaciones en las que el valor de la variable age
está entre 20 y 65, y el valor de log
de la variable income
es mayor que 10. La selección de fila se realiza después de procesar las transformaciones de datos (vea los argumentos transforms
o transformFunc
). Al igual que con todas las expresiones, rowSelection
se puede definir fuera de la llamada de función mediante la función de expresión.
transforms
Expresión del formulario list(name = expression, ``...)
que representa la primera ronda de transformaciones de variables. Al igual que con todas las expresiones, transforms
(o rowSelection
) se puede definir fuera de la llamada de función mediante la función de expresión.
transformObjects
Lista con nombre que contiene objetos a los que pueden hacer referencia transforms
, transformsFunc
y rowSelection
.
transformFunc
Función de transformación de variables. Consulte rxTransform para más detalles.
transformVars
Vector de caracteres de variables del conjunto de datos de entrada necesarias para la función de transformación. Consulte rxTransform para más detalles.
transformPackages
Vector de caracteres que especifica paquetes de R adicionales (aparte de los especificados en rxGetOption("transformPackages")
) que deben cargarse previamente y estar disponibles para usarlos en las funciones de transformación de variables. Por ejemplo, los definidos explícitamente en las funciones de RevoScaleR mediante los argumentos transforms
y transformFunc
, o los definidos implícitamente con los argumentos formula
o rowSelection
. El argumento transformPackages
también puede ser NULL
, que indica que no se cargan previamente más paquetes aparte de los de rxGetOption("transformPackages")
.
transformEnvir
Entorno definido por el usuario que sirve como primario de todos los entornos desarrollados internamente y que se usa para la transformación de datos variables. Si transformEnvir = NULL
, un entorno "hash" nuevo con baseenv()
primario se usa en su lugar.
blocksPerRead
Especifica el número de bloques que se leerán para cada fragmento de datos leídos del origen de datos.
reportProgress
Valor entero que especifica el nivel de notificación del progreso del procesamiento de filas:
0
: no se notifica el progreso.1
: se imprime y actualiza el número de filas procesadas.2
: se notifican las filas procesadas y los intervalos.3
: se notifican las filas procesadas y todos los intervalos.
verbose
Valor entero que especifica la cantidad de salida deseada. Si es 0
, no se imprime ninguna salida detallada durante los cálculos. Los valores enteros de 1
a 4
proporcionan cantidades crecientes de información.
computeContext
Establece el contexto en el que se ejecutan los cálculos, especificado con un RxComputeContext válido. Actualmente, se admiten los contextos de proceso local y RxInSqlServer.
ensemble
Parámetros de control para la formación de conjuntos.
...
Argumentos adicionales que se pasarán directamente al motor de proceso de Microsoft.
Detalles
Los árboles de decisión son modelos no paramétricos que realizan una secuencia
de pruebas sencillas en entradas. Este procedimiento de decisión los asigna a las salidas encontradas en el conjunto de datos de entrenamiento cuyas entradas eran similares a la instancia que se está procesando. Se toma una decisión en cada nodo de la estructura de datos del árbol binario en función de una medida de similitud que asigna cada instancia de forma recursiva a través de las ramas del árbol hasta que se alcanza el nodo hoja adecuado y se devuelve la decisión de salida.
Los árboles de decisión tienen varias ventajas:
Son eficientes tanto en el cálculo como en la utilización de la memoria durante el entrenamiento y la predicción.
Pueden representar límites de decisión no lineales.
Realizan la selección y clasificación de características integradas.
Son resistentes en presencia de características ruidosas.
La regresión rápida de bosque es una implementación de bosque aleatorio y bosque de regresión por cuantiles que usa el aprendiz de árbol de regresión en rxFastTrees. El modelo consiste en un conjunto de árboles de decisión. Cada árbol de un bosque de decisión da como resultado una predicción en forma de distribución gaussiana. Se realiza una agregación sobre el conjunto de árboles para buscar la distribución gaussiana más cercana a la distribución combinada de todos los árboles del modelo.
Este clasificador de bosque de decisión consta de un conjunto de árboles de decisión. Por lo general, los modelos de conjunto proporcionan mejor cobertura y precisión que los árboles de decisión únicos. Cada árbol de un bosque de decisión da como resultado una predicción en forma de distribución gaussiana. Se realiza una agregación sobre el conjunto de árboles para buscar la distribución gaussiana más cercana a la distribución combinada de todos los árboles del modelo.
Value
rxFastForest
: objeto rxFastForest
con el modelo entrenado.
FastForest
: objeto de especificación de aprendiz de clase maml
para el instructor de Fast Forest.
Notas
Este algoritmo es multiproceso y siempre intentará cargar todo el conjunto de datos en la memoria.
Autores
Microsoft Corporation Microsoft Technical Support
Referencias
From Stumps to Trees to Forests
Consulte también
rxFastTrees, rxFastLinear, rxLogisticRegression, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.
Ejemplos
# Estimate a binary classification forest
infert1 <- infert
infert1$isCase = (infert1$case == 1)
forestModel <- rxFastForest(formula = isCase ~ age + parity + education + spontaneous + induced,
data = infert1)
# Create text file with per-instance results using rxPredict
txtOutFile <- tempfile(pattern = "scoreOut", fileext = ".txt")
txtOutDS <- RxTextData(file = txtOutFile)
scoreDS <- rxPredict(forestModel, data = infert1,
extraVarsToWrite = c("isCase", "Score"), outData = txtOutDS)
# Print the fist ten rows
rxDataStep(scoreDS, numRows = 10)
# Clean-up
file.remove(txtOutFile)
######################################################################
# Estimate a regression fast forest
# Use the built-in data set 'airquality' to create test and train data
DF <- airquality[!is.na(airquality$Ozone), ]
DF$Ozone <- as.numeric(DF$Ozone)
randomSplit <- rnorm(nrow(DF))
trainAir <- DF[randomSplit >= 0,]
testAir <- DF[randomSplit < 0,]
airFormula <- Ozone ~ Solar.R + Wind + Temp
# Regression Fast Forest for train data
rxFastForestReg <- rxFastForest(airFormula, type = "regression",
data = trainAir)
# Put score and model variables in data frame
rxFastForestScoreDF <- rxPredict(rxFastForestReg, data = testAir,
writeModelVars = TRUE)
# Plot actual versus predicted values with smoothed line
rxLinePlot(Score ~ Ozone, type = c("p", "smooth"), data = rxFastForestScoreDF)