Estoy jugando con un randomForest y han encontrado que en general el aumento de la sampSize conduce a un mejor desempeño. Existe una regla / fórmula / etc que sugiere lo que el óptimo sampSize debe ser o es un ensayo y error? Supongo que otra manera de expresar; ¿cuáles son mis riesgos de muy pequeño sampSize o demasiado grandes (sobreajuste?)?
Respuestas
¿Demasiados anuncios?En general, el tamaño de la muestra para un bosque al azar actúa como un control sobre el "grado de aleatoriedad" involucrados, y por lo tanto como una forma de ajustar el sesgo y la varianza de equilibrio. Aumentar el tamaño de la muestra los resultados en un "menos al azar" del bosque, por lo que tiene una tendencia a overfit. Disminuyendo el tamaño de la muestra aumenta, la variación en los árboles individuales en el bosque, la prevención de sobreajuste, pero por lo general a expensas del funcionamiento del modelo. Un efecto útil es menor que el tamaño de las muestras a reducir el tiempo necesario para entrenar el modelo.
La costumbre de la regla de oro para el mejor tamaño de la muestra es un "bootstrap" de muestra", una muestra de igual tamaño que el conjunto de datos original, pero seleccionados con reemplazo, de modo que algunas filas no están seleccionados, y otros son seleccionados más de una vez. Normalmente, esto proporciona cerca de rendimiento óptimo, y es el valor predeterminado en el estándar R aplicación. Sin embargo, usted puede encontrar en aplicaciones del mundo real que ajustar el tamaño de la muestra puede conducir a un mejor desempeño. En caso de duda, seleccione el tamaño apropiado de la muestra (y otros parámetros del modelo) mediante la validación cruzada.
Corrí 4500 bosques aleatorios durante la noche con algún azar paremeter-configuración:
regresión problema Ysignal = x1^2+sin(x2)*pi) + x3 * x4 + x5 donde x se toman muestras independientes de una distribución normal, sd=1, media=1
Ytotal = Ysignal + Yerror
donde Yerror = rnorm(n.observaciones,sd=sd(Ysignal))*ruido.factor de
teórico.explicable.varianza"TEV" = var(Ysignal= / var(Ytotal)
randomForest.rendimiento = explicó.la varianza(OOB de validación cruzada) / TEV
los conjuntos de datos fueron muestreados de la regresión problema y ruido añadido n.obs era un número aleatorio entre 1000 y 5000 n.extra.ficticio.las variables entre 1 y 20
ntree siempre 1000
sample_replacement siempre verdadero
mtry es de 5 a 25, limitado por n.obs de ruido.factor entre 0 y 9
samplesize.la relación de un número aleatorio entre 10% y 100%, la proporción de tamaño de cada bootstrap
todos los modelos fueron entrenados como orp = randomForest(x=X,y=Ytotal,más args)
el randomForest.rendimiento, su capacidad para explicar la mayor fracción de la TEV aumenta, en general, cuando samplesize disminuye cuando el TEV es menor de 50% y disminuyen cuando TEV es mayor del 50%.
Por lo tanto, si su randomForest-modelfit informes por ejemplo, el 15% de la variación explicada por OOB-CV, y este es un modelo aceptable de precisión para usted, entonces usted probablemente puede ajustar el rendimiento un poco mayor por la reducción de sampsize a un tercio del número de observaciones, dado ntree>1000.
Estado de ánimo: muy ruidoso datos es mejor de-correlacionar los árboles de menor sesgo por la creciente máxima tamaño de los árboles.