rxFastForest: Fast Forest
Fast Forest di Machine Learning
Utilizzo
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(), ...)
Arguments
formula
Formula descritta in rxFormula. I termini di interazione e F()
non sono attualmente supportati in MicrosoftML.
data
Oggetto origine dati o stringa di caratteri che specifica un file con estensione xdf o un oggetto frame di dati.
type
Una stringa di caratteri che indica il tipo Fast Tree:
"binary"
per la classificazione binaria Fast Tree predefinita o"regression"
per la regressione Fast Tree.
numTrees
Specifica il numero totale di alberi delle decisioni da creare nell'insieme. Creando più alberi delle decisioni, è possibile ottenere una migliore copertura, ma saranno necessari tempi di training prolungati. Il valore predefinito è 100.
numLeaves
Numero massimo di foglie (nodi di terminale) che è possibile creare in ogni albero. Valori più elevati aumentano potenzialmente le dimensioni dell'albero e consentono di ottenere una precisione migliore, ma rischiano di causare un overfitting e di richiedere tempi di training più lunghi. Il valore predefinito è 20.
minSplit
Numero minimo di istanze di training necessarie per formare una foglia. Si tratta del numero minimo di documenti consentiti in una foglia di un albero di regressione, al di là dei dati sotto-campionati. Uno split indica che le funzionalità di ogni livello dell'albero (nodo) vengono divise in modo casuale. Il valore predefinito è 10.
exampleFraction
Frazione di istanze scelte in modo casuale da usare per ogni albero. Il valore predefinito è 0,7.
featureFraction
Frazione di funzionalità scelte in modo casuale da usare per ogni albero. Il valore predefinito è 0,7.
splitFraction
Frazione di funzionalità scelte in modo casuale da usare per ogni split. Il valore predefinito è 0,7.
numBins
Numero massimo di valori distinti (bin) per funzionalità. Il valore predefinito è 255.
firstUsePenalty
Coefficiente di penalità per il primo utilizzo della funzionalità. Il valore predefinito è 0.
gainConfLevel
Requisito di attendibilità del guadagno di adattamento dell'albero. Il valore deve rientrare nell'intervallo [0,1]. Il valore predefinito è 0.
trainThreads
Numero di thread da usare nel training. Se viene specificato NULL
, il numero di thread da usare viene determinato internamente. Il valore predefinito è NULL
.
randomSeed
Specifica il valore di inizializzazione casuale. Il valore predefinito è NULL
.
mlTransforms
Specifica un elenco di trasformazioni di MicrosoftML da eseguire sui dati prima del training o NULL
se non devono essere eseguite trasformazioni. Per informazioni sulle trasformazioni supportate, vedere featurizeText, categorical e categoricalHash. Queste trasformazioni vengono eseguite dopo eventuali trasformazioni R specificate. Il valore predefinito è NULL
.
mlTransformVars
Specifica un vettore di caratteri di nomi di variabili da usare in mlTransforms
o NULL
se non è necessario usarne alcuno. Il valore predefinito è NULL
.
rowSelection
Specifica le righe (osservazioni) dal set di dati che devono essere usate dal modello con il nome di una variabile logica dal set di dati (tra virgolette) o con un'espressione logica tramite variabili nel set di dati. Ad esempio, rowSelection = "old"
userà solo osservazioni in cui il valore della variabile old
è TRUE
. rowSelection = (age > 20) & (age < 65) & (log(income) > 10)
usa solo osservazioni in cui il valore della variabile age
è compreso tra 20 e 65 e il valore di log
della variabile income
è maggiore di 10. La selezione delle righe viene eseguita dopo l'elaborazione di eventuali trasformazioni dei dati. Vedere gli argomenti transforms
o transformFunc
. Analogamente a tutte le espressioni, è possibile definire rowSelection
all'esterno della chiamata alla funzione usando la funzione di espressione.
transforms
Espressione con formato list(name = expression, ``...)
che rappresenta il primo ciclo di trasformazioni delle variabili. Analogamente a tutte le espressioni, è possibile definire transforms
o rowSelection
all'esterno della chiamata alla funzione usando la funzione di espressione.
transformObjects
Elenco denominato che contiene oggetti a cui transforms
, transformsFunc
e rowSelection
possono fare riferimento.
transformFunc
Funzione di trasformazione della variabile. Per informazioni dettagliate, vedere rxTransform.
transformVars
Vettore di caratteri delle variabili del set di dati di input necessario per la funzione di trasformazione. Per informazioni dettagliate, vedere rxTransform.
transformPackages
Vettore di caratteri che specifica altri pacchetti R, oltre a quelli specificati in rxGetOption("transformPackages")
, da rendere disponibili e precaricati per l'uso nelle funzioni di trasformazione delle variabili. Ad esempio, quelli definiti in modo esplicito nelle funzioni RevoScaleR tramite i relativi argomenti transforms
e transformFunc
o quelli definiti in modo implicito tramite i relativi argomenti formula
o rowSelection
. L'argomento transformPackages
può anche essere NULL
, che indica che non vengono precaricati pacchetti esterni a rxGetOption("transformPackages")
.
transformEnvir
Ambiente definito dall'utente da usare come elemento padre di tutti gli ambienti sviluppati internamente e usati per la trasformazione dei dati delle variabili. Se transformEnvir = NULL
, viene invece usato un nuovo ambiente "hash" con padre baseenv()
.
blocksPerRead
Specifica il numero di blocchi da leggere per ogni blocco di dati letto dall'origine dati.
reportProgress
Valore intero che specifica il livello di creazione di report sullo stato di elaborazione delle righe:
0
: non viene segnalato alcun avanzamento.1
: il numero di righe elaborate viene stampato e aggiornato.2
: vengono segnalate le righe elaborate e le tempistiche.3
: vengono segnalate le righe elaborate e tutte le tempistiche.
verbose
Valore intero che specifica la quantità di output desiderata. Se 0
, non viene stampato alcun output dettagliato durante i calcoli. Valori interi da 1
a 4
per fornire quantità crescenti di informazioni.
computeContext
Imposta il contesto in cui vengono eseguiti i calcoli, specificato con un RxComputeContext valido. Sono attualmente supportati contesti di calcolo locali e RxInSqlServer.
ensemble
Parametri di controllo per l'ensembling.
...
Argomenti aggiuntivi da passare direttamente al motore di calcolo Microsoft.
Dettagli
Gli alberi delle decisioni sono modelli non parametrici che eseguono una sequenza
di semplici test sugli input. Questa procedura decisionale ne esegue il mapping agli output trovati nel set di dati di training i cui input sono simili all'istanza da elaborare. Viene presa una decisione in ogni nodo della struttura dei dati ad albero binario in base a una misura di somiglianza che esegue il mapping ricorsivo di ogni istanza attraverso i rami dell'albero fino a quando non viene raggiunto il nodo foglia appropriato e non viene restituita la decisione di output.
Gli alberi delle decisioni presentano diversi vantaggi:
Sono efficienti sia nel calcolo che nell'uso della memoria durante il training e la stima.
Possono rappresentare limiti di decisione non lineari.
Eseguono la selezione e la classificazione integrata di funzionalità
e sono resilienti in caso di funzionalità rumorose.
La regressione Fast Forest è un'implementazione della foresta casuale e della foresta di regressione quantile che usa lo strumento di apprendimento dell'albero di regressione in rxFastTrees. Il modello è costituito da un insieme di alberi delle decisioni. Ogni albero di una foresta delle decisioni restituisce una distribuzione gaussiana come previsione. Viene eseguita un'aggregazione sull'insieme di alberi per trovare una distribuzione gaussiana più vicina alla distribuzione combinata per tutti gli alberi del modello.
Il classificatore delle foreste delle decisioni è costituito da un insieme di alberi delle decisioni. In genere, i modelli di insieme offrono una copertura e un'accuratezza migliori rispetto a singoli alberi delle decisioni. Ogni albero di una foresta delle decisioni restituisce una distribuzione gaussiana come previsione. Viene eseguita un'aggregazione sull'insieme di alberi per trovare una distribuzione gaussiana più vicina alla distribuzione combinata per tutti gli alberi del modello.
Valore
rxFastForest
: oggetto rxFastForest
con il modello sottoposto a training.
FastForest
: oggetto di specifica dello strumento di apprendimento con classe maml
per il programma di training Fast Forest.
Note
Questo algoritmo è multithreading e proverà sempre a caricare l'intero set di dati in memoria.
Autore/i
Microsoft Corporation Microsoft Technical Support
Riferimenti
From Stumps to Trees to Forests
Vedi anche
rxFastTrees, rxFastLinear, rxLogisticRegression, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.
Esempi
# 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)