Existe uma fórmula ou regra para determinar o sampSize correto para uma randomForest?

13

Estou jogando com um randomForest e descobri que geralmente aumentar o sampSize leva a um melhor desempenho. Existe uma regra / fórmula / etc que sugere qual deve ser o sampSize ideal ou é uma tentativa e erro? Eu acho que outra maneira de expressar isso; Quais são os meus riscos de um tamanho menor ou muito grande (ajuste excessivo?)?


Esta pergunta está se referindo à implementação R da floresta aleatória no randomForestpacote. A função randomForestpossui um parâmetro sampSizedescrito na documentação como

Tamanho (s) da amostra a desenhar. Para classificação, se o tamanho da amostra for um vetor do comprimento do número de estratos, a amostragem será estratificada por estratos, e os elementos do tamanho da amostra indicarão os números a serem extraídos dos estratos.

Coruja
fonte

Respostas:

21

Em geral, o tamanho da amostra para uma floresta aleatória atua como um controle do "grau de aleatoriedade" envolvido e, assim, como uma maneira de ajustar a troca de polarização e variância. Aumentar o tamanho da amostra resulta em uma floresta "menos aleatória" e, portanto, tem uma tendência a super ajuste. Diminuir o tamanho da amostra aumenta a variação nas árvores individuais dentro da floresta, impedindo o ajuste excessivo, mas geralmente à custa do desempenho do modelo. Um efeito colateral útil é que tamanhos de amostra mais baixos reduzem o tempo necessário para treinar o modelo.

A regra prática usual para o melhor tamanho de amostra é uma "amostra de autoinicialização", uma amostra de tamanho igual ao conjunto de dados original, mas selecionada com substituição, para que algumas linhas não sejam selecionadas e outras sejam selecionadas mais de uma vez. Isso normalmente fornece desempenho quase ideal e é o padrão na implementação padrão do R. No entanto, você pode encontrar em aplicativos do mundo real que o ajuste do tamanho da amostra pode levar a um desempenho aprimorado. Em caso de dúvida, selecione o tamanho da amostra apropriado (e outros parâmetros do modelo) usando a validação cruzada.

Martin O'Leary
fonte
2

Corri 4500 florestas aleatórias durante a noite com algumas configurações aleatórias de parâmetros:

Problema de regressão em Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5 que qualquer xamostra é independente de uma distribuição normal, sd = 1, média = 1

Ytotal = Ysignal + Yerror

Onde Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor

theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)

randomForest.performance = explained.variance(OOB cross-validation) / TEV

conjuntos de dados foram amostrados a partir do problema de regressão e o ruído adicionado n.obsfoi um número aleatório entre 1000 e 5000 n.extra.dummy.variablesentre 1 e 20

ntree sempre 1000

sample_replacement sempre true

mtryé de 5 a 25, limitado n.obs noise.factorentre 0 e 9

samplesize.ratio um número aleatório entre 10% e 100%, o tamanho da proporção de cada autoinicialização

todos os modelos foram treinados como rfo = randomForest(x=X, y=Ytotal, <more args>)

o randomForest.performance, sua capacidade de explicar a fração mais alta dos TEVaumentos em geral quando samplesizediminui quando TEVé inferior a 50% e diminui quandoTEV é superior a 50%.

Portanto, se seus randomForest-modelfitrelatórios, por exemplo, 15% explicaram a variação do OOB-CV, e essa é uma precisão aceitável do modelo para você, provavelmente você pode ajustar o desempenho um pouco mais alto, diminuindo sampsizepara um terço do número de observações fornecidas ntree > 1000.

Moral : Para dados muito barulhentos, é melhor correlacionar árvores do que diminuir o viés cultivando árvores de tamanho máximo.

Soren Havelund Welling
fonte
1

Para que florestas aleatórias funcionem tão bem em novos dados quanto em dados de treinamento, o tamanho da amostra necessário é enorme, geralmente 200 vezes o número de recursos candidatos . Veja aqui .

Frank Harrell
fonte
2
Dr. Harrell, acho que o OP está perguntando sobre o tamanho da nova amostragem usada para construir cada árvore individual, em vez do tamanho total do conjunto de dados.
Sycorax diz Reinstate Monica