Freigeben über


rxFastForest: Schnelle Gesamtstruktur

Schnelle Gesamtstruktur für maschinelles Lernen

Verwendung

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

Argumente

formula

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

data

Ein Datenquellenobjekt oder eine Zeichenfolge, die eine XDF-Datei oder ein Datenframeobjekt angibt.

type

Eine Zeichenfolge, die den Typ der schnellen Struktur angibt:

  • "binary" für die standardmäßige binäre Klassifizierung der fasten Struktur oder
  • "regression" für schnelle Strukturregression.

numTrees

Gibt die Gesamtanzahl der Entscheidungsstrukturen an, die im Ensemble erstellt werden sollen. Durch die Erstellung weiterer Entscheidungsstrukturen können Sie möglicherweise eine bessere Abdeckung erhalten, aber die Schulungszeit erhöht sich. Der Standardwert ist 100.

numLeaves

Die maximale Anzahl von Blättern (Terminalknoten), die in einer beliebigen Struktur erstellt werden können. Höhere Werte erhöhen möglicherweise die Größe des Baumes und erhalten eine bessere Präzision, aber riskieren, dass sie überfällig sind und längere Trainingszeiten erfordern. Der Standardwert ist 20.

minSplit

Mindestanzahl an Schulungsinstanzen, die zum Bilden eines Blatts erforderlich sind. Das heißt, die minimale Anzahl von Dokumenten, die in einem Blatt einer Regressionsstruktur zulässig sind, aus den untersampulierten Daten. Eine "Aufteilung" bedeutet, dass Features auf jeder Ebene der Struktur (Knoten) zufällig geteilt werden. Der Standardwert ist 10.

exampleFraction

Der Anteil der zufällig ausgewählten Instanzen, die für jede Struktur verwendet werden sollen. Der Standardwert ist 0,7.

featureFraction

Der Anteil der zufällig ausgewählten Features, die für jede Struktur verwendet werden sollen. Der Standardwert ist 0,7.

splitFraction

Der Anteil der zufällig ausgewählten Features, die für jede Aufteilung verwendet werden sollen. Der Standardwert ist 0,7.

numBins

Maximale Anzahl unterschiedlicher Werte (Bins) pro Feature. Der Standardwert ist 255.

firstUsePenalty

Das Feature verwendet zuerst den Strafkoeffizient. Der Standardwert ist 0.

gainConfLevel

Anforderung der Strukturanpassung an Konfidenz (sollte im Bereich [0,1)) liegen. Der Standardwert ist 0.

trainThreads

Die Anzahl der Threads, die in der Schulung verwendet werden sollen. Wenn NULL angegeben, wird die Anzahl der zu verwendenden Threads intern bestimmt. Der Standardwert ist NULL.

randomSeed

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

mlTransforms

Gibt eine Liste der MicrosoftML-Transformationen an, die vor dem Training für die Daten ausgeführt werden sollen oder NULL wenn keine Transformationen ausgeführt werden sollen. Informationen zu unterstützten Transformationen finden Sie unter featurizeText, categorical und categoricalHash. Diese Transformationen werden nach allen angegebenen R-Transformationen ausgeführt. Der Standardwert ist NULL.

mlTransformVars

Gibt einen Zeichenvektor von Variablennamen an, die verwendet mlTransforms werden sollen oder NULL wenn keines verwendet werden soll. Der Standardwert ist NULL.

rowSelection

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

transforms

Ein Ausdruck des Formulars list(name = expression, ``...) , das die erste Runde von Variablentransformationen darstellt. Wie bei allen Ausdrücken kann (oder transforms) außerhalb des Funktionsaufrufs mithilfe der Ausdrucksfunktion rowSelection definiert werden.

transformObjects

Eine benannte Liste, die Objekte enthält, auf die von transforms, und transformsFunc.rowSelection

transformFunc

Die Variable Transformationsfunktion. Weitere Informationen finden Sie unter rxTransform.

transformVars

Ein Zeichenvektor von Eingabedatensatzvariablen, die für die Transformationsfunktion erforderlich sind. Weitere Informationen finden Sie unter rxTransform.

transformPackages

Ein Zeichenvektor, der zusätzliche R-Pakete (außerhalb der in rxGetOption("transformPackages")) angibt, die zur Verwendung in Variablentransformationsfunktionen zur Verfügung gestellt und vorab geladen werden sollen. Beispielsweise werden diejenigen, die in RevoScaleR-Funktionen explizit über ihre transforms und transformFunc Argumente oder implizit über ihre formula Argumente rowSelection definiert wurden, definiert. Das transformPackages Argument kann auch sein NULL, was angibt, dass keine Pakete außerhalb rxGetOption("transformPackages") vorinstalliert sind.

