rx_ensemble: Ensembles

Trainiert ein Modellensemble

Verwendung

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

Argumente

formula

Die Formel, wie in rxFormula beschrieben. Interaktionsterme und F() werden derzeit in MicrosoftML nicht unterstützt.

data

Ein Datenquellenobjekt oder eine Zeichenfolge, die eine XDFFILE-Datei oder ein Datenrahmenobjekt angibt. Alternativ kann es sich um eine Liste von Datenquellen handeln, die angibt, dass jedes Modell unter Verwendung einer der Datenquellen in der Liste trainiert werden muss. In diesem Fall muss die Länge der Datenliste gleich modelCount sein.

trainers

Eine Liste von Trainern mit ihren Argumenten. Die Trainer werden mit fastTrees, fastForest, fastLinear, logisticRegression oder neuralNet erstellt.

type

Eine Zeichenfolge, die den Typ des Ensembles angibt: "binary" für binäre Klassifizierung oder "regression" für Regression.

randomSeed

Gibt den zufälligen Ausgangswert an. Der Standardwert ist NULL.

modelCount

Gibt die Anzahl der zu trainierenden Modelle an. Wenn diese Zahl größer als die Länge der Liste der Trainer ist, wird die Liste der Trainer entsprechend modelCount dupliziert.

replace

Ein logischer Wert, der angibt, ob die Stichprobenentnahme von Beobachtungen mit oder ohne Ersetzung erfolgen soll. Der Standardwert ist „/codeFALSE“.

sampRate

Ein Skalar mit positivem Wert, der den Prozentsatz der Beobachtungen angibt, für die für jeden Trainer eine Stichprobe entnommen werden soll. Der Standardwert ist 1,0 für die Stichprobenentnahme mit Ersetzung (d. h. replace=TRUE) und 0,632 für die Stichprobenentnahme ohne Ersetzung (d. h. replace=FALSE). Wenn splitData TRUE ist, ist der Standardwert von sampRate 1,0 (vor der Aufteilung wird keine Stichprobenentnahme durchgeführt).

splitData

Ein logischer Wert, der angibt, ob die Basismodelle auf nicht überlappenden Partitionen trainiert werden sollen oder nicht. Der Standardwert lautet FALSE. Er ist nur für den RxSpark-Computekontext verfügbar und wird für andere ignoriert.

combineMethod

Gibt die Methode zum Kombinieren der Modelle an:

  • median zum Berechnen des Medians der einzelnen Ausgaben des Modells,
  • average zum Berechnen des Durchschnitt der einzelnen Ausgaben des Modells und
  • vote zum Berechnen von (pos-neg)/der Gesamtanzahl der Modelle, wobei „pos“ die Anzahl der positiven Ausgaben und „neg“ die Anzahl der negativen Ausgaben ist.

maxCalibration

Gibt die maximale Anzahl von Beispielen an, die für die Kalibrierung verwendet werden sollen. Dieses Argument wird bei allen anderen Aufgaben als zur binären Klassifizierung ignoriert.

mlTransforms

Gibt eine Liste von MicrosoftML-Transformationen an, die vor dem Training für die Daten erfolgen sollen, oder NULL, wenn keine Transformationen erfolgen sollen. Transformationen, die einen zusätzlichen Durchlauf durch die Daten erfordern (wie featurizeText, categorical), sind nicht zulässig. Diese Transformationen werden nach allen angegebenen R-Transformationen ausgeführt. Der Standardwert ist NULL.

mlTransformVars

Gibt einen Zeichenvektor von Variablennamen an, die in mlTransforms verwendet werden sollen, oder NULL, wenn keine verwendet werden sollen. Standardwert: NULL.

rowSelection

