Share via


rxEnsemble: insiemi

Esegue il training di un insieme di modelli

Utilizzo

  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"), ...)

Arguments

formula

Formula descritta in rxFormula. I termini di interazione e F() non sono attualmente supportati in MicrosoftML.

data

Oggetto origine dati o stringa di caratteri che specifica un file con estensione xdf o un oggetto frame di dati. In alternativa, può trattarsi di un elenco di origini dati che indica che ogni modello deve essere sottoposto a training usando una delle origini dati nell'elenco. In questo caso, la lunghezza dell'elenco di dati deve essere uguale a modelCount.

trainers

Elenco di programmi di training con i relativi argomenti. I programmi di training vengono creati usando fastTrees, fastForest, fastLinear, logisticRegression o neuralNet.

type

Stringa di caratteri che specifica il tipo di insieme: "binary" per Classificazione binaria o "regression" per Regressione.

randomSeed

Specifica il valore di inizializzazione casuale. Il valore predefinito è NULL.

modelCount

Specifica il numero di modelli da sottoporre a training. Se questo numero è maggiore della lunghezza dell'elenco dei programmi di training, l'elenco dei programmi di training verrà duplicato in modo che corrisponda a modelCount.

replace

Valore logico che specifica se il campionamento delle osservazioni deve essere eseguito con o senza sostituzione. Il valore predefinito è /codeFALSE.

sampRate

Scalare con valore positivo che specifica la percentuale di osservazioni da campionare per ogni programma di training. Il valore predefinito è 1,0 per il campionamento con sostituzione (ad esempio, replace=TRUE) e 0,632 per il campionamento senza sostituzione (ad esempio, replace=FALSE). Quando splitData è TRUE, il valore predefinito di sampRate è 1,0 (non viene eseguito alcun campionamento prima della suddivisione).

splitData

Valore logico che specifica se eseguire o meno il training dei modelli di base su partizioni non sovrapposte. Il valore predefinito è FALSE. È disponibile solo per il contesto di calcolo RxSpark e viene ignorato per gli altri.

combineMethod

Specifica il metodo usato per combinare i modelli:

  • median per calcolare la mediana dei singoli output di modello.
  • average per calcolare la media dei singoli output di modello.
  • vote per calcolare (pos-neg) / il numero totale di modelli, dove "pos" è il numero di output positivi e "neg" è il numero di output negativi.

maxCalibration

Specifica il numero massimo di esempi da utilizzare per la calibrazione. Questo argomento viene ignorato per tutte le attività diverse dalla classificazione binaria.

mlTransforms

Specifica un elenco di trasformazioni di MicrosoftML da eseguire sui dati prima del training o NULL se non devono essere eseguite trasformazioni. Le trasformazioni che richiedono un passaggio aggiuntivo sui dati, ad esempio featurizeText, categorico, non sono consentite. Queste trasformazioni vengono eseguite dopo eventuali trasformazioni R specificate. Il valore predefinito è NULL.

mlTransformVars

Specifica un vettore di caratteri di nomi di variabili da usare in mlTransforms o NULL se non è necessario usarne alcuno. Il valore predefinito è NULL.

rowSelection

Specifica le righe (osservazioni) dal set di dati che devono essere usate dal modello con il nome di una variabile logica dal set di dati (tra virgolette) o con un'espressione logica tramite variabili nel set di dati. Ad esempio, rowSelection = "old" userà solo osservazioni in cui il valore della variabile old è TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) usa solo osservazioni in cui il valore della variabile age è compreso tra 20 e 65 e il valore di log della variabile income è maggiore di 10. La selezione delle righe viene eseguita dopo l'elaborazione di eventuali trasformazioni dei dati. Vedere gli argomenti transforms o transformFunc. Analogamente a tutte le espressioni, è possibile definire rowSelection all'esterno della chiamata alla funzione usando la funzione di espressione.

transforms

Espressione con formato list(name = expression, ``...) che rappresenta il primo ciclo di trasformazioni delle variabili. Analogamente a tutte le espressioni, è possibile definire transforms o rowSelection all'esterno della chiamata alla funzione usando la funzione di espressione. Il valore predefinito è NULL.

transformObjects

Elenco denominato che contiene oggetti a cui transforms, transformsFunce rowSelection possono fare riferimento. Il valore predefinito è NULL.

transformFunc

Funzione di trasformazione della variabile. Per informazioni dettagliate, vedere rxTransform. Il valore predefinito è NULL.

transformVars

Vettore di caratteri delle variabili del set di dati di input necessario per la funzione di trasformazione. Per informazioni dettagliate, vedere rxTransform. Il valore predefinito è NULL.

transformPackages

Vettore di caratteri che specifica altri pacchetti R, oltre a quelli specificati in rxGetOption("transformPackages"), da rendere disponibili e precaricati per l'uso nelle funzioni di trasformazione delle variabili. Ad esempio, quelli definiti in modo esplicito nelle funzioni RevoScaleR tramite i relativi argomenti transforms e transformFunc o quelli definiti in modo implicito tramite i relativi argomenti formula o rowSelection. L'argomento transformPackages può anche essere NULL, che indica che non vengono precaricati pacchetti esterni a rxGetOption("transformPackages"). Il valore predefinito è NULL.

transformEnvir

Ambiente definito dall'utente da usare come elemento padre di tutti gli ambienti sviluppati internamente e usati per la trasformazione dei dati delle variabili. Se transformEnvir = NULL, viene invece usato un nuovo ambiente "hash" con padre baseenv(). Il valore predefinito è NULL.

blocksPerRead

Specifica il numero di blocchi da leggere per ogni blocco di dati letto dall'origine dati.

reportProgress

Valore intero che specifica il livello di creazione di report sullo stato di elaborazione delle righe:

  • 0: non viene segnalato alcun avanzamento.
  • 1: il numero di righe elaborate viene stampato e aggiornato.
  • 2: vengono segnalate le righe elaborate e le tempistiche.
  • 3: vengono segnalate le righe elaborate e tutte le tempistiche.

verbose

Valore intero che specifica la quantità di output desiderata. Se 0, non viene stampato alcun output dettagliato durante i calcoli. Valori interi da 1 a 4 per fornire quantità crescenti di informazioni. Il valore predefinito è 1.

computeContext

Imposta il contesto in cui vengono eseguiti i calcoli, specificato con un RxComputeContext valido. Sono attualmente supportati i contesti di calcolo locali e RxSpark. Quando si specifica RxSpark, il training dei modelli viene eseguito in modo distribuito e l'ensembling viene eseguito in locale. Si noti che il contesto di calcolo non può essere non in attesa.

...

Argomenti aggiuntivi da passare direttamente al motore di calcolo Microsoft.

Dettagli

/coderxEnsemble è una funzione che esegue il training di numerosi modelli di vario tipo per ottenere prestazioni predittive migliori rispetto a quelle ottenute da un singolo modello.

Valore

Oggetto rxEnsemble con il modello di insieme sottoposto a training.

Esempi


 # 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)