Condividi tramite


rxFastForest: Foresta veloce

Foresta veloce di Machine Learning

Uso

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

Argomenti

formula

Formula come descritto in rxFormula. 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

Stringa di caratteri che denota il tipo di albero veloce:

  • "binary" per la classificazione binaria ad albero veloce predefinita o
  • "regression" per Regressione ad albero veloce.

numTrees

Specifica il numero totale di alberi delle decisioni da creare nell'insieme. Creando più alberi delle decisioni, è possibile ottenere una copertura migliore, ma il tempo di training aumenta. Il valore predefinito è 100.

numLeaves

Numero massimo di foglie (nodi terminal) che possono essere create in qualsiasi albero. I valori più elevati aumentano potenzialmente le dimensioni dell'albero e ottengono una maggiore precisione, ma rischino l'overfitting e richiedono tempi di training più lunghi. Il valore predefinito è 20.

minSplit

Numero minimo di istanze di training necessarie per formare una foglia. Ovvero, il numero minimo di documenti consentiti in una foglia di un albero di regressione, dai dati sotto campionati. Una "divisione" indica che le funzionalità in ogni livello dell'albero (nodo) sono suddivise 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 delle funzionalità scelte in modo casuale da usare per ogni albero. Il valore predefinito è 0,7.

splitFraction

Frazione delle funzionalità scelte in modo casuale da usare in ogni divisione. Il valore predefinito è 0,7.

numBins

Numero massimo di valori distinti (bin) per funzionalità. Il valore predefinito è 255.

firstUsePenalty

La caratteristica usa innanzitutto il coefficiente di penalità. Il valore predefinito è 0.

gainConfLevel

Requisito di attendibilità per l'adattamento ad albero (deve essere compreso nell'intervallo [0,1)). Il valore predefinito è 0.

trainThreads

Numero di thread da usare nel training. Se NULL viene specificato, 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 MicrosoftML da eseguire sui dati prima del training o NULL se non devono essere eseguite trasformazioni. Per le trasformazioni supportate, vedere featurizeText, categorical e categoricalHash. Queste trasformazioni vengono eseguite dopo le trasformazioni R specificate. Il valore predefinito è NULL.

mlTransformVars

Specifica un vettore di caratteri di nomi di variabile da utilizzare in mlTransforms o NULL se non è necessario usare nessuno. Il valore predefinito è NULL.

rowSelection

Specifica le righe (osservazioni) del set di dati che devono essere usate dal modello con il nome di una variabile logica del set di dati (tra virgolette) o con un'espressione logica usando variabili nel set di dati. Ad esempio, rowSelection = "old" userà solo le 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 age variabile è compreso tra 20 e 65 e il valore della logincome variabile è maggiore di 10. La selezione delle righe viene eseguita dopo l'elaborazione di tutte le trasformazioni dei dati (vedere gli transforms argomenti o transformFunc). Come per tutte le espressioni, rowSelection può essere definito all'esterno della chiamata di funzione usando la funzione di espressione.

transforms

Espressione del form list(name = expression, ``...) che rappresenta il primo round delle trasformazioni delle variabili. Come per tutte le espressioni, transforms (o rowSelection) può essere definito all'esterno della chiamata di funzione usando la funzione di espressione.

transformObjects

Elenco denominato che contiene oggetti a cui è possibile fare riferimento da transforms, transformsFunce rowSelection.

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 pacchetti R aggiuntivi (al di fuori di 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 transforms argomenti e transformFunc o quelli definiti in modo implicito tramite i relativi formula argomenti o rowSelection . L'argomento transformPackages può anche essere NULL, a indicare che non vengono precaricati pacchetti esterni rxGetOption("transformPackages") .

transformEnvir

Ambiente definito dall'utente da usare come padre per 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 per 4 fornire quantità crescenti di informazioni.

computeContext

Imposta il contesto in cui vengono eseguiti i calcoli, specificati con un RxComputeContext valido. Attualmente sono supportati contesti di calcolo locali e RxInSqlServer.

ensemble

Parametri di controllo per l'incenso.

...

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 in fase di elaborazione. Una decisione viene presa in ogni nodo della struttura di dati dell'albero binario in base a una misura di somiglianza che esegue il mapping ricorsivo di ogni istanza attraverso i rami dell'albero fino al raggiungimento del nodo foglia appropriato e alla decisione di output restituita.

Gli alberi delle decisioni presentano diversi vantaggi:

Sono efficienti sia nel calcolo che nell'utilizzo della memoria durante il training e la stima.

Possono rappresentare limiti decisionali non lineari.

Eseguono la selezione e la classificazione integrate delle funzionalità.

Sono resilienti in presenza di caratteristiche rumorose.

La regressione rapida della foresta è un'implementazione casuale della foresta di regressione e della regressione quantile usando lo learner dell'albero di regressione in rxFastTrees. Il modello è costituito da un insieme di alberi delle decisioni. Ogni albero in una foresta decisionale restituisce una distribuzione gaussiana tramite la stima. Viene eseguita un'aggregazione sull'insieme di alberi per trovare una distribuzione gaussiana più vicina alla distribuzione combinata per tutti gli alberi del modello.

Questo classificatore di foresta decisionale è costituito da un insieme di alberi delle decisioni. In genere, i modelli di insieme offrono una copertura e un'accuratezza migliori rispetto ai singoli alberi delle decisioni. Ogni albero in una foresta decisionale restituisce una distribuzione gaussiana tramite la stima. 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 rxFastForest: oggetto con il modello sottoposto a training.

FastForest: oggetto di specifica dell'learner della classe maml per fast forest trainer.

Note

Questo algoritmo è multithread e tenterà sempre di caricare l'intero set di dati in memoria.

Autore/i

Microsoft Corporation Microsoft Technical Support

Riferimenti

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

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