3 votos

¿Tengo una situación de sobreajuste en xgboost en estos datos? ¿Cómo puedo reducirlo?

Aplico el algoritmo xgboost para la clasificación. Realizo una validación cruzada en el conjunto de datos de entrenamiento para encontrar los parámetros (eta, reducción del tamaño del paso, = 0,01, profundidad máxima de un árbol: 14, 1400 rondas) para obtener la mejor precisión y obtengo algo así como 0,9. Sin embargo, en el conjunto de datos de prueba obtengo 0,5. Sin embargo, en el conjunto de datos de prueba obtengo 0,5.

Además, mi predicción en la muestra se parece a esto:

enter image description here

Con los métodos clásicos (glm, por ejemplo) las probabilidades son mucho más "confusas", es decir, se agrupan en torno a 0,5. En el caso de xgboost obtengo una imagen mucho más dispersa. ¿Es esto un signo de sobreajuste? ¿Qué parámetros puedo calibrar para evitarlo? Supongo que es gamma, yo uso el 0 por defecto. ¿Cuáles son los valores típicos de gamma?

2voto

KhaaL Puntos 66

Los GBT y los RF no suelen necesitar tanto ajuste de parámetros. Para ver tanta diferencia de rendimiento sospecharía algo más.

Yo preguntaría:

  1. ¿Ha realizado alguna selección de características o ingeniería en los datos de entrenamiento pero fuera del bucle CV? ¿Ese es el mayor culpable de que los modelos no generalicen?
  2. ¿Son los datos lo suficientemente dimensionales y ruidosos como para que haya características que legítimamente puedan funcionar bien en los datos de entrenamiento pero no en los de prueba? Esto es muy común en datos genéticos con decenas de miles de características y sólo cientos de casos.
  3. ¿Existe algún tipo de identificador único o dato filtrado en el conjunto de entrenamiento que permita un buen ajuste?
  4. ¿Hay algún tipo de efecto de lote o covariables cambiantes? Es decir, esto es muy común si el conjunto de datos retenidos es más reciente que el de entrenamiento, como suele ocurrir en los estudios en curso.

1voto

Zoran Simic Puntos 5694

En efecto, puede tratarse de una situación de sobreajuste, lo que significa que el rendimiento en el conjunto de entrenamiento es superior al del conjunto de pruebas; el modelo no se generaliza a nuevas situaciones. Mi primera suposición es que el parámetro max.depth es demasiado alto (su valor por defecto es 6) y puede intentar reducirlo. Hay algunos otros parámetros que puede cambiar, como min.child.weight, gamma, para evitar el sobreajuste. Ver una presentación de diapositivas perspicaz aquí: http://www.slideshare.net/ShangxuanZhang/kaggle-winning-solution-xgboost-algorithm-let-us-learn-from-its-author

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