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?