Gibt die Zeilen (Beobachtungen) aus dem Dataset an, die vom Modell verwendet werden sollen, mit dem Namen einer logischen Variablen aus dem Dataset (in Anführungszeichen) oder mit einem logischen Ausdruck unter Verwendung von Variablen im Dataset. rowSelection = "old" verwendet z. B. nur Beobachtungen, bei denen TRUE der Wert der Variablen old ist. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) verwendet nur Beobachtungen, bei denen der Wert der Variablen age zwischen 20 und 65 liegt und der Wert von log der Variablen income größer als 10 ist. Die Zeilenauswahl erfolgt nach der Verarbeitung von Datentransformationen (siehe die Argumente transforms oder transformFunc). Wie bei allen Ausdrücken kann rowSelection außerhalb des Funktionsaufrufs mit der expression-Funktion definiert werden.

transforms

Ein Ausdruck der Form list(name = expression, ``...), der die erste Runde der Variablentransformationen darstellt. Wie bei allen Ausdrücken kann transforms (oder rowSelection) außerhalb des Funktionsaufrufs mit der expression-Funktion definiert werden. Standardwert: NULL.

transformObjects

Eine benannte Liste, die Objekte enthält, auf die mit transforms, transformsFunc und rowSelection verwiesen werden kann. Standardwert: NULL.

transformFunc

Die Variablentransformationsfunktionen. Weitere Informationen finden Sie unter „rxTransform“. Standardwert: NULL.

transformVars

Ein Zeichenvektor von Eingabedatasetvariablen, die für die Transformationsfunktion erforderlich sind. Weitere Informationen finden Sie unter „rxTransform“. Standardwert: NULL.

transformPackages

Ein Zeichenvektor, der zusätzliche R-Pakete (außerhalb der in rxGetOption("transformPackages") angegebenen) angibt, die für die Verwendung in Variablentransformationsfunktionen verfügbar gemacht und im Voraus geladen werden sollen. Zum Beispiel solche, die explizit in RevoScaleR-Funktionen über ihre Argumente transforms und transformFunc definiert sind oder solche, die implizit über ihre Argumente formula oder rowSelection definiert sind. Das Argument transformPackages kann auch NULL lauten, was angibt, dass keine Pakete außerhalb von rxGetOption("transformPackages") im Voraus geladen werden. Standardwert: NULL.

transformEnvir

Eine benutzerdefinierte Umgebung, die als übergeordnete Umgebung für alle intern entwickelten Umgebungen dient und für die Transformation von Variablendaten verwendet wird. Falls transformEnvir = NULL, wird stattdessen eine neue „hash“-Umgebung mit der übergeordneten baseenv() verwendet. Standardwert: NULL.

blocksPerRead

Gibt die Anzahl der Blöcke an, die für jeden Datenblock gelesen werden, der aus der Datenquelle gelesen wird.

reportProgress

Ein ganzzahliger Wert, der die Berichtsebene für den Status der Zeilenverarbeitung angibt:

  • 0: Es wird kein Status gemeldet.
  • 1: Die Anzahl der verarbeiteten Zeilen wird ausgegeben und aktualisiert.
  • 2: Verarbeitete Zeilen und Zeitsteuerungen werden gemeldet.
  • 3: Verarbeitete Zeilen und alle Zeitsteuerungen werden gemeldet.

verbose

Ein ganzzahliger Wert, der die gewünschte Ausgabemenge angibt. Falls 0, erfolgt während der Berechnungen keine ausführliche Ausgabe. Ganzzahlige Werte von 1 bis 4 liefern zunehmend mehr Informationen. Standardwert: 1.

computeContext

Legt den Kontext fest, in dem Berechnungen erfolgen, angegeben mit einer gültigen Angabe für RxComputeContext. Derzeit werden lokale und RxSpark-Computekontexte unterstützt. Wenn RxSpark angegeben ist, erfolgt das Training der Modelle auf verteilte Weise, wobei das Ensembling lokal erfolgt. Beachten Sie, dass der Computekontext nicht nicht-wartend sein darf.

...

Zusätzliche Argumente, die direkt an die Microsoft-Compute-Engine übergeben werden sollen.

Details

„/coderxEnsemble“ ist eine Funktion zum Trainieren einer Reihe verschiedener Modelle zur Steigerung der Vorhersageleistung im Vergleich zu einem einzelnen Modell.

Wert

Ein rxEnsemble-Objekt mit dem trainierten Ensemblemodell.

Beispiele


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