¿Cómo evitar el sobreajuste en un bosque aleatorio?


11
  1. Quiero evitar el sobreajuste en un bosque aleatorio. En este sentido, tengo la intención de utilizar mtry, nodosize, maxnodes, etc. ¿Podría ayudarme a elegir valores para estos parámetros? Estoy usando R.

  2. Además, si es posible, dígame cómo puedo usar la validación cruzada k-fold para bosque aleatorio (en R).

Respuestas:


7

En relación con otros modelos, los bosques aleatorios tienen menos probabilidades de sobreajustarse, pero aún es algo que desea hacer un esfuerzo explícito para evitar. Ajustar los parámetros del modelo es definitivamente un elemento para evitar el sobreajuste, pero no es el único. De hecho, diría que es más probable que sus características de entrenamiento conduzcan a un sobreajuste que los parámetros del modelo, especialmente con un bosque aleatorio. Entonces, creo que la clave es realmente tener un método confiable para evaluar su modelo para verificar el sobreajuste más que cualquier otra cosa, lo que nos lleva a su segunda pregunta.

Como se mencionó anteriormente, ejecutar la validación cruzada le permitirá evitar el sobreajuste. La elección de su mejor modelo en función de los resultados del CV conducirá a un modelo que no se ha sobreajustado, lo que no es necesariamente el caso de un error fuera de la bolsa. La forma más fácil de ejecutar CV en R es con el caretpaquete. Un ejemplo simple está abajo:

> library(caret)
> 
> data(iris)
> 
> tr <- trainControl(method = "cv", number = 5)
> 
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Cross-Validated (5 fold) 

Summary of sample sizes: 120, 120, 120, 120, 120 

Resampling results across tuning parameters:

  mtry  Accuracy  Kappa  Accuracy SD  Kappa SD  
  2     0.96      0.94   0.04346135   0.06519202
  3     0.96      0.94   0.04346135   0.06519202
  4     0.96      0.94   0.04346135   0.06519202

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2. 

Muchas gracias por la respuesta y consejos. ¿Solo quiere saber qué tan diferente es el uso de un paquete caret para la selección de características en comparación con la selección de variables importantes usando el algoritmo randomForest?
Arun

Suena como una pregunta diferente para publicar: las diferencias son enormes dado que ejecuta cosas como la selección de funciones recursivas utilizando cualquier algoritmo de su elección en caret.
David

@David ¿Qué quiere decir con "que no es necesariamente el caso de algo como error de la bolsa"? ¿Quiere decir que la estimación fuera de la bolsa no es una buena manera de evitar el sobreajuste?
Pierre

5

@ xof6 es correcto en el sentido de que cuanto más profundidad tiene el modelo, más tiende a sobreajustar, pero quería agregar algunos parámetros más que podrían serle útiles. No sé qué paquete está utilizando con R y no estoy familiarizado con R en absoluto, pero creo que debe haber contrapartes de estos parámetros implementados allí.

Número de árboles: cuanto mayor es este número, menos probabilidades hay de que el bosque se sobreajuste. Esto significa que a medida que cada árbol de decisión aprende algún aspecto de los datos de capacitación, obtiene más opciones para elegir, por así decirlo. Número de características: este número constituye cuántas características aprende cada árbol individual. A medida que este número aumenta, los árboles se vuelven cada vez más complicados, por lo tanto, están aprendiendo patrones que podrían no estar allí en los datos de la prueba. Tomará un poco de experimentación encontrar el valor correcto, pero tal es el aprendizaje automático. ¡Experimente con la profundidad general también, como mencionamos!


4

Aquí hay un buen enlace sobre eso en stackexchange /stats/111968/random-forest-how-to-handle-overfitting , sin embargo, mi experiencia general es que cuanto más profundo es el modelo, más tiende para sobreajustar.


Esto tiene sentido con un solo clasificador de árbol. Sin embargo, he leído en estos foros que los bosques aleatorios están protegidos contra el sobreajuste y que los árboles deben crecer completamente (es decir, nodosize = 1 para la clasificación).
Seanosapien

0

Siempre disminuyo mtryhasta que aumenta el error en el conjunto de datos del tren, luego disminuyo el tamaño del nodo y la profundidad hasta que la diferencia entre el error en el tren y el conjunto de datos se detiene para disminuir

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.