Processing math: 100%

5 votos

¿No es el apilamiento de modelos una forma directa de sobreajuste?

Con la ayuda de las discusiones aquí, entrené con éxito varios modelos para la clasificación.

Como ejemplo, digamos que he entrenado un modelo reforzado por gradiente estocástico (gbm) y un árbol reforzado por gradiente extremo (xgboost). Se entrenan utilizando la validación cruzada en un conjunto de entrenamiento y luego se prueban en un conjunto de prueba midiendo el AUC (obtengo valores de alrededor de 0,87

Ahora me gustaría combinar esos modelos para conseguir uno aún mejor.

Intenté promediar las probabilidades predichas y sí, el AUC mejoró ligeramente en el conjunto de pruebas.

Pero si apilo los modelos en el siguiente sentido:

  1. calcular las probabilidades previstas pgbm y pxgb en el conjunto de entrenamiento y utilizarlos como predictores.
  2. entrenar algún modelo (lineal, de árbol) en el sentido classpgbm+pxgb

Los modelos de este tipo tienen un AUC de 0,9 en el conjunto de entrenamiento y de 0,8 en el conjunto de prueba (menos que los modelos individuales).

¿Utilizar algo más sofisticado que una ponderación media o lineal no es simplemente sobreajustar el conjunto de entrenamiento? La información sobre los datos no aumenta. Simplemente se oculta en las predicciones de la primera etapa.

Agradecería cualquier comentario.

3voto

Andrew Bestic Puntos 121

El problema es simple: sus clasificadores base (gbm y xgb) están sesgados con las predicciones. Si se entrenan y se prueban con los mismos datos, suelen tener un mejor rendimiento que con los datos de prueba (aunque depende del tamaño de la muestra y más...). ¿Qué le queda por aprender al apilador? Predicciones sesgadas.

Así que puede utilizar la validación cruzada para los clasificadores de base, entrenarlos y probarlos en datos no vistos (del conjunto de entrenamiento) y utilizar esas predicciones insesgadas para entrenar al apilador. De esta forma no se sobreajusta.

Dos detalles: Si quieres tener una implementación genial de k-folding, puedes considerar usar el REP (si utiliza python).

Apilar dos árboles de decisión potenciados no te dará una mejora real. Es mejor usar XGBoost solo, es un clasificador muy superior. O apilarlo con SVM, NN o similares.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X