rxFastForest: Floresta rápida

Floresta rápida de 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(), ...)

Argumentos

formula

A fórmula como descrita em rxFormula. No momento, não há suporte para termos de interação nem para F() no MicrosoftML.

data

Um objeto de fonte de dados ou uma cadeia de caracteres que especifica um arquivo .xdf ou um objeto de dataframe.

type

Uma cadeia de caracteres que denota o tipo de árvore rápida:

  • "binary" para a classificação binária de árvore rápida padrão ou
  • "regression" para a regressão de árvore rápida.

numTrees

Especifica o número total de árvores de decisão para criar no ensemble. Criando mais árvores de decisão, você tem o potencial de obter uma melhor cobertura, mas o tempo de treinamento aumenta. O valor padrão é 100.

numLeaves

O número máximo de folhas (nós de terminal) que podem ser criadas em uma árvore. Valores mais altos podem aumentar o tamanho da árvore e melhorar a precisão, mas há um risco de sobreajuste e de necessidade de mais tempo de treinamento. O valor padrão é 20.

minSplit

Número mínimo de instâncias de treinamento necessárias para formar uma folha. Ou seja, o número mínimo de documentos permitidos em uma folha de uma árvore de regressão, fora dos dados subamostrados. Uma "divisão" significa que os recursos em cada nível da árvore (nó) são divididos aleatoriamente. O valor padrão é 10.

exampleFraction

A fração de instâncias escolhidas aleatoriamente a ser usada para cada árvore. O valor padrão é 0,7.

featureFraction

A fração de recursos escolhidos aleatoriamente a ser usada para cada árvore. O valor padrão é 0,7.

splitFraction

A fração de recursos escolhidos aleatoriamente a ser usada em cada divisão. O valor padrão é 0,7.

numBins

Número máximo de valores distintos (compartimentos) por recurso. O valor padrão é 255.

firstUsePenalty

O recurso primeiro usa o coeficiente de penalidade. O valor padrão é 0.

gainConfLevel

Requisito de confiança de ganho de ajuste da árvore (deve estar no intervalo [0,1]). O valor padrão é 0.

trainThreads

O número de threads a serem usados no treinamento. Se NULL for especificado, o número de threads a serem usados será determinado internamente. O valor padrão é NULL.

randomSeed

Especifica a semente aleatória. O valor padrão é NULL.

mlTransforms

Especifica uma lista de transformações do MicrosoftML a serem executadas nos dados antes do treinamento ou NULL para que nenhuma transformação seja executada. Confira featurizeText, categorical e categoricalHash, para ver as transformações com suporte. Essas transformações são executadas após as transformações R especificadas. O valor padrão é NULL.

mlTransformVars

Especifica um vetor de caracteres de nomes de variáveis a serem usados em mlTransforms ou NULL quando não é usado nenhum nome. O valor padrão é NULL.

rowSelection

Especifica as linhas (observações) do conjunto de dados que devem ser usadas pelo modelo com o nome de uma variável lógica do conjunto de dados (entre aspas) ou com uma expressão lógica usando variáveis no conjunto de dados. Por exemplo, rowSelection = "old" usará apenas observações nas quais o valor da variável old seja TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) apenas usa observações nas quais o valor da variável age está entre 20 e 65 e o valor de log da variável income é maior que 10. A seleção de linha é executada após o processamento de todas as transformações de dados (confira os argumentos transforms ou transformFunc). Assim como acontece com todas as expressões, é possível definir rowSelection fora da chamada de função usando a função de expressão.

transforms

Uma expressão do formato list(name = expression, ``...) que representa a primeira rodada de transformações de variável. Assim como acontece com todas as expressões, é possível definir transforms (ou rowSelection) fora da chamada de função usando a função de expressão.

transformObjects

Uma lista nomeada que contém objetos que podem ser referenciados por transforms, transformsFunc e rowSelection.

transformFunc

A função de transformação de variável. Confira rxTransform para obter detalhes.

transformVars

