Delen via


rxFastForest: Fast Forest

Snel forest voor Machine Learning

Gebruik

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

Argumenten

formula

De formule zoals beschreven in rxFormula. Interactietermen en F() worden momenteel niet ondersteund in MicrosoftML.

data

Een gegevensbronobject of een tekenreeks die een .xdf-bestand of een gegevensframeobject opgeeft.

type

Een tekenreeks die het type Fast Tree aangeeft:

  • "binary" voor de standaard binaire classificatie van fast tree of
  • "regression" voor snelle boomregressie.

numTrees

Hiermee geeft u het totale aantal beslissingsstructuren op dat in het ensemble moet worden gemaakt. Door meer beslissingsstructuren te creëren, kunt u mogelijk betere dekking krijgen, maar de trainingstijd neemt toe. De standaardwaarde is 100.

numLeaves

Het maximum aantal bladeren (terminalknooppunten) dat in elke boomstructuur kan worden gemaakt. Hogere waarden vergroten mogelijk de grootte van de boom en krijgen betere precisie, maar risico overfitting en vereisen langere trainingstijden. De standaardwaarde is 20.

minSplit

Minimaal aantal trainingsexemplaren dat nodig is om een blad te vormen. Dat wil gezegd: het minimale aantal documenten dat is toegestaan in een blad van een regressiestructuur, uit de subgemonsterde gegevens. Een 'split' betekent dat functies in elk niveau van de structuur (knooppunt) willekeurig worden verdeeld. De standaardwaarde is 10.

exampleFraction

Het deel van willekeurig gekozen exemplaren dat voor elke structuur moet worden gebruikt. De standaardwaarde is 0,7.

featureFraction

De fractie van willekeurig gekozen functies die voor elke structuur moeten worden gebruikt. De standaardwaarde is 0,7.

splitFraction

De fractie van willekeurig gekozen functies die voor elke splitsing moeten worden gebruikt. De standaardwaarde is 0,7.

numBins

Maximum aantal afzonderlijke waarden (bins) per functie. De standaardwaarde is 255.

firstUsePenalty

De functie gebruikt eerst een boetecoëfficiënt. De standaardwaarde is 0.

gainConfLevel

Boomfitting krijgt betrouwbaarheidsvereiste (moet zich in het bereik [0,1)) bevinden). De standaardwaarde is 0.

trainThreads

Het aantal threads dat in de training moet worden gebruikt. Als NULL dit is opgegeven, wordt het aantal threads dat moet worden gebruikt intern bepaald. De standaardwaarde is NULL.

randomSeed

Hiermee geeft u het willekeurige zaad. De standaardwaarde is NULL.

mlTransforms

Hiermee geeft u een lijst met MicrosoftML-transformaties op die moeten worden uitgevoerd op de gegevens vóór de training of NULL als er geen transformaties moeten worden uitgevoerd. Zie featurizeText, categorical en categoricalHash voor transformaties die worden ondersteund. Deze transformaties worden uitgevoerd na opgegeven R-transformaties. De standaardwaarde is NULL.

mlTransformVars

Hiermee geeft u een tekenvector op van namen van variabelen die moeten worden gebruikt mlTransforms of NULL als er geen moeten worden gebruikt. De standaardwaarde is NULL.

rowSelection

Hiermee geeft u de rijen (waarnemingen) op uit de gegevensset die door het model moeten worden gebruikt met de naam van een logische variabele uit de gegevensset (tussen aanhalingstekens) of met een logische expressie met behulp van variabelen in de gegevensset. Gebruikt bijvoorbeeld rowSelection = "old" alleen waarnemingen waarin de waarde van de variabele old is TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) gebruikt alleen waarnemingen waarbij de waarde van de age variabele tussen 20 en 65 ligt en de waarde van de logincome variabele groter is dan 10. De rijselectie wordt uitgevoerd na het verwerken van gegevenstransformaties (zie de argumenten transforms of transformFunc). Net als bij alle expressies kunt rowSelection u buiten de functieoproep definiëren met behulp van de expressiefunctie.

transforms

Een expressie van het formulier list(name = expression, ``...) dat de eerste ronde van variabeletransformaties vertegenwoordigt. Net als bij alle expressies transforms kan (of rowSelection) buiten de functie-aanroep worden gedefinieerd met behulp van de expressiefunctie.

transformObjects

Een benoemde lijst met objecten waarnaar kan worden verwezen door transforms, transformsFuncen rowSelection.

transformFunc

De functie voor variabeletransformatie. Zie rxTransform voor meer informatie.

transformVars

Een tekenvector van variabelen voor invoergegevenssets die nodig zijn voor de transformatiefunctie. Zie rxTransform voor meer informatie.

transformPackages

