Dela via


rxFastForest: Snabb skog

Snabb skog för maskininlärning

Användning

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

Argumentpunkter

formula

Formeln som beskrivs i rxFormula. Interaktionsvillkor och F() stöds för närvarande inte i MicrosoftML.

data

Ett datakällobjekt eller en teckensträng som anger en .xdf-fil eller ett dataramobjekt.

type

En teckensträng som anger typ av snabbt träd:

  • "binary" för standardvärdet Fast Tree Binary Classification eller
  • "regression" för snabb trädregression.

numTrees

Anger det totala antalet beslutsträd som ska skapas i ensemblen. Genom att skapa fler beslutsträd kan du eventuellt få bättre täckning, men träningstiden ökar. Standardvärdet är 100.

numLeaves

Det maximala antalet löv (terminalnoder) som kan skapas i valfritt träd. Högre värden kan öka trädstorleken och få bättre precision, men riskerar att överanpassas och kräva längre träningstider. Standardvärdet är 20.

minSplit

Minsta antal träningsinstanser som krävs för att bilda ett löv. Det vill: det minimala antalet dokument som tillåts i ett löv i ett regressionsträd, från de underexempelbaserade data. En "delning" innebär att funktioner i varje nivå i trädet (noden) delas slumpmässigt. Standardvärdet är 10.

exampleFraction

Bråkdelen av slumpmässigt valda instanser som ska användas för varje träd. Standardvärdet är 0,7.

featureFraction

Bråkdelen av slumpmässigt valda funktioner som ska användas för varje träd. Standardvärdet är 0,7.

splitFraction

Bråkdelen av slumpmässigt valda funktioner som ska användas vid varje delning. Standardvärdet är 0,7.

numBins

Maximalt antal distinkta värden (intervall) per funktion. Standardvärdet är 255.

firstUsePenalty

Funktionen använder först straffkoefficient. Standardvärdet är 0.

gainConfLevel

Trädanpassning får förtroendekrav (bör ligga i intervallet [0,1)). Standardvärdet är 0.

trainThreads

Antalet trådar som ska användas i träning. Om NULL anges bestäms antalet trådar som ska användas internt. Standardvärdet är NULL.

randomSeed

Anger det slumpmässiga fröet. Standardvärdet är NULL.

mlTransforms

Anger en lista över MicrosoftML-transformeringar som ska utföras på data före träningen eller NULL om inga transformeringar ska utföras. Se featurizeText, kategorisk och kategoriskHash för transformeringar som stöds. Dessa transformeringar utförs efter angivna R-transformeringar. Standardvärdet är NULL.

mlTransformVars

Anger en teckenvektor med variabelnamn som ska användas i mlTransforms eller NULL om ingen ska användas. Standardvärdet är NULL.

rowSelection

Anger raderna (observationer) från datauppsättningen som ska användas av modellen med namnet på en logisk variabel från datauppsättningen (inom citattecken) eller med ett logiskt uttryck med variabler i datauppsättningen. Till exempel rowSelection = "old" använder endast observationer där värdet för variabeln old är TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) använder endast observationer där variabelns age värde är mellan 20 och 65 och värdet för variabeln logincome är större än 10. Radmarkeringen utförs efter bearbetning av datatransformeringar (se argumenten transforms eller transformFunc). Som med alla uttryck kan definieras utanför funktionsanropet rowSelection med hjälp av uttrycksfunktionen.

transforms

Ett uttryck för formuläret list(name = expression, ``...) som representerar den första omgången av variabeltransformeringar. Precis som med alla uttryck kan (eller transforms) definieras utanför funktionsanropet rowSelection med hjälp av uttrycksfunktionen.

transformObjects

En namngiven lista som innehåller objekt som kan refereras till av transforms, transformsFuncoch rowSelection.

transformFunc

Funktionen för variabeltransformeringen. Mer information finns i rxTransform.

transformVars

En teckenvektor för indatauppsättningsvariabler som behövs för transformeringsfunktionen. Mer information finns i rxTransform.