Um vetor de caracteres de variáveis do conjunto de dados de entrada necessário para a função de transformação. Confira rxTransform para obter detalhes.

transformPackages

Um vetor de caracteres que especifica pacotes R adicionais (fora aqueles especificados em rxGetOption("transformPackages")) a serem disponibilizados e pré-carregados para uso em funções de transformação de variável. Por exemplo, os definidos explicitamente nas funções RevoScaleR por meio dos respectivos argumentos transforms e transformFunc ou os definidos implicitamente por meio dos respectivos argumentos formula ou rowSelection. O argumento transformPackages também pode ser NULL, indicando que nenhum pacote fora de rxGetOption("transformPackages") é pré-carregado.

transformEnvir

Um ambiente definido pelo usuário para funcionar como um pai de todos os ambientes desenvolvidos internamente e usados para transformação de dados de variável. Se transformEnvir = NULL, um novo ambiente de “hash” com baseenv() pai é usado.

blocksPerRead

Especifica o número de blocos a serem lidos em cada parte dos dados lidos da fonte de dados.

reportProgress

Um valor inteiro que especifica o nível de relatório sobre o progresso do processamento de linha:

  • 0: não é relatado nenhum progresso.
  • 1: o número de linhas processadas é impresso e atualizado.
  • 2: as linhas processadas e os tempos são relatados.
  • 3: as linhas processadas e todos os tempos são relatados.

verbose

Um valor inteiro que especifica a quantidade de saída desejada. Se definido como 0, não será impressa nenhuma saída detalhada durante os cálculos. Valores inteiros de 1 a 4 fornecem quantidades crescentes de informações.

computeContext

Define o contexto no qual as computações são executadas, especificado com um RxComputeContext válido. No momento, há suporte para os contextos de computação local e RxInSqlServer.

ensemble

Parâmetros de controle para conjuntos.

...

Argumentos adicionais a serem transmitidos diretamente para o Mecanismo de Computação da Microsoft.

Detalhes

As árvores de decisão são modelos não paramétricos que executam uma sequência
de testes simples em entradas. Esse procedimento de decisão as mapeia para as saídas encontradas no conjunto de dados de treinamento cujas entradas sejam semelhantes à instância que está sendo processada. Uma decisão é tomada em cada nó da estrutura de dados de árvore binária com base em uma medida de similaridade que mapeia cada instância recursivamente pelas ramificações da árvore até que o nó folha apropriado seja atingido e a decisão de saída seja retornada.

As árvores de decisão têm várias vantagens:

São eficientes no uso de memória e computação durante o treinamento e a previsão.

Podem representar limites de decisão não lineares.

Elas executam a seleção de recursos integrados e classificação.

Elas são flexíveis na presença de recursos com ruídos.

A regressão de floresta rápida é uma implementação de floresta aleatória e de regressão de quantil usando o aprendiz de árvore de regressão em rxFastTrees. Esse modelo consiste em um conjunto de árvores de decisão. Cada árvore em uma floresta de decisão gera uma distribuição Gaussiana como forma de previsão. É realizada uma agregação no conjunto de árvores para encontrar uma distribuição gaussiana mais próxima da combinada para todas as árvores no modelo.

Esse classificador de floresta de decisão consiste em um ensemble de árvores de decisão. Em termos gerais, os modelos de ensemble fornecem melhor cobertura e precisão que árvores de decisão únicas. Cada árvore em uma floresta de decisão gera uma distribuição Gaussiana como forma de previsão. É realizada uma agregação no conjunto de árvores para encontrar uma distribuição gaussiana mais próxima da combinada para todas as árvores no modelo.

Valor

rxFastForest: um objeto rxFastForest com o modelo treinado.

FastForest: um objeto de especificação de aluno da classe maml para o treinador Floresta Rápida.

Observações

Esse algoritmo é multithreading e sempre tentará carregar o conjunto de dados inteiro na memória.

Autor(es)

Microsoft Corporation Microsoft Technical Support

Referências

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

Confira também

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

Exemplos


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