es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

R XGBoost detención temprana por

A continuación tengo código, en el que intento entrenar un modelo XGBoost en R que se detenga tempranamente después de un número determinado de rondas early_stopping_rounds sin mejora.

watchlist <- list(train=dtrain, test=dtest)

param <- list(
  objective = "binary:logistic",
  eta = 0.3,
  max_depth = 8,
  eval_metric="logloss"
)

xgb.train(params = param, data = dtrain, nrounds = 1000, watchlist = watchlist, early_stopping_rounds = 3)

Sin embargo, en lugar de fijar el número de rondas, me gustaría pasar un valor de min_delta, para que la detención temprana se active cuando la diferencia entre las rondas sea menor que una tolerancia dada.

Otros (aquí y aquí) han preguntado esto para Python.
Sin embargo, avances realizados no hace mucho tiempo han implementado esta opción para Python.

Pero, ¿cómo puedo hacer esto en R? ¿Hay algo similar?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Lamentablemente, en este momento no parece haber una implementación de detención temprana con un valor min_delta en el paquete R para XGBoost. El parámetro early_stopping_rounds solo acepta un valor entero que especifica la cantidad de rondas sin mejora antes de la detención temprana.

    Sin embargo, existen algunas soluciones alternativas para lograr resultados similares. Una opción es utilizar la validación cruzada con un criterio de detención basado en la diferencia en las métricas de rendimiento entre los pliegues. Otra opción es monitorear el progreso del entrenamiento y detenerlo manualmente según la tolerancia deseada.

    En general, esta característica no está disponible en R aún, pero podría ser agregada en futuras actualizaciones.

Comments are closed.