rxEnsemble: conjuntos

Entrena un conjunto de modelos

Uso

  rxEnsemble(formula = NULL, data, trainers, type = c("binary", "regression",
    "multiClass", "anomaly"), randomSeed = NULL,
    modelCount = length(trainers), replace = FALSE, sampRate = NULL,
    splitData = FALSE, combineMethod = c("median", "average", "vote"),
    maxCalibration = 1e+05, 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 = 1,
    computeContext = rxGetOption("computeContext"), ...)

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. Como alternativa, puede ser una lista de orígenes de datos que indica que cada modelo debe entrenarse mediante uno de los orígenes de datos de la lista. En este caso, la longitud de la lista de datos debe ser igual a modelCount.

trainers

Lista de instructores y sus argumentos. Los instructores se crean mediante el uso de fastTrees, fastForest, fastLinear, logisticRegression o neuralNet.

type

Cadena de caracteres que especifica el tipo de conjunto: "binary" para Clasificación binaria o "regression" para Regresión.

randomSeed

Especifica la inicialización aleatoria. El valor predeterminado es NULL.

modelCount

Especifica el número de modelos que se van a entrenar. Si este número es mayor que la longitud de la lista de instructores, esta lista se duplica para que coincida con modelCount.

replace

Valor lógico que especifica si el muestreo de observaciones debe realizarse con o sin reemplazo. El valor predeterminado es /codeFALSE.

sampRate

Escalar de valor positivo que especifica el porcentaje de observaciones que se deben muestrear para cada instructor. El valor predeterminado para muestreo con reemplazo es 1.0 (por ejemplo, replace=TRUE) y para muestreo sin reemplazo, 0.632 (por ejemplo, replace=FALSE). Cuando splitData es TRUE, el valor predeterminado de sampRate es 1.0 (no se realiza muestreo antes de la separación).

splitData

Valor lógico que especifica si se deben entrenar o no los modelos base en particiones no superpuestas. De manera predeterminada, es FALSE. Solo está disponible para el contexto de proceso RxSpark y se omite para otros.

combineMethod

Especifica el método usado para combinar los modelos:

  • median: para calcular la mediana de las salidas de modelo individuales,
  • average: para calcular la media de las salidas de modelo individuales y
  • vote: para calcular (pos-neg) / el número total de modelos, donde "pos" es el número de salidas positivas y "neg" de negativas.

maxCalibration

Especifica el número máximo de ejemplos que usar para calibrar. Este argumento se omite para todas las tareas que no son de clasificación binaria.

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. Transformaciones que requieren un pase adicional sobre los datos (como featurizeText, categorical) no están permitidas. 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. El valor predeterminado es NULL.

transformObjects

Lista con nombre que contiene objetos a los que pueden hacer referencia transforms, transformsFunc y rowSelection. El valor predeterminado es NULL.

transformFunc

Función de transformación de variables. Consulte rxTransform para más detalles. El valor predeterminado es NULL.

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. El valor predeterminado es NULL.

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"). El valor predeterminado es NULL.

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. El valor predeterminado es NULL.

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. El valor predeterminado es 1.

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 RxSpark. Cuando se especifica RxSpark, el entrenamiento de los modelos se realiza de forma distribuida, y el montaje se hace de manera local. Tenga en cuenta que el contexto de proceso no puede ser de no espera.

...

Argumentos adicionales que se pasarán directamente al motor de proceso de Microsoft.

Detalles

/coderxEnsemble es una función que entrena varios modelos de diversos tipos para obtener un mejor rendimiento predictivo que el que se podría obtener a partir de un único modelo.

Value

Objeto rxEnsemble con el modelo de montaje entrenado.

Ejemplos


 # Create an ensemble of regression rxFastTrees models

 # use xdf data source
 dataFile <- file.path(rxGetOption("sampleDataDir"), "claims4blocks.xdf")
 rxGetInfo(dataFile, getVarInfo = TRUE, getBlockSizes = TRUE)
 form <- cost ~ age + type + number

 rxSetComputeContext("localpar")
 rxGetComputeContext()

 # build an ensemble model that contains three 'rxFastTrees' models with different parameters
 ensemble <- rxEnsemble(
     formula = form,
     data = dataFile,
     type = "regression",
     trainers = list(fastTrees(), fastTrees(numTrees = 60), fastTrees(learningRate = 0.1)), #a list of trainers with their arguments.
     replace = TRUE # Indicates using a bootstrap sample for each trainer
     )

 # use text data source
 colInfo <- list(DayOfWeek = list(type = "factor", levels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")))

 source <- system.file("SampleData/AirlineDemoSmall.csv", package = "RevoScaleR")
 data <- RxTextData(source, missingValueString = "M", colInfo = colInfo)

 # When 'distributed' is TRUE distributed data source is created
 distributed <- FALSE
 if (distributed) {
     bigDataDirRoot <- "/share"
     inputDir <- file.path(bigDataDirRoot, "AirlineDemoSmall")
     rxHadoopMakeDir(inputDir)
     rxHadoopCopyFromLocal(source, inputDir)
     hdfsFS <- RxHdfsFileSystem()
     data <- RxTextData(file = inputDir, missingValueString = "M", colInfo = colInfo, fileSystem = hdfsFS)
 }

 # When 'distributed' is TRUE training is distributed
 if (distributed) {
     cc <- rxSetComputeContext(RxSpark())
 } else {
     cc <- rxGetComputeContext()
 }

 ensemble <- rxEnsemble(
     formula = ArrDelay ~ DayOfWeek,
     data = data,
     type = "regression",
     trainers = list(fastTrees(), fastTrees(numTrees = 60), fastTrees(learningRate = 0.1)), # The ensemble will contain three 'rxFastTrees' models
     replace = TRUE # Indicates using a bootstrap sample for each trainer
     )

 # Change the compute context back to previous for scoring
 rxSetComputeContext(cc)

 # Put score and model variables in data frame
 scores <- rxPredict(ensemble, data = data, writeModelVars = TRUE)

 # Plot actual versus predicted values with smoothed line
 rxLinePlot(Score ~ ArrDelay, type = c("p", "smooth"), data = scores)