Hasta donde he visto, las opiniones tienden a diferir sobre esto. Las mejores prácticas ciertamente dictarían el uso de validación cruzada (especialmente si se comparan RF con otros algoritmos en el mismo conjunto de datos). Por otro lado, la fuente original afirma que el hecho de que el error OOB se calcule durante el entrenamiento del modelo es suficiente como un indicador del rendimiento del conjunto de pruebas. Incluso Trevor Hastie, en unas conversaciones relativamente recientes, dice que "Los bosques aleatorios proporcionan validación cruzada gratuita". Intuitivamente, esto tiene sentido para mí, si estoy entrenando y tratando de mejorar un modelo basado en RF en un conjunto de datos.
¿Puede alguien presentar los argumentos a favor y en contra de la necesidad de validación cruzada con bosques aleatorios?
fuente
Respuestas:
Por defecto, el bosque aleatorio recoge 2/3 de los datos para el entrenamiento y el descanso para las pruebas de regresión y casi el 70% de los datos para el entrenamiento y el descanso para las pruebas durante la clasificación. Por principio, ya que aleatoriza la selección de variables durante cada división de árbol, no es propenso a sobreajustar a diferencia de otros modelos. Sin embargo, si desea usar CV usando nfolds en sklearn, aún puede usar el concepto de conjunto de espera como oob_score (out of bag) = True que muestra el rendimiento del modelo con o sin usar CV. Entonces, en pocas palabras, usar oob_score = True con o sin nfolds puede decir por sí mismo si usar CV es bueno para sus datos. En general, si su objetivo sigue una determinada distribución y no tiene muchos datos de observación, entonces usar CV no dará Mucha mejora.
fuente
Una diferencia clave es que la validación cruzada garantiza que todas las muestras aparecerán en los conjuntos de entrenamiento y prueba, por lo que el 100% de sus datos se utilizarán en algún momento para el entrenamiento y las pruebas.
Dependiendo del tamaño de su conjunto de datos, el arranque, el muestreo con reemplazo, que ocurre en el bosque aleatorio no garantizará que las divisiones que vean los árboles contengan todas las instancias. Si tiene suficientes árboles en su bosque, la estimación OOB debería converger asintóticamente hacia el mejor valor estimado de OOB.
La precisión de ambos métodos dependerá en cierta medida de los datos, por lo que puede ser prudente comparar ambos métodos con los datos particulares que tiene frente a usted y ver si las estimaciones de CV y RF OOB dan valores similares.
Si no lo hacen, entonces valdría la pena explorar más estimaciones de la verdadera tasa de error, tal vez por valores mucho más altos de K en CV.
fuente
Hice algunas pruebas en un conjunto de datos de 50k filas, usando
sklearn.RandomForestRegressor
.Obtengo puntajes significativamente diferentes: estoy usando un gini normalizado para la métrica, dependiendo de si uso
rf.oob_prediction_
(0.2927) o un CV KFold (0.3258 para 7 pliegues y 0.3236 para 3 pliegues).Con eso, parece que su punto sobre "especialmente si comparar RFs con otros algoritmos en el mismo conjunto de datos" es una consideración importante para usar el CV manual en lugar de confiar en la predicción OOB.
fuente