Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
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)