Validación cruzada en StackingClassifier Scikit-Learn
StackingClassifier
En la documentación de Scikit-Learn está escrito:
Tenga en cuenta que
estimators_
se ajustan en elX
tiempo completo quefinal_estimator_
se entrena usando predicciones validadas cruzadas de los estimadores base usandocross_val_predict
.
... la validación cruzada de 5 veces por defecto
Mi pregunta, ¿por qué usar la validación cruzada de 5 veces solo en el estimador final? ¿Por qué el estimador final no está ajustado en el X completo (salida de los estimadores base)?
Respuestas
Esto incluye 2 preguntas, abordaré cada una de ellas.
- Podríamos usar la validación cruzada en todo el sistema, pero eso nos perjudicaría demasiado.
El propósito de la validación cruzada es encontrar los parámetros óptimos, aquellos que permiten que el modelo se ajuste bien a los datos sin sobreajustarse. Basta con que nuestro estimador final haga esto; no hay necesidad de calcular individualmente la configuración de todos los estimadores base. Los estimadores base pueden incluir un montón de configuraciones de parámetros diferentes, por ejemplo; así como una selección de diferentes tipos de clasificadores. Si alguno de ellos es propenso a sobreajustarse, esto debería compensarse con otros que no tengan ese problema. Mientras el estimador final no ponga todos sus huevos en la canasta equivocada, deberíamos estar bien (y es por eso que necesitamos una validación cruzada aquí, para asegurarnos de que esto no suceda).
- Entrenaremos el estimador final en el conjunto de entrenamiento completo; esto sucede después de encontrar los parámetros óptimos o el conjunto de estimadores base mediante la validación cruzada. Como su nombre lo indica, la validación cruzada está destinada a validar el método. No para crear el modelo final.