transformEnvir

Eine benutzerdefinierte Umgebung, die als übergeordnetes Element für alle Umgebungen dient, die intern entwickelt und für die Variable Datentransformation verwendet werden. Wenn transformEnvir = NULLstattdessen eine neue "Hash"-Umgebung mit übergeordnetem Element baseenv() verwendet wird.

blocksPerRead

Gibt die Anzahl der zu lesenden Blöcke für jeden Datenabschnitt an, der aus der Datenquelle gelesen werden soll.

reportProgress

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

  • 0: Es wird kein Fortschritt gemeldet.
  • 1: Die Anzahl der verarbeiteten Zeilen wird gedruckt und aktualisiert.
  • 2: Verarbeitete Zeilen und Anzeigedauern werden gemeldet.
  • 3: Verarbeitete Zeilen und alle Anzeigedauern werden gemeldet.

verbose

Ein ganzzahliger Wert, der die gewünschte Ausgabemenge angibt. Wird 0bei Berechnungen keine ausführliche Ausgabe gedruckt. Ganzzahlige Werte von 1 bis hin zu 4 steigenden Informationsmengen.

computeContext

Legt den Kontext fest, in dem Berechnungen ausgeführt werden, die mit einem gültigen RxComputeContext angegeben werden. Derzeit werden lokale und RxInSqlServer-Computekontexte unterstützt.

ensemble

Steuerungsparameter für die Ensembling.

...

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

Einzelheiten

Entscheidungsstrukturen sind nicht parametrische Modelle, die eine Sequenz ausführen
von einfachen Tests auf Eingaben. Diese Entscheidungsprozedur ordnet sie Ausgaben im Schulungsdatensatz zu, deren Eingaben der verarbeiteten Instanz ähnlich waren. Bei jedem Knoten der Binären Struktur wird basierend auf einem Maß der Ähnlichkeit eine Entscheidung getroffen, die jede Instanz rekursiv durch die Verzweigungen der Struktur ordnet, bis der entsprechende Blattknoten erreicht ist, und die zurückgegebene Ausgabeentscheidung.

Entscheidungsbäume haben mehrere Vorteile:

Sie sind während des Trainings und der Vorhersage effizient sowohl bei der Berechnung als auch bei der Arbeitsspeicherauslastung.

Sie können nicht lineare Entscheidungsgrenzen darstellen.

Sie führen eine integrierte Featureauswahl und -klassifizierung durch.

Sie sind resilient gegen störende Features.

Schnelle Gesamtstrukturregression ist eine zufällige Gesamtstruktur- und quantile Regressions-Gesamtstrukturimplementierung mithilfe des Regressionsbaumlerners in rxFastTrees. Das Modell besteht aus einem Ensemble von Entscheidungsbäumen. Jede Struktur in einer Entscheidungsstruktur gibt eine gaussische Verteilung per Vorhersage aus. Es erfolgt eine Aggregation über das Baumensemble, um eine Gauß-Verteilung zu finden, die der kombinierten Verteilung für alle Bäume im Modell am nächsten kommt.

Dieser Entscheidungs-Gesamtstrukturklassifizierer besteht aus einem Ensemble von Entscheidungsstrukturen. Im Allgemeinen bieten Ensemblemodelle eine bessere Abdeckung und Genauigkeit als einzelne Entscheidungsbäume. Jede Struktur in einer Entscheidungsstruktur gibt eine gaussische Verteilung per Vorhersage aus. Es erfolgt eine Aggregation über das Baumensemble, um eine Gauß-Verteilung zu finden, die der kombinierten Verteilung für alle Bäume im Modell am nächsten kommt.

Wert

rxFastForest: Ein rxFastForest Objekt mit dem trainierten Modell.

FastForest: Ein Lernprogrammspezifikationsobjekt des Kurses maml für den Fast Forest-Trainer.

Hinweise

Dieser Algorithmus ist multithreaded und versucht immer, das gesamte Dataset in den Arbeitsspeicher zu laden.

Autor(n)

Microsoft Corporation Microsoft Technical Support

Verweise

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

Siehe auch

rxFastTrees, rxFastLinear, rxLogisticRegression, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.

Beispiele


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