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.

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.


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.


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 .


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.