updater tuning modelos ejemplos r classification xgboost

tuning - Diferencia entre objetivo y feval en xgboost



xgboost tuning parameters in r (1)

Objetivo

Objective en xgboost es la function que el algoritmo de aprendizaje intentará optimizar. Por definición, debe ser capaz de crear los derivados 1º (gradiente) y 2º (hessiano) de las predicciones en una ronda de entrenamiento determinada.

Un ejemplo de función Objective personalizado: link

# user define objective function, given prediction, return gradient and second order gradient # this is loglikelihood loss logregobj <- function(preds, dtrain) { labels <- getinfo(dtrain, "label") preds <- 1/(1 + exp(-preds)) grad <- preds - labels hess <- preds * (1 - preds) return(list(grad = grad, hess = hess)) }

Esta es la función crítica para el entrenamiento y ningún modelo xgboost puede entrenarse sin definir uno. Objective funciones Objective se usan directamente para dividir en cada nodo en cada árbol.

feval

feval en xgboost no desempeña ningún papel en la optimización o capacitación directa de su modelo. Ni siquiera necesitas uno para entrenar. No impacta la división. Todo lo que hace es marcar tu modelo DESPUÉS de que haya entrenado. Un vistazo a un ejemplo de un feval personalizado feval

evalerror <- function(preds, dtrain) { labels <- getinfo(dtrain, "label") err <- as.numeric(sum(labels != (preds > 0)))/length(labels) return(list(metric = "error", value = err)) }

Observe que solo devuelve un nombre (métrica) y una puntuación (valor). Típicamente, el feval y el objective podrían ser los mismos, pero tal vez el mecanismo de puntuación que desea es un poco diferente o no tiene derivados. Por ejemplo, las personas usan el objective logloss para entrenar, pero crean un fondo AUC para evaluar el modelo.

Además, puedes usar el feval para detener el entrenamiento de tu modelo una vez que deja de mejorar. Y puede utilizar múltiples funciones de feval para puntuar su modelo de diferentes maneras y observarlas todas.

No necesitas una función feval para entrenar un modelo. Solo para evaluarlo, y ayudarlo a detener el entrenamiento temprano.

Resumen:

Objective es el principal caballo de batalla.

feval es un ayudante para permitir que xgboost haga algunas cosas geniales.

softmax es una función objective que se usa comúnmente en la clasificación de varias clases. Asegura que todas sus predicciones se suman a una, y se escalan utilizando la función exponencial. softmax

¿Cuál es la diferencia entre Objective y feval en xgboost en R? Sé que esto es algo muy fundamental, pero no puedo definirlos exactamente / su propósito. Además, ¿qué es un objetivo de softmax mientras se realiza una clasificación de clases múltiples?