transformPackages

En teckenvektor som anger ytterligare R-paket (utanför de som anges i rxGetOption("transformPackages")) som ska göras tillgängliga och förinlästa för användning i variabeltransformeringsfunktioner. Till exempel de som uttryckligen definieras i RevoScaleR-funktioner via deras transforms argument och transformFunc argument eller de som definieras implicit via deras formula eller rowSelection argument. Argumentet transformPackages kan också vara NULL, som anger att inga paket utanför rxGetOption("transformPackages") är förinstallerade.

transformEnvir

En användardefinierad miljö som fungerar som överordnad till alla miljöer som utvecklats internt och används för variabel datatransformering. Om transformEnvir = NULLanvänds en ny "hash"-miljö med överordnad baseenv() i stället.

blocksPerRead

Anger antalet block som ska läsas för varje segment av data som läss från datakällan.

reportProgress

Ett heltalsvärde som anger rapporteringsnivån för radbearbetningsförloppet:

  • 0: Inga förlopp rapporteras.
  • 1: Antalet bearbetade rader skrivs ut och uppdateras.
  • 2: Rader som bearbetas och tidsinställningar rapporteras.
  • 3: bearbetade rader och alla tidsinställningar rapporteras.

verbose

Ett heltalsvärde som anger önskad mängd utdata. Om 0skrivs inga utförliga utdata ut under beräkningar. Heltalsvärden från 1 för att 4 ge ökande mängder information.

computeContext

Anger kontexten där beräkningar körs, som anges med en giltig RxComputeContext. För närvarande stöds lokala och RxInSqlServer-beräkningskontexter.

ensemble

Kontrollparametrar för montering.

...

Ytterligare argument som ska skickas direkt till Microsoft Compute Engine.

Detaljer

Beslutsträd är icke-parametriska modeller som utför en sekvens
av enkla tester på indata. Den här beslutsproceduren mappar dem till utdata som finns i träningsdatauppsättningen vars indata liknar den instans som bearbetas. Ett beslut fattas vid varje nod i datastrukturen för binärt träd baserat på ett mått på likhet som mappar varje instans rekursivt genom grenarna i trädet tills rätt lövnod har nåtts och utdatabeslutet returneras.

Beslutsträd har flera fördelar:

De är effektiva i både beräkning och minnesanvändning under träning och förutsägelse.

De kan representera icke-linjära beslutsgränser.

De utför val och klassificering av integrerade funktioner.

De är motståndskraftiga i närvaro av bullriga funktioner.

Snabb skogsregression är en slumpmässig skogs- och kvantilregressionsskogsimplementering med hjälp av regressionsträdsläraren i rxFastTrees. Modellen består av en ensemble av beslutsträd. Varje träd i en beslutsskog matar ut en gaussisk fördelning som förutsägelse. En aggregering utförs över trädensemblen för att hitta en gaussisk fördelning närmast den kombinerade fördelningen för alla träd i modellen.

Den här beslutsskogsklassificeraren består av en ensemble av beslutsträd. I allmänhet ger ensemblemodeller bättre täckning och noggrannhet än enskilda beslutsträd. Varje träd i en beslutsskog matar ut en gaussisk fördelning som förutsägelse. En aggregering utförs över trädensemblen för att hitta en gaussisk fördelning närmast den kombinerade fördelningen för alla träd i modellen.

Värde

rxFastForest: Ett rxFastForest objekt med den tränade modellen.

FastForest: Ett elevspecifikationsobjekt för klassen maml för Fast Forest-tränaren.

Noteringar

Den här algoritmen är flertrådad och försöker alltid läsa in hela datamängden i minnet.

Författare

Microsoft Corporation Microsoft Technical Support

Referenser

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

Se även

rxFastTrees, rxFastLinear, rxLogisticRegression, rxNeuralNet, rxOneClassSvm, featurizeText, kategorisk, kategoriskHash, rxPredict.mlModel.

Exempel


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