Haría una pregunta relacionada con este .
Encontré un ejemplo de escritura de la función de pérdida personalizada para xgboost aquí :
loglossobj <- function(preds, dtrain) {
# dtrain is the internal format of the training data
# We extract the labels from the training data
labels <- getinfo(dtrain, "label")
# We compute the 1st and 2nd gradient, as grad and hess
preds <- 1/(1 + exp(-preds))
grad <- preds - labels
hess <- preds * (1 - preds)
# Return the result as a list
return(list(grad = grad, hess = hess))
}
La función de pérdida logística es
donde es log-odds e es etiquetas (0 o 1).
Mi pregunta es: ¿cómo podemos obtener un gradiente (primera derivada) simplemente igual a la diferencia entre los valores verdaderos y las probabilidades pronosticadas (calculadas a partir de las probabilidades de registro como preds <- 1/(1 + exp(-preds))
)?
Respuestas:
Mi respuesta a mi pregunta: sí, se puede demostrar que el gradiente de pérdida logística es igual a la diferencia entre los valores verdaderos y las probabilidades pronosticadas. Breve explicación fue encontrada aquí .
Primero, la pérdida logística es solo una probabilidad logarítmica negativa, por lo que podemos comenzar con la expresión de probabilidad logarítmica ( p. 74 ; esta expresión es la probabilidad logarítmica misma, no la probabilidad logarítmica negativa)
Primera derivada obtenida usando Wolfram Alpha:
Después de multiplicar por :e−y^ie−y^i
Después de cambiar el signo, tenemos expresión para el gradiente de la función de pérdida logística:
fuente