Partilhar via


rxFastForest: Floresta Rápida

Machine Learning Floresta Rápida

Utilização

  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 conforme descrito em rxFormula. Termos de interação e F() não são suportados atualmente no MicrosoftML.

data

Um objeto de fonte de dados ou uma cadeia de caracteres especificando um arquivo .xdf ou um objeto de quadro de dados.

type

Uma cadeia de caracteres denotando o tipo Árvore Rápida:

  • "binary" para a Classificação Binária de Árvore Rápida padrão ou
  • "regression" para Regressão Rápida de Árvore.

numTrees

Especifica o número total de árvores de decisão a serem criadas no conjunto. Ao criar mais árvores de decisão, você pode potencialmente 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 terminais) que podem ser criadas em qualquer árvore. Valores mais altos potencialmente aumentam o tamanho da árvore e obtêm melhor precisão, mas correm o risco de sobreajustar e exigir tempos de treinamento mais longos. 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 as características em cada nível da árvore (nó) são divididas aleatoriamente. O valor padrão é 10.

exampleFraction

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

featureFraction

A fração de características escolhidas aleatoriamente para usar em cada árvore. O valor padrão é 0,7.

splitFraction

A fração de recursos escolhidos aleatoriamente para usar 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 usar o coeficiente de penalidade. O valor padrão é 0.

gainConfLevel

O encaixe da árvore ganha confiança (deve estar na faixa [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 predefinido é NULL.

randomSeed

Especifica a semente aleatória. O valor predefinido é NULL.

mlTransforms

Especifica uma lista de transformações do MicrosoftML a serem executadas nos dados antes do treinamento ou NULL se nenhuma transformação deve ser executada. Consulte featurizeText, categorical e categoricalHash, para obter transformações suportadas. Essas transformações são executadas após quaisquer transformações R especificadas. O valor predefinido é NULL.

mlTransformVars

Especifica um vetor de caractere de nomes de variáveis a serem usados ou mlTransformsNULL se nenhum deve ser usado. O valor predefinido é 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 em que o valor da variável old é TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10)utiliza apenas observações em que o age valor da variável está entre 20 e 65 e o valor da log variável é superior a income 10. A seleção de linha é realizada após o processamento de quaisquer transformações de dados (consulte os argumentos transforms ou transformFunc). Como em todas as expressões, rowSelection pode ser definido fora da chamada de função usando a função de expressão.

transforms

Uma expressão da forma list(name = expression, ``...) que representa a primeira rodada de transformações variáveis. Como acontece com todas as expressões, transforms (ou rowSelection) pode ser definido 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, transformsFunce rowSelection.

transformFunc

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

transformVars

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

transformPackages

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

transformEnvir

Um ambiente definido pelo usuário para servir como pai para todos os ambientes desenvolvidos internamente e usados para transformação de dados variáveis. Se transformEnvir = NULL, um novo ambiente "hash" com pai baseenv() é usado em vez disso.

blocksPerRead

Especifica o número de blocos a serem lidos para cada bloco de dados lidos da fonte de dados.

reportProgress

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

  • 0: não são comunicados quaisquer progressos.
  • 1: o número de linhas processadas é impresso e atualizado.
  • 2: linhas processadas e tempos são relatados.
  • 3: linhas processadas e todos os tempos são relatados.

verbose

Um valor inteiro que especifica a quantidade de saída desejada. Se 0, nenhuma saída detalhada é impressa durante os cálculos. Valores inteiros de 1 para 4 fornecer quantidades crescentes de informações.

computeContext

Define o contexto no qual os cálculos são executados, especificado com um RxComputeContext válido. Atualmente, há suporte para contextos de computação locais e RxInSqlServer.

ensemble

Parâmetros de controlo para o conjunto.

...

Argumentos adicionais a serem passados diretamente para o Microsoft Compute Engine.

Detalhes

As árvores de decisão são modelos não paramétricos que executam uma sequência
de testes simples em entradas. Este procedimento de decisão mapeia-os para saídas encontradas no conjunto de dados de treinamento cujas entradas eram semelhantes à instância que estava sendo processada. Uma decisão é tomada em cada nó da estrutura de dados da árvore binária com base em uma medida de semelhança que mapeia cada instância recursivamente através dos ramos da árvore até que o nó folha apropriado seja alcançado e a decisão de saída retornada.

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

Eles são eficientes tanto na computação quanto no uso de memória durante o treinamento e a previsão.

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

Eles realizam seleção e classificação de recursos integrados.

Eles são resilientes na presença de características barulhentas.

A regressão rápida de floresta é uma implementação de floresta aleatória e floresta de regressão quantílica usando o aprendiz de árvore de regressão em rxFastTrees. O modelo consiste num conjunto de árvores de decisão. Cada árvore em uma floresta de decisão produz uma distribuição gaussiana por meio de previsão. Uma agregação é realizada sobre o conjunto de árvores para encontrar uma distribuição gaussiana mais próxima da distribuição combinada para todas as árvores no modelo.

Este classificador florestal de decisão consiste num conjunto de árvores de decisão. Geralmente, os modelos de conjunto fornecem melhor cobertura e precisão do que as árvores de decisão únicas. Cada árvore em uma floresta de decisão produz uma distribuição gaussiana por meio de previsão. Uma agregação é realizada sobre o conjunto de árvores para encontrar uma distribuição gaussiana mais próxima da distribuição combinada para todas as árvores no modelo.

Valor

rxFastForest: Um rxFastForest objeto com o modelo treinado.

FastForest: Um objeto de especificação do aluno da aula maml para o instrutor do Fast Forest.

Observações

Esse algoritmo é multi-threaded e sempre tentará carregar todo o conjunto de dados na memória.

Autor(es)

Corporação Microsoft Microsoft Technical Support

Referências

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

Ver também

rxFastTrees, rxFastLinear, rxLogisticRegression, rxNeuralNet, rxOneClassSvm, featurizeText, categórico, 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)