La implementación randomForest no permite el muestreo más allá del número de observaciones, incluso cuando se realiza un muestreo con reemplazo. ¿Por qué es esto?
Funciona bien:
rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE)
rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE)
Lo que quiero hacer:
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
Error similar sin muestra estratificada:
rf <- randomForest(Species ~ ., iris, sampsize=151, replace=TRUE)
Error in randomForest.default(m, y, ...) : sampsize too large
Como esperaba que el método tomara muestras de bootstrap cuando se reemplaza = VERDADERO en ambos casos, no esperaba este límite.
Mi objetivo es usar esto con la opción de muestreo estratificado, con el fin de obtener una muestra suficientemente grande de una clase relativamente rara.
Respuestas:
Esto no responde por qué , pero para evitar esto, uno puede duplicar los datos para la clase rara en los datos de entrenamiento y tomar una muestra estratificada del resultado.
Dos inconvenientes de este enfoque, en comparación con un sobremuestreo "natural":
pero le permitirá a uno construir el bosque con las proporciones de clase deseadas.
fuente
Tengo exactamente la misma pregunta y encontré esto en el registro de cambios para randomForest :
Cambios en 4.1-0:
Establecer reemplazar = VERDADERO manualmente tampoco parece anular esto.
fuente
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), strata=iris$Species, replace=TRUE)