A implementação randomForest não permite amostragem além do número de observações, mesmo quando amostragem com substituição. Por que é isso?
Funciona bem:
rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE)
rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE)
O que eu quero fazer:
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), replace=TRUE)
Error in randomForest.default(m, y, ...) :
sampsize can not be larger than class frequency
Erro semelhante sem amostra estratificada:
rf <- randomForest(Species ~ ., iris, sampsize=151, replace=TRUE)
Error in randomForest.default(m, y, ...) : sampsize too large
Como eu esperava que o método coletasse amostras de autoinicialização quando substituir = TRUE nos dois casos, eu não esperava esse limite.
Meu objetivo é usar isso com a opção de amostragem estratificada, a fim de extrair uma amostra suficientemente grande de uma classe relativamente rara.
Respostas:
Isso não responde ao motivo , mas, para contornar isso, pode-se duplicar os dados da classe rara nos dados de treinamento e coletar uma amostra estratificada do resultado.
Duas desvantagens dessa abordagem, em comparação com uma superamostra "natural":
mas permitirá construir a floresta com as proporções de classe desejadas.
fonte
Eu tenho exatamente a mesma pergunta e encontrei isso no changelog for randomForest :
Alterações no 4.1-0:
A configuração de substituir = TRUE manualmente também não parece substituir isso.
fonte
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), strata=iris$Species, replace=TRUE)