Een tekenvector die extra R-pakketten (buiten de opgegeven in rxGetOption("transformPackages")) aangeeft die beschikbaar moeten worden gesteld en vooraf moeten worden geladen voor gebruik in functies voor variabele transformatie. Bijvoorbeeld de expliciet gedefinieerde functies in RevoScaleR via hun transforms en transformFunc argumenten of impliciet gedefinieerde functies via hun formula of rowSelection argumenten. Het transformPackages argument kan ook zijn NULL, waarmee wordt aangegeven dat er geen pakketten buiten rxGetOption("transformPackages") zijn geladen.

transformEnvir

Een door de gebruiker gedefinieerde omgeving die als bovenliggend element fungeert voor alle omgevingen die intern zijn ontwikkeld en worden gebruikt voor variabele gegevenstransformatie. Als transformEnvir = NULLin plaats daarvan een nieuwe hash-omgeving met bovenliggende baseenv() omgeving wordt gebruikt.

blocksPerRead

Hiermee geeft u het aantal blokken op dat moet worden gelezen voor elk segment gegevens dat uit de gegevensbron wordt gelezen.

reportProgress

Een geheel getal dat het rapportageniveau voor de voortgang van de rijverwerking aangeeft:

  • 0: er wordt geen voortgang gerapporteerd.
  • 1: het aantal verwerkte rijen wordt afgedrukt en bijgewerkt.
  • 2: rijen verwerkt en tijdsinstellingen worden gerapporteerd.
  • 3: rijen verwerkt en alle tijdsinstellingen worden gerapporteerd.

verbose

Een geheel getal dat de gewenste hoeveelheid uitvoer aangeeft. Als 0er tijdens berekeningen geen uitgebreide uitvoer wordt afgedrukt. Gehele getallen van waaruit 14 grotere hoeveelheden informatie moeten worden opgegeven.

computeContext

Hiermee stelt u de context in waarin berekeningen worden uitgevoerd, opgegeven met een geldige RxComputeContext. Momenteel worden lokale en RxInSqlServer-rekencontexten ondersteund.

ensemble

Besturingsparameters voor het opgeven van overeenkomsten.

...

Aanvullende argumenten die rechtstreeks aan de Microsoft Compute Engine moeten worden doorgegeven.

Bijzonderheden

Beslissingsstructuren zijn niet-parametrische modellen die een reeks uitvoeren
eenvoudige tests op invoer. Deze beslissingsprocedure wijst deze toe aan uitvoer die in de trainingsgegevensset is gevonden waarvan de invoer vergelijkbaar is met het exemplaar dat wordt verwerkt. Er wordt een beslissing genomen op elk knooppunt van de binaire structuurgegevensstructuur op basis van een meting van overeenkomsten die elk exemplaar recursief toewijst via de vertakkingen van de boom totdat het juiste leaf-knooppunt is bereikt en de uitvoerbeslissing is geretourneerd.

Beslissingsstructuren hebben verschillende voordelen:

Ze zijn efficiënt in zowel berekeningen als geheugengebruik tijdens training en voorspelling.

Ze kunnen niet-lineaire beslissingsgrenzen vertegenwoordigen.

Ze voeren geïntegreerde functieselectie en -classificatie uit.

Ze zijn tolerant in aanwezigheid van lawaaierige functies.

Snelle forestregressie is een willekeurige forest- en kwantielregressieforest-implementatie met behulp van de regressiestructuurleerster in rxFastTrees. Het model bestaat uit een ensemble van beslissingsstructuren. Elke boom in een beslissingsforest levert een Gaussiaanse verdeling door middel van voorspelling. Er wordt een aggregatie uitgevoerd over het ensemble van bomen om een Gaussiische verdeling te vinden die het dichtst bij de gecombineerde verdeling ligt voor alle bomen in het model.

Deze beslissingsforestclassificatie bestaat uit een ensemble van beslissingsstructuren. Over het algemeen bieden ensemblemodellen betere dekking en nauwkeurigheid dan enkele beslissingsstructuren. Elke boom in een beslissingsforest levert een Gaussiaanse verdeling door middel van voorspelling. Er wordt een aggregatie uitgevoerd over het ensemble van bomen om een Gaussiische verdeling te vinden die het dichtst bij de gecombineerde verdeling ligt voor alle bomen in het model.

Waarde

rxFastForest: Een rxFastForest object met het getrainde model.

FastForest: Een leerling specificatie object van klasse maml voor de Fast Forest trainer.

Opmerkingen

Dit algoritme is multithreaded en probeert altijd de volledige gegevensset in het geheugen te laden.

Auteur(en)

Microsoft Corporation Microsoft Technical Support

Referenties

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

Zie ook

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

Voorbeelden


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